Class: Obscured::Doorman::User
- Inherits:
-
Object
- Object
- Obscured::Doorman::User
- Includes:
- Mongoid::Document, Mongoid::Timeline::Tracker, Mongoid::Timestamps
- Defined in:
- lib/obscured-doorman/models/user.rb
Instance Attribute Summary collapse
-
#confirmed ⇒ Object
Returns the value of attribute confirmed.
Class Method Summary collapse
- .authenticate(username, password) ⇒ Object
- .make(opts) ⇒ Object
- .make!(opts) ⇒ Object
- .registered?(username) ⇒ Boolean
Instance Method Summary collapse
- #authenticated?(password) ⇒ Boolean (also: #password?)
- #confirm ⇒ Object
- #confirm! ⇒ Object
- #forget_me! ⇒ Object
- #forgot_password! ⇒ Object
- #name ⇒ Object
- #name=(arguments) ⇒ Object
- #remember_me! ⇒ Object
- #remembered_password! ⇒ Object
- #reset_password!(password, token) ⇒ Object
- #set_password(password) ⇒ Object
Instance Attribute Details
#confirmed ⇒ Object
Returns the value of attribute confirmed.
33 34 35 |
# File 'lib/obscured-doorman/models/user.rb', line 33 def confirmed @confirmed end |
Class Method Details
.authenticate(username, password) ⇒ Object
57 58 59 60 61 62 |
# File 'lib/obscured-doorman/models/user.rb', line 57 def authenticate(username, password) user = where(username: username).first return user if user&.authenticated?(password) nil end |
.make(opts) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/obscured-doorman/models/user.rb', line 36 def make(opts) raise Doorman::Error.new(:already_exists, what: 'User does already exists!') if User.where(username: opts[:username]).exists? user = new user.username = opts[:username] user.set_password(opts[:password]) user.first_name = opts[:first_name] unless opts[:first_name].nil? user.last_name = opts[:last_name] unless opts[:last_name].nil? user.mobile = opts[:mobile] unless opts[:mobile].nil? user.role = opts[:role] unless opts[:role].nil? user.confirmed = opts[:confirmed] unless opts[:confirmed].nil? user.add_event(type: :account, message: 'Account created', producer: opts[:producer].nil? ? user.username : opts[:producer]) user end |
.make!(opts) ⇒ Object
51 52 53 54 55 |
# File 'lib/obscured-doorman/models/user.rb', line 51 def make!(opts) user = make(opts) user.save user end |
.registered?(username) ⇒ Boolean
64 65 66 |
# File 'lib/obscured-doorman/models/user.rb', line 64 def registered?(username) where(username: username).exists? end |
Instance Method Details
#authenticated?(password) ⇒ Boolean Also known as: password?
82 83 84 |
# File 'lib/obscured-doorman/models/user.rb', line 82 def authenticated?(password) (BCrypt::Password.new(self.password) == password) end |
#confirm ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/obscured-doorman/models/user.rb', line 103 def confirm add_event(type: :confirm, message: 'Confirmation token created', producer: username) tokens.where(type: :confirm).destroy token = tokens.build( type: :confirm, token: SecureRandom.uuid, expires_at: (DateTime.now + 14.days) ) save token end |
#confirm! ⇒ Object
115 116 117 118 119 120 |
# File 'lib/obscured-doorman/models/user.rb', line 115 def confirm! add_event(type: :confirmation, message: 'Account was successfully confirmed', producer: username) self.confirmed = true tokens.where(type: :confirm).destroy save end |
#forget_me! ⇒ Object
98 99 100 101 |
# File 'lib/obscured-doorman/models/user.rb', line 98 def forget_me! add_event(type: :remember, message: 'Account set not to be remembered upon login', producer: username) tokens.where(type: :remember).destroy end |
#forgot_password! ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/obscured-doorman/models/user.rb', line 122 def forgot_password! add_event(type: :password, message: 'Reset password procedure has been started', producer: username) tokens.where(type: :password).destroy token = tokens.build( user: self, type: :password, token: SecureRandom.uuid, expires_at: (DateTime.now + 2.hours) ) save token end |
#name ⇒ Object
69 70 71 |
# File 'lib/obscured-doorman/models/user.rb', line 69 def name "#{first_name} #{last_name}" end |
#name=(arguments) ⇒ Object
73 74 75 76 |
# File 'lib/obscured-doorman/models/user.rb', line 73 def name=(arguments) self.first_name = arguments[:first_name] self.last_name = arguments[:last_name] end |
#remember_me! ⇒ Object
87 88 89 90 91 92 93 94 95 96 |
# File 'lib/obscured-doorman/models/user.rb', line 87 def remember_me! add_event(type: :remember, message: 'Account set to be remembered upon login', producer: username) token = tokens.build( type: :remember, token: SecureRandom.uuid, expires_at: (DateTime.now + Doorman.configuration.remember_for.days) ) save token end |
#remembered_password! ⇒ Object
135 136 137 138 |
# File 'lib/obscured-doorman/models/user.rb', line 135 def remembered_password! add_event(type: :password, message: 'Reset password procedure has been cancelled since successful login was achieved', producer: username) tokens.where(type: :password).destroy end |
#reset_password!(password, token) ⇒ Object
140 141 142 143 144 145 146 147 148 |
# File 'lib/obscured-doorman/models/user.rb', line 140 def reset_password!(password, token) token = tokens.find_by(token: token) if token && token.type.eql?(:password) set_password(password) add_event(type: :password, message: 'Password was successfully reset', producer: username) return save end false end |
#set_password(password) ⇒ Object
78 79 80 |
# File 'lib/obscured-doorman/models/user.rb', line 78 def set_password(password) self.password = BCrypt::Password.create(password) end |