仅允许一个用户成为具有devise的管理员

时间:2019-10-01 08:25:10

标签: ruby-on-rails devise

我正在创建一个包含rails 6,devise和cancan的网页。

我需要一个管理员角色,但我不想创建一个单独的模型,而是向table表添加了一个Boolean列给用户,但这是事情,

如果有任何用户注册,则出于安全考虑,任何用户仅通过将此列的值更改为true来授予管理员特权。

所以我想也许我会从“ user_params”中删除“ admin”,但随后我将不得不从控制台进行此更改,这是不够的。

我应该只授予特定用户admin的权限,我的想法是我只允许第一位用户,或者特定电子邮件,但感觉很愚蠢,必须有一种更聪明的方法。

我如何让应用程序只有一位可以创建任何其他用户的管理员,但只有一位可以进行此操作的管理员,并且如果有任何普通用户注册,无论他不能以任何方式操作此列? >

最好的问候

1 个答案:

答案 0 :(得分:1)

  1. 从注册控制器中的admin中删除user_params。您不希望用户仅通过准备请求就可以成为管理员。
  2. 引入第三列super_admin,如果只需要执行一次,则从控制台授予该角色。
  3. 创建仅super_admin可以访问的视图和控制器,她可以为所有用户更新admin