Class: UserCard
- Inherits:
-
ApplicationRecord
- Object
- ApplicationRecord
- UserCard
- Defined in:
- app/models/user_card.rb
Class Method Summary collapse
Instance Method Summary collapse
- #access_cards ⇒ Object
- #access_cards_count ⇒ Object
- #active? ⇒ Boolean
- #authorize!(access_card) ⇒ Object
-
#ban! ⇒ Object
забанить.
- #banned? ⇒ Boolean
- #check_access_level(_alias) ⇒ Object
- #client? ⇒ Boolean
-
#confirm ⇒ Object
подтвердить.
-
#confirm_access_code ⇒ Object
приготовить код.
- #my_active_card ⇒ Object
- #my_email ⇒ Object
- #my_emails ⇒ Object
- #my_name ⇒ Object
- #my_nickname ⇒ Object
- #my_nicknames ⇒ Object
- #my_phone ⇒ Object
- #my_phones ⇒ Object
- #normalize ⇒ Object
- #online_status_broadcast ⇒ Object
- #passive? ⇒ Boolean
- #set_active_card ⇒ Object
- #whois ⇒ Object
Class Method Details
.access_cards_placeholder ⇒ Object
122 123 124 |
# File 'app/models/user_card.rb', line 122 def self.access_cards_placeholder CONFIG[:access_by].map{|cardname, garbage| (I18n.t cardname, scope: 'access_cards')}.join(',') end |
Instance Method Details
#access_cards ⇒ Object
83 84 85 86 87 88 89 |
# File 'app/models/user_card.rb', line 83 def access_cards [{cards: self.email_access_cards, classname: 'EmailAccessCard'}, {cards: self.nickname_access_cards, classname: 'NicknameAccessCard'}, {cards: self.phone_access_cards, classname: 'PhoneAccessCard'}, {cards: self.oauth_access_cards, classname: 'OAuthAccessCard'}, ] end |
#access_cards_count ⇒ Object
91 92 93 |
# File 'app/models/user_card.rb', line 91 def access_cards_count self.email_access_cards.count + self.phone_access_cards.count + self.nickname_access_cards.count + self.oauth_access_cards.count end |
#active? ⇒ Boolean
27 28 29 |
# File 'app/models/user_card.rb', line 27 def active? self.status == 1 end |
#authorize!(access_card) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/models/user_card.rb', line 58 def access_card # пользователь онлайн access_card.update(active: true) # такое вот решение из-за невозможности актив рекорда за 1 раз поработать с одной моделью дважды CONFIG[:access_cards].each do |type, max| if "#{type}AccessCard".classify != access_card.class.name "#{type}AccessCard".classify.constantize.where(user_card_id: self.id).update(active: false) else "#{type}AccessCard".classify.constantize.where(user_card_id: self.id).where.not(id: access_card.id).update(active: false) end end $session_manager. self.id self.update({online: true}) end |
#ban! ⇒ Object
забанить
54 55 56 |
# File 'app/models/user_card.rb', line 54 def ban! self.update(status: 2) end |
#banned? ⇒ Boolean
35 36 37 |
# File 'app/models/user_card.rb', line 35 def banned? self.status == 2 end |
#check_access_level(_alias) ⇒ Object
154 155 156 |
# File 'app/models/user_card.rb', line 154 def check_access_level _alias CONFIG[:access_aliases][self.access_level.to_sym] >= CONFIG[:access_aliases][_alias] end |
#client? ⇒ Boolean
39 40 41 |
# File 'app/models/user_card.rb', line 39 def client? self.access_level == 'client' end |
#confirm ⇒ Object
подтвердить
43 44 45 |
# File 'app/models/user_card.rb', line 43 def confirm self.update(status: 1) end |
#confirm_access_code ⇒ Object
приготовить код
47 48 49 50 51 52 |
# File 'app/models/user_card.rb', line 47 def confirm_access_code require 'link' l = Link.new self.id pepper_email = Digest::MD5.new.update("#{CONFIG[:salt]} #{l.get} и #{self.my_email} добавим #{CONFIG[:pepper]}!").to_s "DIGITAL(.)(.)HEROES#{pepper_email}" #nice one рецепт от Николая Мартынова .) end |
#my_active_card ⇒ Object
79 80 81 |
# File 'app/models/user_card.rb', line 79 def my_active_card self.email_access_cards.find_by(active: true) || self.phone_access_cards.find_by(active: true) || self.nickname_access_cards.find_by(active: true) || self.oauth_access_cards.find_by(active: true) || false end |
#my_email ⇒ Object
138 139 140 |
# File 'app/models/user_card.rb', line 138 def my_email my_emails.first end |
#my_emails ⇒ Object
134 135 136 |
# File 'app/models/user_card.rb', line 134 def my_emails self.email_access_cards.pluck(:value) end |
#my_name ⇒ Object
113 114 115 116 117 118 119 120 |
# File 'app/models/user_card.rb', line 113 def my_name active_card = self.my_active_card if (/Oauth/ =~ active_card.class.name).present? "#{active_card.firstname} #{active_card.lastname}" else active_card.value end end |
#my_nickname ⇒ Object
130 131 132 |
# File 'app/models/user_card.rb', line 130 def my_nickname my_nicknames.first end |
#my_nicknames ⇒ Object
126 127 128 |
# File 'app/models/user_card.rb', line 126 def my_nicknames self.nickname_access_cards.pluck(:value) end |
#my_phone ⇒ Object
146 147 148 |
# File 'app/models/user_card.rb', line 146 def my_phone my_phones.first end |
#my_phones ⇒ Object
142 143 144 |
# File 'app/models/user_card.rb', line 142 def my_phones self.phone_access_cards.pluck(:value) end |
#normalize ⇒ Object
75 76 77 |
# File 'app/models/user_card.rb', line 75 def normalize self.password.strip! unless self.password.nil? end |
#online_status_broadcast ⇒ Object
109 110 111 |
# File 'app/models/user_card.rb', line 109 def online_status_broadcast # ActionCable.server.broadcast "radioJXL", {event: 'online_status', uid: self.userable.id, online: self.online, name: self.my_name} if saved_change_to_attribute?(:online) end |
#passive? ⇒ Boolean
31 32 33 |
# File 'app/models/user_card.rb', line 31 def passive? self.status == 0 end |
#set_active_card ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'app/models/user_card.rb', line 95 def set_active_card unless my_active_card if self.nickname_access_cards.any? self.nickname_access_cards.first.update(active: true) elsif self.email_access_cards.any? self.email_access_cards.first.update(active: true) elsif self.phone_access_cards.any? self.phone_access_cards.first.update(active: true) elsif self.oauth_access_cards.any? self.oauth_access_cards.first.update(active: true) end end end |
#whois ⇒ Object
150 151 152 |
# File 'app/models/user_card.rb', line 150 def whois self.userable.whoami end |