В настоящее время я использую Devise для регистрации / аутентификации пользователей в проекте Rails.Когда пользователь хочет удалить свою учетную запись, пользовательский объект удаляется программным способом следующим образом:
Как «мягко удалить» пользователя с помощью Devise
MyТаким образом, имплментация имеет небольшую разницу.Модель пользователя имеет атрибут «Удаленный_флаг».И, метод soft_delete выполняет "update_attribtue (: dele_flag, true)"
Но я должен выполнить действие sign_in.В моем понимании следующее.
class SessionsController < Devise::SessionsController
def create
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
if resource.deleted_flag
p "deleted account : " + resource.deleted_flag.to_s
sign_out(resource)
render :controller => :users, :action => :index
else
if is_navigational_format?
if resource.sign_in_count == 1
set_flash_message(:notice, :signed_in_first_time)
else
set_flash_message(:notice, :signed_in)
end
end
sign_in(resource_name, resource)
respond_with resource, :location => redirect_location(resource_name, resource)
end
end
end
Я думаю, что этот код имеет странные моменты.
Если удаленный пользователь пытается войти, система разрешает входить в систему и сразу же выходить из нее.И система не может отображать flash [: alert] message ...
Я хочу знать две точки.
- Как мне реализовать запрет запретить вход в систему удаленным пользователям?
- Как реализовать отображение [: alert], когда удаленный пользователь пытается войти в систему?