docbrown/docs/admin
Alex 393ba00221
Remove Elasticsearch ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ (#13606)
* Attempt number 1

* Fix rack_attack specs

* Fix users_searches_users spec

* Fix display_users_search_spec

* Fix comment typo

* Remove search:destroy task from cypress

* Remove port 9300 from gitpod

* Stub response in attack_spec
2021-05-03 11:09:45 -04:00
..
admin-search.md Remove Elasticsearch ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ (#13606) 2021-05-03 11:09:45 -04:00
admin-user-interface.md Switch references to Forem master branch to main (#12325) 2021-04-16 11:51:06 -05:00
readme.md Parenthesis consistency for add_role and remove_role (#12661) 2021-02-15 20:35:25 +02:00

title items
Admin Guide
admin-search.md
internal-user-interface.md

Admin Guide

The Forem application contains a rudimentary administration dashboard that lives behind the admin route.

The admin dashboard is made up of a series of views that range from administration tools to simplified reports. These tools are used by users with the admin or super_admin roles to administrate the Forem application.

Authorization for these tools is handled by the Rolify gem.

Currently, a workaround exists to give access to certain admin views via Rolify by assigning the role single_resource_admin to a user.

single_resource_admin users are given access to a Ruby class. In the codebase, there are admin models, not backed by database tables, that exist for this purpose. For example, if you needed to give a user access to only /admin/welcome, you'd run the following command in the Rails console:

user = User.find(some_user_id)
user.add_role(:single_resource_admin, Welcome)

This gives the user administration privileges on the controller associated with an almost empty Rails model that lives in app/models/admin/welcome.rb:

class Welcome < ApplicationRecord
  resourcify
  # This class exists to take advantage of Rolify for limiting authorization
  # on admin reports.
  # NOTE: It is not backed by a database table and should not be expected to
  # function like a traditional Rails model
end

Now that user will be able to access the view at admin/welcome. The same workaround has been implemented for most of the admin views.