Appearance
RBAC & Permissions โ
Four-tier role hierarchy across platform admin and fund-scoped access.
Roles โ
๐ Super Admin โ Platform owner โ
- Panel:
/adminยท Scope: All pools, all funds, all settings - Auth: Email + Password (backend-only creation, 1 account per platform)
- Exclusive powers: invite/remove Admins, platform config, signing method defaults
๐ Admin โ Full platform control โ
- Panel:
/adminยท Scope: All pools, all funds - Auth: Google OAuth (invited by Super Admin)
- Can do: create/delete pools, approve redemptions (final), pool pause, invite Operators/FMs, notifications
โ๏ธ Operator โ Day-to-day operations โ
- Panel:
/adminยท Scope: All pools (page-level permissions, granted by Super Admin or Admin) - Auth: Google OAuth (invited by Super Admin or Admin)
- Can do: process deposits, record yield, edit pool details, propose redemptions (not approve), audit log
๐ Fund Manager โ Fund-scoped operations โ
- Panel:
/fund-adminยท Scope: Own fund(s) only - Auth: Google OAuth (invited by Admin)
- Can do: approve/reject deposits (own fund), issue LP (FUND_ISSUED), configure yield, manage fund members
โ๏ธ Operator Page-Level Permissions
Operator permissions are page-level, controlled via admin_user_permissions table. Available page_keys: 'dashboard', 'deposits', 'redemptions', 'yield', 'pools', 'kyc', 'funds'. Super Admins and Admins have full access (no permission records needed). Fund Managers see only their assigned fund's pools and related data.
Permission Matrix โ
Platform & Settings โ
| Action | ๐ Super Admin | ๐ Admin | โ๏ธ Operator | ๐ Fund Mgr |
|---|---|---|---|---|
| View admin dashboard | โ | โ | โ | โ |
| View audit log | โ | โ | โ | โ |
| Configure platform settings | โ | โ | โ | โ |
| Configure notifications | โ | โ | โ | โ |
| Invite / remove Admin | โ | โ | โ | โ |
| Invite / remove Operator | โ | โ | โ | โ |
| Invite / remove Fund Manager | โ | โ | โ | โ |
| Export CSV (all data) | โ | โ | โ | โ |
Pool Management โ
| Action | ๐ Super Admin | ๐ Admin | โ๏ธ Operator | ๐ Fund Mgr |
|---|---|---|---|---|
| Create pool | โ | โ | โ | โ |
| Edit pool config | โ | โ | โ (granted) | โ |
| Deploy pool | โ | โ | โ | โ |
| Delete / Archive pool | โ | โ | โ | โ |
| Pause / unpause | โ | โ | โ | โ |
| Toggle investment_blocked | โ | โ | โ | โ |
| Transfer to wallet (AS_POOL) | โ | โ | โ | โ |
| Set signing method | โ | โ | โ | โ |
| View NAV & oracle status | โ | โ | โ | Own fund |
Fund Management โ
| Action | ๐ Super Admin | ๐ Admin | โ๏ธ Operator | ๐ Fund Mgr |
|---|---|---|---|---|
| Create fund | โ | โ | โ | โ |
| Edit fund details | โ | โ | โ | โ |
| Delete fund | โ | โ | โ | โ |
| Set fund status | โ | โ | โ | โ |
| Add/remove fund members | โ | โ | โ | โ (own fund) |
| View fund dashboard | โ | โ | โ | Own fund |
| Export fund CSV | โ | โ | โ | Own fund |
Deposits & LP โ
| Action | ๐ Super Admin | ๐ Admin | โ๏ธ Operator | ๐ Fund Mgr |
|---|---|---|---|---|
| View investment queue | โ | โ | โ | โ |
| Verify LP (FUND_ISSUED) | โ | โ | โ | โ |
| Process deposits, manage reserve splits | โ | โ | โ | โ |
| Mint LP tokens (PLATFORM_ISSUED) | โ | โ | โ | โ |
Redemptions โ
| Action | ๐ Super Admin | ๐ Admin | โ๏ธ Operator | ๐ Fund Mgr |
|---|---|---|---|---|
| View redemption queue | โ | โ | โ | Own fund |
| Approve redemption (reserve check + payout) | โ | โ | โ | โ |
| Fund redemption shortfall | โ | โ | โ | โ |
| Reject redemption | โ | โ | โ | โ |
| Co-sign transfer (multi-sig, AS_POOL) | โ | โ | โ (with role) | โ |
| Co-sign transfer (multi-sig, FUND_POOL) | โ | โ | โ | โ (FM + FM) |
Yield & Distribution โ
| Action | ๐ Super Admin | ๐ Admin | โ๏ธ Operator | ๐ Fund Mgr |
|---|---|---|---|---|
| Record yield distribution | โ | โ | โ (granted) | Own fund |
| Retry failed distribution | โ | โ | โ (granted) | โ |
| View yield claims | โ | โ | โ | Own fund |
| Configure yield settings | โ | โ | โ (granted) | Own fund |
| Toggle allow_rollover | โ | โ | โ | โ |
Auth & Route Protection โ
๐ Authentication
Super Admin: Email + password login. Account created via backend only (DB seed or internal API). Password change via backend only. 1 account per platform.
Admin / Operator / Fund Manager: Google OAuth (email matched against admin_users.email). Invited via email with invite_code. On first login, Google OAuth account is linked.
wallet_address is optional for all roles โ used only for on-chain operations, not for authentication. Role check on route load via GET /api/auth/role. 30-minute session timeout.
๐ Database Tables
admin_users โ All roles (email, role, auth_method, password_hash, is_active)
auth_method:'PASSWORD'(Super Admin) or'GOOGLE_OAUTH'(others)password_hash: bcrypt hash, Super Admin only
admin_user_permissions โ Operator page-level permissions
fund_members โ Fund Manager roles (fund_id, admin_user_id scope, is_primary)
Admin Invite Flow โ
โ Super Admin invites Admin ๐ Super Admin
Settings โ Admin Users โ "Invite Admin" โ enter email. System generates invite_code and sends email.
โก Invited user clicks link โ Google OAuth ๐ด Admin
Email contains invite link with invite_code. User clicks โ Google OAuth sign-up โ account linked with role = ADMIN, auth_method = GOOGLE_OAUTH.
Operator Invite Flow โ
โ Super Admin or Admin invites Operator ๐ด Admin
Settings โ Admin Users โ "Invite Operator" โ enter email. Same invite flow as Admin.
โก Operator account created ๐ข System
Account created with role = OPERATOR. Admin grants page-level permissions via admin_user_permissions.
FM Onboarding Flow โ
โ Admin creates Fund ๐ด Admin
Navigate to Funds page โ "Create Fund" โ enter fund name, description, primary contact info.
โก Admin enters FM email ๐ด Admin
System sends invite email with invite_code to FM's email address.
โข FM clicks invite โ Google OAuth ๐ฃ FM
FM signs up with Google OAuth (email must match invite). Account created with role = FUND_MANAGER.
โฃ FM auto-linked to fund ๐ข System
FM linked to fund via fund_members table. FM can belong to ONE fund only. No separate KYC. Same Google OAuth as Admin/Operator.
๐ RBAC Definition
Role-Based Access Control โ access determined by assigned role, not individual permissions. Aset uses a four-tier model: Super Admin (platform owner, password auth), Admin (full control), Operator (page-level permissions), Fund Manager (fund-scoped). Super Admin uses email + password; all others use Google OAuth.