Creating Groups of Users: Database-backed Solutions
This page demonstrates managing groups with Hyrax Role Management, but there are a few other options available. See:
Setup - Development Note
If you need to add administrative users in a production or production-like application, please proceed with following this guide.
If you only need to set up an admin user in development, this guide may be too heavyweight for your needs. Instead you should edit config/role_map.yml
in the internal test application per these instructions.
Install hydra-role-management
Follow the directions for installing hydra-role-management.
Add the following to your application’s Gemfile:
gem 'hydra-role-management'
Then install the gem and run its database migrations:
# each of these commands will produce some output.
bundle install
rails generate roles
rake db:migrate
Add new abilities
When you add new abilities to app/models/ability.rb
per the hydra-role-management instructions, add that code to the end of the custom_permissions
method.
Add an initial admin user via command-line
Run rails console
$ rails c
Add the administrative role to an administrative user:
admin = Role.create(name: "admin")
admin.users << User.find_by_user_key( "your_admin_users_email@fake.email.org" )
admin.save
Add more admin users
You can add more administrative users via the command-line like you did above, or you can do so via the UI:
- Login as an admin user
- Browse to http://your.app.host/roles
- Select a role and add one or more users to it
Confirm user was made an admin
Run the following commands in the rails console:
u = User.find_by_user_key( "your_admin_users_email@fake.email.org" )
u.admin?
# => true
If u.admin?
returns true
then everything worked as expected.
Or you can verify this in the UI:
- Login as an admin user
- Browse to http://your.app.host/roles
- The page should load without exceptions
- You should see a button labeled “Create a new role”
If you don’t see this or get a permission error, you may need to restart your Rails server and try again in the browser.