Guides
User Permissions
Managing user permissions and subusers in StellarStack
User Permissions
StellarStack uses a role-based access control (RBAC) system with granular permissions.
Role Hierarchy
Super Admin
│
├── Admin
│ ├── Moderator
│ └── Support
│
└── User (default)
└── Subuser (per-server)Global Roles
Super Admin
Full platform access including:
- All admin capabilities
- Platform settings
- Blueprint management
- Billing access
Admin
Manage users and nodes:
- View/create/delete users
- Suspend users
- Manage user servers
- View/create/delete nodes
- Modify node settings
Moderator
Limited admin access:
- View user details
- Limited server management
- Support escalation
Support
Customer support access:
- View user details
- Read-only server access
- Create support tickets
User
Standard user account:
- Manage own servers
- Create subusers
- View assigned resources
Server Permissions
Individual permissions for server access:
| Permission | Description |
|---|---|
server.view | View server details |
server.console | Access server console |
server.console.send | Send console commands |
server.files.read | Read server files |
server.files.write | Write server files |
server.files.delete | Delete server files |
server.start | Start server |
server.stop | Stop server |
server.restart | Restart server |
server.kill | Force kill server |
server.delete | Delete server |
server.settings | Modify server settings |
server.subusers | Manage subusers |
server.schedules | Manage schedules |
server.backups | Manage backups |
server.databases | Manage databases |
Managing Subusers
Subusers are users with limited access to specific servers.
Add a Subuser
- Navigate to Server → Users
- Click Add User
- Enter email address
- Select permissions
- Click Invite
Permission Templates
Create templates for common access patterns:
Read Only
server.viewserver.consoleserver.files.read
Operator
- All read permissions
server.console.sendserver.startserver.stopserver.restart
Manager
- All operator permissions
server.files.writeserver.settingsserver.schedulesserver.backups
Full Access
- All permissions except
server.delete
API Permission Check
Permissions are checked at the API level:
// Middleware example
app.post("/servers/:serverId/start",
authMiddleware,
requirePermission("server.start"),
async (c) => {
// Handler only runs if user has permission
}
);Custom Permission Logic
const checkPermission = async (
userId: string,
serverId: string,
permission: string
): Promise<boolean> => {
// Check if user owns the server
const server = await getServer(serverId);
if (server.ownerId === userId) {
return true;
}
// Check if user is a subuser with permission
const subuser = await getSubuser(serverId, userId);
if (subuser && subuser.permissions.includes(permission)) {
return true;
}
// Check global admin role
const user = await getUser(userId);
if (user.role === 'admin' || user.role === 'superadmin') {
return true;
}
return false;
};Best Practices
- Principle of Least Privilege - Grant only necessary permissions
- Use Templates - Create permission templates for common roles
- Audit Regularly - Review subuser access periodically
- Document Access - Keep records of who has access to what
- Revoke Promptly - Remove access when no longer needed