Skip to content

Add organization membership roles and management page#41

Merged
kcdragon merged 1 commit into
mainfrom
org-membership-roles
Jun 16, 2026
Merged

Add organization membership roles and management page#41
kcdragon merged 1 commit into
mainfrom
org-membership-roles

Conversation

@kcdragon

Copy link
Copy Markdown
Collaborator

Adds an owner/admin/member role to OrganizationMembership (string enum defaulting to member, with a backing migration) and a management page where privileged users adjust roles. Admins and owners can promote a member to admin, while only owners can demote an admin back to member; all role changes go through an OrganizationMembership::RoleUpdater service that returns a result object. The page (OrganizationMembershipsController) and its nav link are restricted to admins and owners — plain members are redirected, and owners are seeded only (new sign-ups stay members). Seeds now create one user per role (owner/admin/member@example.com), and Rubocop enforces compact nested-class style. Covered by new model, service, and controller tests.

Add an owner/admin/member role to OrganizationMembership (string enum,
defaulting to member) and a member-management page where privileged users
can adjust roles.

- Owners are seeded only; new sign-ups remain plain members.
- Admins and owners can promote a member to admin; only owners can demote
  an admin back to member. Role changes run through an
  OrganizationMembership::RoleUpdater service that returns a result object.
- The page (OrganizationMembershipsController) is restricted to admins and
  owners; plain members are redirected.
- Enforce compact nested class style via Rubocop (Style/ClassAndModuleChildren).
- Seed one user per role (owner/admin/member@example.com).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@kcdragon kcdragon merged commit d137872 into main Jun 16, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant