luckybooru/src/operations/sign_in_user.cr

33 lines
636 B
Crystal
Raw Normal View History

class SignInUser < Avram::Operation
param_key :user
2020-03-07 23:32:07 +01:00
include UserFromName
attribute name : String
attribute password : String
# Run validations and yields the operation and the user if valid
def submit
2020-03-07 23:32:07 +01:00
user = user_from_name
validate_credentials(user)
if valid?
yield self, user
else
yield self, nil
end
end
private def validate_credentials(user)
2020-03-07 23:32:07 +01:00
# TODO: If banned, disallow login
if user
unless Authentic.correct_password?(user, password.value.to_s)
password.add_error "is wrong"
end
else
2020-03-07 23:32:07 +01:00
name.add_error "is not in our system"
end
end
end