Skip to main content

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

ColumnSource
Nameusers.first_name + last_name
Emailusers.email
Roleusers.role (customer / vendor / rider / admin)
Statususers.is_active
Phoneusers.phone
Joinedusers.created_at
ActionsView / 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

ItemStatus
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
  • 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