Skip to content

Users

Source: pharmanet-admin/src/pages/Users/Users.jsx

Tabs

Tab Component Description
All Users UserList Search, filter, paginate all profiles
Pending Pharmacies ApprovePharmacies Review and approve/reject pharmacy registrations

Redux Slice

Source: pharmanet-admin/src/store/userSlice.js

State Type
users[] Array of profiles
pendingPharmacies[] Pharmacy registrations awaiting review
filters { role, status, search }
pagination { page, limit, total }
Action Description
fetchUsers(params) Paginated user list
fetchPendingPharmacies() Pending approvals
updateUser({id, data}) Edit user
updateUserStatus({id, status}) Activate/deactivate
deleteUser(id) Delete user
approvePharmacy({id, data}) Approve + set role to seller
rejectPharmacy({id, reason}) Reject with reason

Components

Component File Description
UserList components/users/UserList.jsx Table with search, filters, pagination
UserDetailsModal components/users/UserDetailsModal.jsx Full profile view
UserEditDialog components/users/UserEditDialog.jsx Edit user form
ApprovePharmacies components/users/ApprovePharmacies.jsx Registration review cards
DocumentViewerModal components/users/DocumentViewerModal.jsx License/ID document preview
PharmacyDetailsModal components/users/PharmacyDetailsModal.jsx Full pharmacy info
RejectionModal components/users/RejectionModal.jsx Reason input dialog

Pharmacy Approval Flow

  1. Pharmacist registers via mobile app → sellers.approval_status = 'pending'
  2. Admin sees new entry in Pending Pharmacies tab
  3. Admin reviews documents (business license, pharmacist license, ID)
  4. Admin chooses Approve (sets role → seller, sends notification) or Reject (sends reason notification)
  5. Pharmacist receives push notification with result