Admin: users & roles
What it does
Lets admins set a user's role (admin/member), revoke access, and review the full user list. Database functions enforce: you cannot demote or revoke the last remaining admin, and you cannot revoke yourself.
Required inputs
- Target user — selected from the user list.
- Action — set role (admin/member) or revoke.
- For revoke, optional email to also remove from the invitation allow-list.
Example output
After promoting bob@example.com:
``` user_roles row inserted: user_id = … role = admin
admin_audit_log entry written: action = "role.changed" details = { from: "member", to: "admin" } ```