Class: Anoubis::Sso::Client::User
- Inherits:
-
ApplicationRecord
- Object
- ApplicationRecord
- Anoubis::Sso::Client::User
- Defined in:
- app/models/anoubis/sso/client/user.rb
Instance Attribute Summary collapse
-
#locale ⇒ Object
Returns the value of attribute locale.
-
#menus ⇒ Object
Returns the value of attribute menus.
-
#name ⇒ Object
Returns the value of attribute name.
-
#surname ⇒ Object
Returns the value of attribute surname.
-
#timeout ⇒ Object
Returns the value of attribute timeout.
-
#timezone ⇒ Object
Returns the value of attribute timezone.
Class Method Summary collapse
Instance Method Summary collapse
- #after_destroy_anubis_sso_client_user ⇒ Object
- #after_save_anubis_sso_client_user ⇒ Object
- #attributes ⇒ Object
- #clear_cache ⇒ Object
- #get_menus ⇒ Object
- #save_cache(sso_data) ⇒ Object
Instance Attribute Details
#locale ⇒ Object
Returns the value of attribute locale.
9 10 11 |
# File 'app/models/anoubis/sso/client/user.rb', line 9 def locale @locale end |
#menus ⇒ Object
Returns the value of attribute menus.
12 13 14 |
# File 'app/models/anoubis/sso/client/user.rb', line 12 def @menus end |
#name ⇒ Object
Returns the value of attribute name.
7 8 9 |
# File 'app/models/anoubis/sso/client/user.rb', line 7 def name @name end |
#surname ⇒ Object
Returns the value of attribute surname.
8 9 10 |
# File 'app/models/anoubis/sso/client/user.rb', line 8 def surname @surname end |
#timeout ⇒ Object
Returns the value of attribute timeout.
10 11 12 |
# File 'app/models/anoubis/sso/client/user.rb', line 10 def timeout @timeout end |
#timezone ⇒ Object
Returns the value of attribute timezone.
11 12 13 |
# File 'app/models/anoubis/sso/client/user.rb', line 11 def timezone @timezone end |
Class Method Details
.load_cache(redis, uuid) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'app/models/anoubis/sso/client/user.rb', line 29 def self.load_cache(redis, uuid) begin data = JSON.parse redis.get(User.redis_prefix + 'user:' + uuid), { symbolize_names: true } rescue data = nil end unless data user = self.where(uuid: uuid).first if user return JSON.parse(user.to_json(except: [:password_digest]), { symbolize_names: true }) end end data end |
Instance Method Details
#after_destroy_anubis_sso_client_user ⇒ Object
61 62 63 |
# File 'app/models/anoubis/sso/client/user.rb', line 61 def after_destroy_anubis_sso_client_user self.clear_cache end |
#after_save_anubis_sso_client_user ⇒ Object
57 58 59 |
# File 'app/models/anoubis/sso/client/user.rb', line 57 def after_save_anubis_sso_client_user self.clear_cache end |
#attributes ⇒ Object
46 47 48 49 50 51 52 53 54 55 |
# File 'app/models/anoubis/sso/client/user.rb', line 46 def attributes super.merge({ name: self.name, surname: self.surname, locale: self.locale, timeout: self.timeout, timezone: self.timezone, menus: self. }) end |
#clear_cache ⇒ Object
25 26 27 |
# File 'app/models/anoubis/sso/client/user.rb', line 25 def clear_cache self.redis.del(self.redis_prefix + 'user:' + self.uuid) if self.redis end |
#get_menus ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'app/models/anoubis/sso/client/user.rb', line 65 def self. = {} access = Anoubis::Sso::Client::GroupMenu.accesses[:read].to_s+','+Anoubis::Sso::Client::GroupMenu.accesses[:write].to_s query = <<-SQL SELECT `menus`.`id`, `menus`.`mode`, MAX(`group_menus`.`access`) AS `access` FROM (`menus`, `group_menus`, `groups`, `user_groups`) WHERE `menus`.`status` = 0 AND `menus`.`id` = `group_menus`.`menu_id` AND `group_menus`.`access` IN (#{access}) AND `group_menus`.`group_id` = `groups`.`id` AND `groups`.`id` = `user_groups`.`group_id` AND `user_groups`.`user_id` = #{self.id} GROUP BY `menus`.`id`, `menus`.`mode` SQL Anoubis::Sso::Client::GroupMenu.find_by_sql(query).each do |data| self.[data[:mode]] = data.access end self. end |
#save_cache(sso_data) ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'app/models/anoubis/sso/client/user.rb', line 14 def save_cache(sso_data) if sso_data self.name = sso_data[:name] if sso_data.key? :name self.surname = sso_data[:surname] if sso_data.key? :surname self.locale = sso_data[:locale] if sso_data.key? :locale self.timeout = sso_data[:timeout] if sso_data.key? :timeout self.timezone = sso_data[:timezone] if sso_data.key? :timezone end self.redis.set(self.redis_prefix + 'user:' + self.uuid, self.to_json) if self.redis end |