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:
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
2. Role Design (Community-Level)
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)
π Example:
User β Moderator in Community A
User β Member in Community B
4. Middleware Update
checkPermission("create", "event", communityId)
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
7. Seed Data
π§ͺ Testing
β
Acceptance Criteria
π¦ 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)
Implement a centralized permission system for Community Management in Commdesk.
This includes managing:
All permissions must follow a standard format:
Example:
π― Objective
Enable fine-grained control over what users can do inside a community.
Example:
π§© Permission Design
πΉ Event Permissions
πΉ Member Management
πΉ Role Management
πΉ Community Management
πΉ Content (Optional but Recommended)
ποΈ Scope of Work
1. Extend Permission Schema
Add new permissions for:
2. Role Design (Community-Level)
Create roles:
community_admincommunity_moderatorcommunity_memberAssign permissions:
Admin
Moderator
Member
3. Community-Based Authorization (IMPORTANT)
communityIdcontext in permission checksπ Example:
4. Middleware Update
checkPermission(action, resource)to support:Validate:
5. API Protection
Protect endpoints:
6. Ownership / ABAC Layer
7. Seed Data
π§ͺ Testing
β Acceptance Criteria
resource:actionformatπ¦ Suggested Folder Structure
π₯ Future Enhancements