Introduction
The Cajas admin panel provides administrators with powerful tools to manage cases, items, and monitor platform activity. Access is restricted to users with theadmin role.
Admin Roles and Permissions
Role Types
Cajas uses a simple role-based access control system defined in theprofiles table:
- user: Standard user with access to public features (browsing cases, opening cases, managing inventory)
- admin: Administrator with full access to create/edit cases, manage items, and view audit logs
Permission System
Admin permissions are enforced at multiple levels:Database Level (Row Level Security)
PostgreSQL RLS policies ensure data security:/home/daytona/workspace/source/supabase/migrations/0000_create_cases_system.sql:42-50
Application Level (Server Actions)
Server actions verify admin status before executing privileged operations:/home/daytona/workspace/source/app/actions/create-case.ts:37-51
Page Level (Route Protection)
Admin pages check role before rendering:/home/daytona/workspace/source/app/admin/create-case/page.tsx:5-28
Admin Capabilities
Admins have access to the following features:Case Management
- Create new cases with custom pricing
- Configure case images and descriptions
- Update existing cases
- Delete cases
Item Management
- Add items to cases
- Set item values and rarities
- Configure drop probabilities
- Manage item images
Monitoring & Audit
- View all admin actions in audit logs
- Track case creation and modifications
- Monitor system activity
Database Schema
Profiles Table
/home/daytona/workspace/source/types/supabase.ts:12-42
Admin Logs Table
All admin actions are logged for audit purposes:/home/daytona/workspace/source/types/supabase.ts:102-124
Best Practices
Security
- Never expose admin endpoints publicly: Always verify user role on the server side
- Use RLS policies: Leverage PostgreSQL’s Row Level Security for defense in depth
- Log all actions: Maintain an audit trail via the
admin_logstable - Validate input: Use Zod schemas to validate all admin inputs
Access Control
- Check role at multiple levels: Verify admin status in routes, actions, and database
- Use server components: Perform role checks in Server Components to prevent client-side bypasses
- Redirect unauthorized users: Always redirect non-admins attempting to access admin pages
Audit Trail
Log important admin actions:/home/daytona/workspace/source/app/actions/create-case.ts:128-132
Getting Started
To grant admin access to a user:- Access your Supabase database
- Update the user’s profile:
- The user will now have access to admin features
Next Steps
- Creating Cases - Learn how to create and configure new cases
- Managing Items - Add items and set drop rates
- Monitoring - View audit logs and track activity
