Skip to content

πŸš€ Feature: Community Management Permission System (Events + Core Actions) – CommdeskΒ #11

@abhishek-nexgen-dev

Description

@abhishek-nexgen-dev

Implement a centralized permission system for Community Management in Commdesk.

This includes managing:

  • Events
  • Members
  • Roles
  • Content (posts/messages)

All permissions must follow a standard format:

resource:action

Example:

event:create
event:update
event:delete

🎯 Objective

Enable fine-grained control over what users can do inside a community.

Example:

  • Admin β†’ full control
  • Moderator β†’ manage events & members
  • User β†’ view & participate only

🧩 Permission Design

πŸ”Ή Event Permissions

event:create
event:read
event:update
event:delete
event:publish
event:join
event:leave

πŸ”Ή Member Management

member:add
member:remove
member:ban
member:unban
member:view

πŸ”Ή Role Management

role:create
role:update
role:delete
role:assign

πŸ”Ή Community Management

community:update
community:delete
community:view
community:invite

πŸ”Ή Content (Optional but Recommended)

post:create
post:update
post:delete
comment:create
comment:delete

πŸ—οΈ Scope of Work

1. Extend Permission Schema

  • Add new permissions for:

    • event
    • member
    • role
    • community

2. Role Design (Community-Level)

  • Create roles:

    • community_admin
    • community_moderator
    • community_member
  • Assign permissions:

Admin

  • Full access (all permissions)

Moderator

  • event:create/update/delete
  • member:remove/ban
  • post moderation

Member

  • event:read
  • event:join/leave
  • post:create

3. Community-Based Authorization (IMPORTANT)

  • Add communityId context in permission checks
  • Ensure user has role within that community

πŸ‘‰ Example:

User β†’ Moderator in Community A
User β†’ Member in Community B

4. Middleware Update

  • Extend checkPermission(action, resource) to support:
checkPermission("create", "event", communityId)
  • Validate:

    • user role in that community
    • permissions linked to that role

5. API Protection

Protect endpoints:

POST   /community/:id/event        β†’ event:create
PATCH  /event/:id                 β†’ event:update
DELETE /event/:id                 β†’ event:delete
POST   /event/:id/join            β†’ event:join

6. Ownership / ABAC Layer

  • Allow event creator to update/delete their own event
  • Override role restriction if user is owner

7. Seed Data

  • Seed all permissions
  • Seed default roles with mapped permissions

πŸ§ͺ Testing

  • Admin can perform all actions
  • Moderator cannot delete community
  • Member cannot create event (unless allowed)
  • Owner can edit their own event
  • Cross-community permission isolation works

βœ… Acceptance Criteria

  • Permissions follow resource:action format
  • Community-scoped roles are working
  • All event APIs are protected
  • No hardcoded role checks
  • Ownership logic implemented
  • Clean 403 responses for unauthorized access

πŸ“¦ Suggested Folder Structure

/modules/community
/modules/permission
/modules/event

⚠️ Key Considerations

  • Multi-community role mapping (critical)
  • Avoid global roles for community actions
  • Optimize DB queries (populate efficiently)

πŸ”₯ Future Enhancements

  • UI for managing community roles
  • Invite-based permission assignment
  • Audit logs (event actions tracking)
  • Real-time permission sync (WebSocket)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions