2021-03-20 14:23:06 +01:00
|
|
|
class UsersController < ApplicationController
|
|
|
|
def new
|
2021-03-20 20:02:37 +01:00
|
|
|
@user = User.new
|
2021-03-20 14:23:06 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
def create
|
2021-03-20 22:37:38 +01:00
|
|
|
@user = User.create(params.require(:user).permit(:email, :password))
|
2021-03-21 17:02:04 +01:00
|
|
|
if @user.invalid?
|
|
|
|
redirect_to '/welcome', notice: notices_from_errors(@user)
|
|
|
|
else
|
|
|
|
session[:user_id] = @user.id
|
|
|
|
redirect_to '/welcome', notice: 'Account has been created'
|
|
|
|
end
|
2021-03-20 14:23:06 +01:00
|
|
|
end
|
2021-03-21 10:36:09 +01:00
|
|
|
|
2021-03-21 11:26:08 +01:00
|
|
|
def password_recovery_request
|
2021-03-21 10:36:09 +01:00
|
|
|
@user = User.where(email: params['email']).first
|
2021-03-21 14:44:59 +01:00
|
|
|
recovery_password = ('a'..'z').to_a.shuffle[0,8].join
|
|
|
|
@user.recovery_password = recovery_password
|
|
|
|
@user.save
|
|
|
|
UserMailer.with(user: @user, recovery_password: recovery_password).password_recovery.deliver_now
|
2021-03-21 12:41:21 +01:00
|
|
|
redirect_to '/welcome', notice: "Recovery email sent to #{params['email']}"
|
2021-03-21 10:36:09 +01:00
|
|
|
end
|
|
|
|
|
2021-03-21 11:26:08 +01:00
|
|
|
def password_recovery_request_form
|
2021-03-21 10:36:09 +01:00
|
|
|
end
|
|
|
|
|
2021-03-21 11:26:08 +01:00
|
|
|
def recover_password_form
|
2021-03-21 11:40:53 +01:00
|
|
|
@recovery_password = params[:recovery_password]
|
2021-03-21 10:36:09 +01:00
|
|
|
@user_id = params[:id]
|
|
|
|
end
|
|
|
|
|
|
|
|
def recover_password
|
|
|
|
user = User.find(params[:user_id])
|
2021-03-21 12:41:21 +01:00
|
|
|
if user.recovery_password_digest && user.authenticate_recovery_password(params[:recovery_password])
|
2021-03-21 10:36:09 +01:00
|
|
|
user.password = params[:password]
|
2021-03-21 11:40:53 +01:00
|
|
|
user.password_confirmation = params[:password_confirmation]
|
2021-03-21 10:36:09 +01:00
|
|
|
if user.save
|
2021-03-21 12:41:21 +01:00
|
|
|
user.update(recovery_password: nil)
|
|
|
|
redirect_to '/welcome', notice: 'Password changed'
|
|
|
|
else
|
|
|
|
redirect_to '/welcome', notice: 'Passwords don\'t match'
|
2021-03-21 10:36:09 +01:00
|
|
|
end
|
2021-03-21 12:41:21 +01:00
|
|
|
else
|
2021-03-21 14:44:59 +01:00
|
|
|
redirect_to '/welcome', notice: 'Recovery link expired or invalid'
|
2021-03-21 10:36:09 +01:00
|
|
|
end
|
|
|
|
end
|
2021-03-20 14:23:06 +01:00
|
|
|
end
|