class CryptIdent::GenerateResetToken
Generate Reset Token for non-Authenticated User
This class *is not* part of the published API. @private
Constants
- LogicError
Attributes
current_user[R]
rubocop:enable Naming/RescuedExceptionsVariableName
user_name[R]
rubocop:enable Naming/RescuedExceptionsVariableName
Public Class Methods
new()
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 130 def initialize @current_user = nil @user_name = :unassigned end
Public Instance Methods
call(user_name, current_user: nil)
click to toggle source
rubocop:disable Naming/RescuedExceptionsVariableName
# File lib/crypt_ident/generate_reset_token.rb, line 136 def call(user_name, current_user: nil) init_ivars(user_name, current_user) Success(user: updated_user) rescue LogicError => err # rubocop:disable Security/MarshalLoad error_data = Marshal.load(err.message) # rubocop:enable Security/MarshalLoad Failure(error_data) end
Private Instance Methods
current_user_or_guest()
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 151 def current_user_or_guest guest_user = CryptIdent.config.repository.guest_user current_user = @current_user || guest_user # This will convert a Hash of attributes to an Entity instance. It leaves # an actual Entity value unmolested. @current_user = guest_user.class.new(current_user) end
find_user_by_name()
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 184 def find_user_by_name # will be `nil` if no match found CryptIdent.config.repository.find_by_name(user_name) end
init_ivars(user_name, current_user)
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 159 def init_ivars(user_name, current_user) @current_user = current_user @user_name = user_name end
new_token()
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 164 def new_token token_length = CryptIdent.config.token_bytes clear_text_token = SecureRandom.alphanumeric(token_length) Base64.strict_encode64(clear_text_token) end
update_repo(user)
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 170 def update_repo(user) CryptIdent.config.repository.update(user.id, updated_attribs) end
updated_attribs()
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 174 def updated_attribs prea = Time.now + CryptIdent.config.reset_expiry { token: new_token, password_reset_expires_at: prea } end
updated_user()
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 179 def updated_user validate_current_user update_repo(user_by_name) end
user_by_name()
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 189 def user_by_name found_user = find_user_by_name raise LogicError, user_not_found_error unless found_user found_user end
user_logged_in_error()
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 196 def user_logged_in_error Marshal.dump(code: :user_logged_in, current_user: current_user, name: :unassigned) end
user_not_found_error()
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 201 def user_not_found_error Marshal.dump(code: :user_not_found, current_user: current_user, name: user_name) end
validate_current_user()
click to toggle source
# File lib/crypt_ident/generate_reset_token.rb, line 206 def validate_current_user return current_user if current_user_or_guest.guest? raise LogicError, user_logged_in_error end