Skip to content

Roles & Permissions

Hierarchical role-based access control with granular permissions for the FundlyHub platform.

Authentication

All admin endpoints require an authenticated session. Super admins bypass all permission checks.

bash
curl -b cookies.txt -c cookies.txt \
  https://api.fundlyhub.org/api/v1/admin/roles

Role Hierarchy

RoleLevelCapabilities
super_admin100Full platform access, bypasses all checks
admin80User management, campaign moderation
moderator60Content review, reports
org_admin40Manage organization members
user10Standard user actions

Roles with a higher hierarchy_level automatically inherit permissions of lower-level roles.

Endpoints

Role Management

MethodEndpointDescription
GET/admin/rolesList all roles
POST/admin/rolesCreate a new role
PUT/admin/roles/:idUpdate role details
DELETE/admin/roles/:idDelete role (non-system only)

Permission Management

MethodEndpointDescription
GET/admin/roles/:id/permissionsList role permissions
POST/admin/roles/:id/permissionsAdd permission to role
DELETE/admin/roles/:id/permissions/:permIdRemove permission

User Role Assignment

MethodEndpointDescription
POST/admin/users/:id/rolesAssign role to user
DELETE/admin/users/:id/roles/:roleIdRevoke role from user

Error Responses

CodeMeaning
400Validation error — missing or invalid fields
403Forbidden — insufficient permissions
404Role or user not found
409Conflict — role name already exists

Best Practices

  • Always validate permissions on both frontend and backend
  • Use hierarchy_level for "at least" role checks
  • Don't delete system roles (is_system_role = true)
  • Use context-specific roles for organizations and fundraisers
  • Super admins bypass all checks — assign sparingly

Built with VitePress