Class: AdminConfirmation
- Inherits:
-
Object
- Object
- AdminConfirmation
- Defined in:
- lib/admin_confirmation.rb
Instance Attribute Summary collapse
-
#performed_by ⇒ Object
readonly
Returns the value of attribute performed_by.
-
#target_user ⇒ Object
readonly
Returns the value of attribute target_user.
-
#token ⇒ Object
Returns the value of attribute token.
Class Method Summary collapse
Instance Method Summary collapse
- #create_confirmation ⇒ Object
- #email_confirmed! ⇒ Object
-
#initialize(target_user, performed_by) ⇒ AdminConfirmation
constructor
A new instance of AdminConfirmation.
Constructor Details
#initialize(target_user, performed_by) ⇒ AdminConfirmation
Returns a new instance of AdminConfirmation.
8 9 10 11 |
# File 'lib/admin_confirmation.rb', line 8 def initialize(target_user, performed_by) @target_user = target_user @performed_by = performed_by end |
Instance Attribute Details
#performed_by ⇒ Object (readonly)
Returns the value of attribute performed_by.
5 6 7 |
# File 'lib/admin_confirmation.rb', line 5 def performed_by @performed_by end |
#target_user ⇒ Object (readonly)
Returns the value of attribute target_user.
6 7 8 |
# File 'lib/admin_confirmation.rb', line 6 def target_user @target_user end |
#token ⇒ Object
Returns the value of attribute token.
4 5 6 |
# File 'lib/admin_confirmation.rb', line 4 def token @token end |
Class Method Details
.exists_for?(user_id) ⇒ Boolean
42 43 44 |
# File 'lib/admin_confirmation.rb', line 42 def self.exists_for?(user_id) Discourse.redis.exists? "admin-confirmation:#{user_id}" end |
.find_by_code(token) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/admin_confirmation.rb', line 46 def self.find_by_code(token) json = Discourse.redis.get("admin-confirmation-token:#{token}") return nil unless json parsed = JSON.parse(json) target_user = User.find(parsed["target_user_id"].to_i) performed_by = User.find(parsed["performed_by"].to_i) ac = AdminConfirmation.new(target_user, performed_by) ac.token = token ac end |
Instance Method Details
#create_confirmation ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/admin_confirmation.rb', line 13 def create_confirmation guardian = Guardian.new(@performed_by) guardian.ensure_can_grant_admin!(@target_user) @token = SecureRandom.hex Discourse.redis.setex("admin-confirmation:#{@target_user.id}", 3.hours.to_i, @token) payload = { target_user_id: @target_user.id, performed_by: @performed_by.id } Discourse.redis.setex("admin-confirmation-token:#{@token}", 3.hours.to_i, payload.to_json) Jobs.enqueue( :admin_confirmation_email, to_address: @performed_by.email, target_email: @target_user.email, target_username: @target_user.username, token: @token, ) end |
#email_confirmed! ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'lib/admin_confirmation.rb', line 32 def email_confirmed! guardian = Guardian.new(@performed_by) guardian.ensure_can_grant_admin!(@target_user) @target_user.grant_admin! StaffActionLogger.new(@performed_by).log_grant_admin(@target_user) Discourse.redis.del "admin-confirmation:#{@target_user.id}" Discourse.redis.del "admin-confirmation-token:#{@token}" end |