Bcrypt и Rails находят пользователя-администратора, просто вводя пароль

Я создаю приложение, которое имеет 3 модели (клиент, очки, администратор). У Клиента есть Баллы, Баллы принадлежат Клиенту. Тогда Admin имеет user_name и password_hash в качестве атрибутов, сохраняя пароли через Bcrypt. Как только клиент ищет себя по номеру телефона, появляются его очки. Но чтобы добавить очки, администратор должен войти в систему только с паролем (код из 4 цифр), а затем получить доступ к добавлению очков.

У меня проблемы с тем, как найти администратора только по паролю, а не по имени пользователя и паролю.

 class AdminsController < ApplicationController

 def new
   @admin = Admin.new
 end

 def create
   @Admin = Admin.new(admin_params)
   if @admin.save
     redirect_to root_path
   else
     flash[:error] = "incorrect data, please check form"
     render new_admin_path
   end
 end

 def login
   @customer = Customer.find(params[:id])

 # Need to get the input password
  params[:password]
 # Change the inputed password into a password hash
 # inputed_password_hash (NEED HELP HERE)

 # Compare the password hash with password hashes in the Admin model/database 
 # to see if it exists.
 # if true, send to add points page
 # if false, send back to customer page

   if Admin.find_by(password_hash: inputed_password_hash)
     redirect_to new_points_path
   else
     render customer_path 
   end
 end

   private

   def admin_params
     params.require(:admin).permit(:user_name, :password, :password_confirmation)
   end
 end

0 ответов

Другие вопросы по тегам