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
- Pharmacist registers via mobile app →
sellers.approval_status = 'pending'
- Admin sees new entry in Pending Pharmacies tab
- Admin reviews documents (business license, pharmacist license, ID)
- Admin chooses Approve (sets role →
seller, sends notification) or Reject (sends reason notification)
- Pharmacist receives push notification with result