Module: Sufia::User
- Extended by:
- ActiveSupport::Concern, Deprecation
- Defined in:
- app/models/concerns/sufia/user.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #ability ⇒ Object
- #all_user_activity(since = DateTime.current.to_i - 1.day) ⇒ Object
-
#as_json(_opts = nil) ⇒ Object
Format the json for select2 which requires just an id and a field called text.
- #log_profile_event(event_id) ⇒ Object
-
#mailboxer_email(_obj = nil) ⇒ Object
method needed for messaging.
- #name ⇒ Object
-
#normalize_orcid ⇒ Object
Coerce the ORCID into URL format.
-
#populate_attributes ⇒ Object
Populate user instance with attributes from remote system (e.g., LDAP) There is no default implementation – override this in your application.
- #profile_events(size = -1)) ⇒ Object
- #set_arkivo_token ⇒ Object
-
#to_param ⇒ Object
Redefine this for more intuitive keys in Redis.
- #token_algorithm ⇒ Object
- #zotero_token ⇒ Object
- #zotero_token=(value) ⇒ Object
Instance Method Details
#ability ⇒ Object
113 114 115 |
# File 'app/models/concerns/sufia/user.rb', line 113 def ability @ability ||= ::Ability.new(self) end |
#all_user_activity(since = DateTime.current.to_i - 1.day) ⇒ Object
117 118 119 120 121 |
# File 'app/models/concerns/sufia/user.rb', line 117 def all_user_activity(since = DateTime.current.to_i - 1.day) events = self.events.reverse.collect { |event| event if event[:timestamp].to_i > since }.compact profile_events = self.profile_events.reverse.collect { |event| event if event[:timestamp].to_i > since }.compact events.concat(profile_events).sort { |a, b| b[:timestamp].to_i <=> a[:timestamp].to_i } end |
#as_json(_opts = nil) ⇒ Object
Format the json for select2 which requires just an id and a field called text. If we need an alternate format we should probably look at a json template gem
87 88 89 |
# File 'app/models/concerns/sufia/user.rb', line 87 def as_json(_opts = nil) { id: user_key, text: display_name ? "#{display_name} (#{user_key})" : user_key } end |
#log_profile_event(event_id) ⇒ Object
46 47 48 |
# File 'app/models/concerns/sufia/user.rb', line 46 def log_profile_event(event_id) event_store.for(stream[:event][:profile]).push(event_id) end |
#mailboxer_email(_obj = nil) ⇒ Object
method needed for messaging
109 110 111 |
# File 'app/models/concerns/sufia/user.rb', line 109 def mailboxer_email(_obj = nil) nil end |
#name ⇒ Object
96 97 98 99 100 |
# File 'app/models/concerns/sufia/user.rb', line 96 def name display_name.titleize || raise rescue user_key end |
#normalize_orcid ⇒ Object
Coerce the ORCID into URL format
75 76 77 78 79 80 81 82 83 |
# File 'app/models/concerns/sufia/user.rb', line 75 def normalize_orcid # Skip normalization if: # 1. validation has already flagged the ORCID as invalid # 2. the orcid field is blank # 3. the orcid is already in its normalized form return if errors[:orcid].first.present? || orcid.blank? || orcid.starts_with?('http://orcid.org/') = Sufia::OrcidValidator.match(orcid).string self.orcid = "http://orcid.org/#{bare_orcid}" end |
#populate_attributes ⇒ Object
Populate user instance with attributes from remote system (e.g., LDAP) There is no default implementation – override this in your application
93 94 |
# File 'app/models/concerns/sufia/user.rb', line 93 def populate_attributes end |
#profile_events(size = -1)) ⇒ Object
42 43 44 |
# File 'app/models/concerns/sufia/user.rb', line 42 def profile_events(size = -1) event_store.for(stream[:event][:profile]).fetch(size) end |
#set_arkivo_token ⇒ Object
63 64 65 |
# File 'app/models/concerns/sufia/user.rb', line 63 def set_arkivo_token self.arkivo_token ||= token_algorithm end |
#to_param ⇒ Object
Redefine this for more intuitive keys in Redis
103 104 105 106 |
# File 'app/models/concerns/sufia/user.rb', line 103 def to_param # Rails doesn't like periods in urls user_key.gsub(/\./, '-dot-') end |
#token_algorithm ⇒ Object
67 68 69 70 71 72 |
# File 'app/models/concerns/sufia/user.rb', line 67 def token_algorithm loop do token = SecureRandom.base64(24) return token if User.find_by(arkivo_token: token).nil? end end |
#zotero_token ⇒ Object
50 51 52 |
# File 'app/models/concerns/sufia/user.rb', line 50 def zotero_token self[:zotero_token].blank? ? nil : Marshal.load(self[:zotero_token]) end |
#zotero_token=(value) ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'app/models/concerns/sufia/user.rb', line 54 def zotero_token=(value) self[:zotero_token] = if value.blank? # Resetting the token value else Marshal.dump(value) end end |