User Management
Route: /admin/users
File: ayts-admin/app/(admin)/users/page.tsx
Auth required: Admin
Purpose
Admins view all registered users, manage their roles, and handle account actions (ban, deactivate, promote to vendor).
User Table
Columns
| Column | Source |
|---|---|
| Name | users.first_name + last_name |
users.email | |
| Role | users.role (customer / vendor / rider / admin) |
| Status | users.is_active |
| Phone | users.phone |
| Joined | users.created_at |
| Actions | View / Ban / Deactivate |
Filters
- Role: All / Customer / Vendor / Rider
- Status: All / Active / Deactivated / Banned
Data Fetching
// Get all users
GET /api/admin/users?role={role}&status={status}&limit=20&offset={page}
// Get single user
GET /api/admin/users/{id}
// Update user (ban/deactivate/role change)
PATCH /api/admin/users/{id}
{ isActive: boolean, role: string }
User Actions
Ban / Deactivate
Setting is_active: false will:
- Block all future login attempts (returns 403)
- Prevent order placement
- Vendor stores become inaccessible
Promote to Vendor
After approving a vendor application, the admin can set:
PATCH /api/admin/users/{id}
{ role: 'vendor' }
Promote to Rider
PATCH /api/admin/users/{id}
{ role: 'rider' }
Launch Cleanup
Before going live, delete all test accounts:
DELETE FROM users
WHERE email IN ('test@example.com', 'test22@gmail.com', 'playwright.owner@example.com')
OR first_name ILIKE 'Test%';
Known Issues / Status
| Item | Status |
|---|---|
| User list | ✅ Working |
| Ban / deactivate | ✅ Working |
| Role assignment | ✅ Working |
| Pagination | ⚠️ All users on one page (no pagination yet) |
| Test user cleanup | ❌ Must do before launch |
| Bulk actions | ❌ Not implemented |
| Export to CSV | ❌ Not implemented |
Recommended Improvements
- Add pagination (currently shows all users on one page — will fail at scale)
- Add export CSV for compliance reporting
- Add audit log per user action