Roles overview

Learn about the different user roles in CareNova and how permissions are managed across the platform.

Written By Dev010

Last updated 19 days ago

CareNova uses a Role-Based Access Control (RBAC) system to manage permissions and protect sensitive healthcare data across the entire platform.

Every user account is assigned one of four roles. That role determines which modules appear in the navigation, which actions are available, and which server-side operations are permitted.

Permissions are enforced at two levels simultaneously β€” the navigation UI and the backend server actions β€” so users can never access data or perform actions outside their role, even by navigating directly to a URL.

Administrators can customize the default permissions for every role from the Permissions page in the dashboard.

The Four Roles

πŸ›‘ Admin

The Admin has full, unrestricted access to every module, setting, and action in CareNova. Admin access cannot be restricted by the permissions matrix.

Full access to:

  • All patient records, appointments, and medical data

  • All financial modules β€” invoices, payments, expenses

  • Staff management β€” create, edit, approve, and deactivate accounts

  • Permissions matrix β€” configure access rules for all other roles

  • Landing page settings and clinic branding

  • Blog management β€” create, publish, and delete posts

  • Department, service, and inventory management

  • Lab vendors and test reports

  • Financial analytics β€” revenue, expenses, net income, overdue invoices

  • Auth audit logs and session activity

  • Clinic settings β€” name, type, branding, contact info

  • Payroll management

Exclusive to Admin:

  • Approving new user signups (pending approval flow)

  • Configuring role permissions for Doctor, Receptionist, and Nurse

  • Accessing landing page settings

  • Viewing auth audit logs

Admins typically represent clinic owners or system administrators.

πŸ‘¨β€βš•οΈ Doctor

The Doctor role is focused entirely on clinical workflows and patient care.

Can access:

  • Patient profiles β€” view, create, and edit

  • Appointments β€” view, create, edit, reschedule, and cancel

  • Medical records β€” vitals, clinical notes, diagnoses, attachments

  • Prescriptions β€” create, edit, and manage

  • Test reports β€” create, edit, and manage

  • Odontogram charting (dental clinics only)

  • Services and departments β€” view only

  • Blog posts β€” create and manage

  • Dashboard analytics summary

Cannot access:

  • Invoices, payments, or expenses

  • Staff management

  • Inventory management

  • Permissions matrix

  • Landing page settings

  • Payroll

πŸ§‘β€πŸ’Ό Receptionist

The Receptionist role handles front desk operations β€” patient registration, appointment scheduling, and billing.

Can access:

  • Patients β€” view, create, and edit

  • Appointments β€” view, create, edit, reschedule, cancel, and assign

  • Invoices β€” view, create, and edit

  • Payments β€” view and record

  • Services and departments β€” view only

  • Staff β€” view only

  • Dashboard analytics summary

Cannot access:

  • Medical records

  • Prescriptions

  • Test reports

  • Odontogram

  • Inventory

  • Expenses

  • Permissions matrix

  • Landing page settings

  • Blog management

πŸ‘©β€βš•οΈ Nurse

The Nurse role supports clinical operations β€” patient monitoring, medical documentation, and supply management.

Can access:

  • Patients β€” view and edit

  • Appointments β€” view, edit, and reschedule

  • Medical records β€” view and create vitals and clinical notes

  • Prescriptions β€” view only

  • Test reports β€” view only

  • Inventory β€” view and manage stock

  • Services and departments β€” view only

Cannot access:

  • Invoices, payments, or expenses

  • Staff management

  • Permissions matrix

  • Landing page settings

  • Blog management

  • Payroll

Permissions Matrix

The table below shows the default permissions for each role. These can be customized by an Admin from the Permissions page.

Permission

Area

Admin

Doctor

Receptionist & Nurse

Analytics Dashboard

βœ…

βœ…

βœ…

❌

Patients β€” View

βœ…

βœ…

βœ…

βœ…

Patients β€” Create

βœ…

βœ…

βœ…

❌

Patients β€” Edit

βœ…

βœ…

βœ…

βœ…

Patients β€” Delete

βœ…

❌

❌

❌

Patients β€” Export

βœ…

❌

❌

❌

Appointments β€” View

βœ…

βœ…

βœ…

βœ…

Appointments β€” Create

βœ…

βœ…

βœ…

❌

Appointments β€” Edit

βœ…

βœ…

βœ…

βœ…

Appointments β€” Reschedule

βœ…

βœ…

βœ…

βœ…

Appointments β€” Cancel

βœ…

βœ…

βœ…

❌

Appointments β€” Export

βœ…

❌

❌

❌

Medical Records β€” View

βœ…

βœ…

❌

βœ…

Medical Records β€” Create

βœ…

βœ…

❌

βœ…

Medical Records β€” Edit

βœ…

βœ…

❌

❌

Prescriptions β€” View

βœ…

βœ…

❌

βœ…

Prescriptions β€” Create

βœ…

βœ…

❌

❌

Prescriptions β€” Edit

βœ…

βœ…

❌

❌

Test Reports β€” View

βœ…

βœ…

❌

βœ…

Test Reports β€” Create

βœ…

βœ…

❌

❌

Test Reports β€” Edit

βœ…

βœ…

❌

❌

Odontogram β€” View

βœ…

βœ…

❌

❌

Odontogram β€” Create

βœ…

βœ…

❌

❌

Odontogram β€” Edit

βœ…

βœ…

❌

❌

Billing β€” View

βœ…

❌

βœ…

❌

Billing β€” Create

βœ…

❌

βœ…

❌

Billing β€” Edit

βœ…

❌

βœ…

❌

Inventory β€” View

βœ…

❌

❌

βœ…

Inventory β€” Create

βœ…

❌

❌

❌

Inventory β€” Edit

βœ…

❌

❌

❌

Staff β€” View

βœ…

❌

βœ…

❌

Staff β€” Create

βœ…

❌

❌

❌

Staff β€” Edit

βœ…

❌

❌

❌

Services β€” View

βœ…

βœ…

βœ…

βœ…

Departments β€” View

βœ…

βœ…

βœ…

βœ…

Settings β€” View

βœ…

❌

❌

❌

Settings β€” Edit

βœ…

❌

❌

❌

Admin always retains full access to all permissions regardless of any configuration changes.

How Permissions Are Enforced

CareNova enforces permissions at two independent levels:

1. Navigation The sidebar automatically shows or hides menu items based on the user's role and their granted permissions. Users never see modules they are not permitted to access.

2. Backend Server Actions Every server action that performs a mutation β€” create, update, delete β€” checks the user's role and permissions before executing. If the check fails, the action throws a permission denied error and the operation does not proceed.

This means that hiding a button in the UI is never the only protection. Even if a user navigates directly to a URL or sends a request manually, the backend will reject it if they do not have the required permission.

User Signup and Approval Flow

New users who sign up through the registration page are not granted dashboard access immediately.

The approval flow works as follows:

  1. User submits signup form with email and password

  2. Confirmation email is sent via Resend

  3. User confirms their email address

  4. Account is placed in pending approval state

  5. Admin receives notification and reviews the request

  6. Admin approves or rejects the account from the dashboard

  7. Approved users can log in and access the dashboard

  8. Rejected users are notified and cannot access the system

Admins can pre-create accounts directly from the Staff management module, bypassing the approval flow.

Customizing Permissions

Administrators can modify the default permissions for Doctor, Receptionist, and Nurse roles at any time.

To customize permissions:

  1. Log in as Admin

  2. Go to Dashboard β†’ Permissions

  3. Select the role to configure

  4. Toggle individual permissions on or off

  5. Save changes β€” they take effect immediately

Changes to permissions are reflected instantly across navigation, buttons, and server-side enforcement for all users with that role.

The Admin role cannot be restricted. Admin always retains full access to all modules and actions.

Why Role-Based Access Matters

Healthcare systems manage highly sensitive patient data. CareNova enforces RBAC to ensure that:

  • Users can only access information relevant to their role

  • Sensitive clinical data is protected from unauthorized access

  • Financial data is accessible only to billing staff and admins

  • Patient confidentiality is maintained across all workflows

  • Responsibilities are clearly separated between staff members

  • The system remains auditable β€” every login and action is logged

Demo Accounts

You can explore each role using the demo accounts included with the seed data:

RoleEmailPassword

Admin

admin@carenova.demo

Demo123!

Doctor

doctor@carenova.demo

Demo123!

Receptionist

receptionist@carenova.demo

Demo123!

Nurse

nurse@carenova.demo

Demo123!

The password can be customized by setting the DEMO_PASSWORD environment variable before running npm run db:seed.