Hash reset codes in database
Otherwise, they can be reused if the database gets leaked.
This commit is contained in:
parent
fa4f77c365
commit
dc22a5bc7c
2 changed files with 11 additions and 4 deletions
13
vedia.rb
13
vedia.rb
|
|
@ -130,7 +130,8 @@ end
|
|||
post '/reset' do
|
||||
@user = User.find_by(email: params[:email])
|
||||
if @user
|
||||
@user.reset = SecureRandom.uuid
|
||||
@reset = SecureRandom.uuid
|
||||
@user.reset = hash_password(@reset)
|
||||
@user.save
|
||||
mail = Mail.new
|
||||
mail.from = settings.admin_email
|
||||
|
|
@ -143,7 +144,10 @@ post '/reset' do
|
|||
end
|
||||
|
||||
get '/reset/:uuid' do
|
||||
@user = User.find_by(reset: params[:uuid])
|
||||
@user = nil
|
||||
User.where.not(reset: nil).each do |user|
|
||||
@user = user if verify_password(params[:uuid], user.reset)
|
||||
end
|
||||
if @user
|
||||
erb :reset_change
|
||||
else
|
||||
|
|
@ -152,7 +156,10 @@ get '/reset/:uuid' do
|
|||
end
|
||||
|
||||
post '/reset/:uuid' do
|
||||
@user = User.find_by(reset: params[:uuid])
|
||||
@user = nil
|
||||
User.where.not(reset: nil).each do |user|
|
||||
@user = user if verify_password(params[:uuid], user.reset)
|
||||
end
|
||||
if @user
|
||||
@errors = []
|
||||
if params[:password].empty?
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue