Skip to content

MOP 2.2 — Resident User Directories & Verification

Audience: society_admin Outcome: A clean, searchable directory of residents, with controlled ways to suspend / unsuspend / delete and (super admin only) manage their subscription tier.

1. Where to start

Sidebar → Users. The list is automatically scoped: - society_admin → residents of their society + vendors who have marked this society as interested_society_ids. - child_admin → only residents tagged with the same child_society_id. - super_admin → everyone.

2. Verifying a resident

  1. Click the row → Actions menu.
  2. Available actions for society_admin:
  3. Login as User (Troubleshoot) — temporary token to reproduce a bug.
  4. Suspend / Unsuspend User — flips account_status.
  5. Delete User — soft-delete (60-day Vault retention).
  6. Manage Subscription is shown ONLY for super_admin / admin (subscription billing is a global concern).

Society admin user actions

3. Bulk import (CSV)

Sidebar → Users → Bulk Import drops a CSV with columns: name, phone_number, email, society_id, child_society_id, role. The backend de-dups by phone_number and stamps created_via = "bulk_admin_import".

4. APIs touched

Method Endpoint
GET /api/admin/users?status=&role=&search=
GET /api/admin/users/{user_id}
PUT /api/admin/users/{user_id}/status
DELETE /api/admin/users/{user_id}
POST /api/admin/users/bulk-import
PUT /api/admin/users/{user_id}/subscription (super_admin only)

5. Edge cases & FAQ

  • Mobile-app sign-in via OTP writes a users row automatically; the resident appears in the directory the moment they verify their phone.
  • A vendor-user listing also shows up because of vendor_profiles.interested_society_ids — that's by design (MOP 4.1).
  • Suspended user cannot log in, but their data is preserved.
  • MOP 1.3 — Phase Isolation
  • MOP 4.1 — Vendor Onboarding