Rails为某些用户类型设计了禁用密码恢复function
在我的Rails项目中,我有不同类型的用户,其中一个用户具有user_status :admin
,与其他用户不同,它具有编辑内容的完全权限。 出于显而易见的原因,我想为这些类型的用户添加额外的安全性,特别是完全禁用密码恢复。
覆盖标准Devise密码恢复( :recoverable
Devise模块)方法的正确方法是什么,以便当用户尝试为管理员用户( user_status == "admin"
)的用户获取重置密码链接时,系统会返回“标准电子邮件未找到”消息?
这有点像未回答的问题:将设计密码恢复限制为仅限某些用户
先感谢您。
我选择并且对我send_reset_password_instructions
方法是通过将以下内容添加到models/user.rb
来覆盖User模型的send_reset_password_instructions
方法:
def send_reset_password_instructions return false if self.user_status == 'admin' super end
这使得Devise在电子邮件属于管理员帐户时不会做任何事情。
没有测试,但我认为你可以覆盖reset_password!
在User模型中如下:
def reset_password!(new_password, new_password_confirmation) return false if user_status == 'admin' super end
如果用户是管理员,则可以防止重置密码。
我不知道这是否是最好的覆盖方法,有更多设计可恢复的方法可以在你的用户模型中被覆盖,即send_reset_password_instructions
。 查看手册中的所有有趣方法。