Actualmente uso Devise para el registro/autenticación del usuario en un proyecto de Rails. Cuando un usuario desea cancelar su cuenta, el objeto de usuario se elimina de forma suave de la siguiente manera.Cómo detener el inicio de sesión del usuario borrado suave con Devise
How to "soft delete" user with Devise
Mi implmenetation tiene una pequeña diferencia de esta manera. El modelo de usuario tiene un atributo 'deleted_flag'. Y, el método soft_delete ejecuta "update_attribtue (: deleted_flag, true)"
Pero, tengo que implementar la acción sign_in. En mi implementación, es el siguiente.
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
Creo que este código tiene puntos extraños.
Si el usuario eliminado intenta cantar, el sistema permite el registro y cierra la sesión inmediatamente. Y, el sistema no puede mostrar el mensaje flash [: alerta] ...
Quiero saber dos puntos.
- ¿Cómo implemento para prohibir a los usuarios eliminados iniciar sesión?
- ¿Cómo implemento para mostrar el flash [: alerta] cuando el usuario eliminado intenta iniciar sesión?
Consulte también http://stackoverflow.com/q/8107966/249760, que en realidad logra tanto detener el inicio de sesión de los usuarios como suspender las sesiones actuales. –