public

DB authorization

Every request to Hasura executes against a set of session variables. Normally there are some main variables for the authorization context:

In our database we have several roles which are simple arbitrary names. Each role can be given a set of permissions and actions (select, insert, update, delete). That will execute against each table of the database.

Example:

To give the user with a certain role a permission to make a request, we must set a permission rule that would look something like this:

{ "user_id": { "_eq": "X-Hasura-User-Id" } }

This is the same as saying : if the value of the user_id column equals the value of the session variable X-Hasura-User-Id, it allows this request to execute on the current row and get information on that user id.

Roles

These are the roles presented in the database:






You can see more about each role by going to the graphiql in the docs section. Note that you must be logged in with the user role you desire to see. For the role anonymous you do not need to be logged in. If you want to see the possible tables that can be queried by an admin, you must login with an admin, and so on…

A role is given by default to every user, if an user has more roles, the highest would be taken by default when login.

This table can describe the permissions for each table of the database and each user role.

βœ… : with permission rules
🟩 : without permission rules
❌ : not allowed
S : select
U : update
I : insert
D : delete

tables anonymous user campus-admin campus-admin-read-only admin admin-read-only
Β  S  U  I  D  S  U  I  D  S  U  I  D  S  U  I  D  S  U  I  D  S  U  I  D 
event_user ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
audit ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
group ❌ ❌ ❌ ❌ 🟩 βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
group_user ❌ ❌ ❌ ❌ 🟩 βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
match ❌ ❌ ❌ ❌ 🟩 βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
progress 🟩 ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
record ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
registration_user ❌ ❌ ❌ ❌ 🟩 ❌ βœ… βœ… βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
result 🟩 ❌ ❌ ❌ βœ… βœ… βœ… ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
transaction 🟩 ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
user 🟩 ❌ ❌ ❌ βœ… 🟩 ❌ ❌ βœ… βœ… ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
audit_expired_view ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
audit_private ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
discordToken ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
event ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
event_user_view ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
object 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
event_with_results_ready_view ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
group_status ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
job ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
match_to_remove_view ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… βœ… βœ… ❌ ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
object_child ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ ❌ βœ… βœ… βœ… ❌ ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
object_children_view ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
object_status ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
object_type ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
progress_by_path_view ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
progress_view ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
registration ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
registration_user_view ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
registration_with_event_ready_view ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
result_type ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
role ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
toad_result_view ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
token ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
token_status ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
transaction_type ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
user_public_view ❌ ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
user_role ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
user_roles_view ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ 🟩 ❌ ❌ ❌ 🟩 ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
xp ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
xp_by_event ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌
xp_by_path ❌ ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… ❌ ❌ ❌ βœ… βœ… βœ… βœ… βœ… ❌ ❌ ❌