我最近继承了一个小型Rails平台,这个平台或多或少被以前的开发人员抛弃了。它使用Devise进行用户身份验证/管理/特权。我有该平台在线的实时版本的管理登录,但如果我只是通过bin/rails服务器在本地运行服务器,则不知道管理登录名。我无法与前一位web开发人员联系。
我的问题是,当我没有本地版本的应用程序的管理登录时,如何通过Devise获得管理权限?有没有一种方法可以重置由Devise管理的用户,或者在不知道当前管理员的登录信息的情况下添加具有管理权限的新用户?我需要能够轻松地查看仅对权限提升的用户可见的页面,而不必执行完全部署,然后在线检查更改。
发布于 2016-10-21 18:13:10
你需要打开rails console。
user.rb模型,以及用户可以拥有哪些角色。role_id表中有users属性吗?或者像这个admin那样的任何布尔属性。id = 1的用户有一个管理属性,那么您可以在控制台中编写
user = User.find(1) user.admin? #trueuser.password = '1234test' user.password_confirmation = 1234test user.skip_confirmation #if confirmable is enabled user.save!'For Enum如提到的这里
声明一个枚举属性,其中值映射到数据库中的整数,但可以按名称查询。
enum,可能的角色是:customer, :mechanic, and :admin,这意味着在rails控制台中,如果您键入User.roles,它将返回映射到像这个User.roles # => { "customer" => 0, "mechanic" => 1, "admin" => 2 }这样的索引的所有角色。role提供给来自console的任何user,您需要为该user提供如下索引(整数):
u = User.find(1) u.role = 0 # it needs integer here not symbols u.save u.role # => "customer"发布于 2016-10-21 18:02:20
如果您知道管理员用户的用户id,您可以直接进入控制台并手动重置它。
admin_user = User.find(7)或者你只知道这封邮件
admin_user = User.where(:email => 'admin@email.com').last或
admin_users = User.where(admin: true) #sort through the results and pick one
admin_user.password = 'my_new_password'
admin_user.password_confirmation = 'my_new_password'
admin_user.save(:validate =>) #in the event there are validation issues您还可以选择只创建一个新的管理用户。
admin_user = User.new
admin_user.admin = true
admin_user.email = 'your@email.com'
admin_user.password = 'my_new_password'
admin_user.password_confirmation = 'my_new_password'
admin_user.savehttps://stackoverflow.com/questions/40182793
复制相似问题