Skip to content

feat: Implement Flexible Permission Management System#10

Draft
productdevbook wants to merge 26 commits into
dschewchenko:mainfrom
productdevbook:custom-permask
Draft

feat: Implement Flexible Permission Management System#10
productdevbook wants to merge 26 commits into
dschewchenko:mainfrom
productdevbook:custom-permask

Conversation

@productdevbook

@productdevbook productdevbook commented Mar 12, 2025

Copy link
Copy Markdown
Contributor

close #9

🚀 Permask Library Improvements

🎯 Overview

This PR enhances the Permask library, a flexible permission management system with a fluent API.

✨ Key Features

🔐 Permission Management

  • Default Permission Access: Pre-defined permission values (CREATE, READ, UPDATE, DELETE)
  • Auto-assignment of permission values: Automatically assigns bit values to permissions when null/undefined
  • ALL permission handling: Improved support for granting and checking all permissions

🛠️ Builder Pattern

  • PermaskBuilder: Enhanced builder class for creating customized permission systems
  • Permission Sets: Define and use named permission sets (VIEWER, EDITOR, MANAGER, etc.)
  • Fluent API: Chainable methods for defining permissions, groups, and permission sets

📊 Permission Checking

  • Detailed checking: Methods for checking individual or multiple permissions (can, canAll, canAny)
  • Permission explanation: Get detailed information about permissions with explain()
  • Special checks: Methods like canCreate(), canRead(), canUpdate(), etc.

🔄 String Conversion

  • toString: Convert permissions to human-readable format (e.g., "DOCUMENTS:VIEW,EDIT")
  • fromString: Parse permission strings back to bitmask values
  • Alternative formats: Support for "*" and "ALL" to represent all permissions

🧪 Testing

  • Comprehensive test suite covering basic and advanced use cases
  • Tests for auto-assignment of permission values
  • Tests for permission sets and string conversions

🔍 Technical Details

  • Uses bitwise operations for efficient permission storage and checking
  • Supports customizable number of access bits (default 5 bits)
  • Handles permission groups for contextual access control

@productdevbook productdevbook marked this pull request as draft March 12, 2025 09:53
@productdevbook productdevbook marked this pull request as ready for review March 12, 2025 14:51
@productdevbook productdevbook marked this pull request as draft March 13, 2025 17:21
@dschewchenko

Copy link
Copy Markdown
Owner

@productdevbook I think, we need to revise this PR. Include only what really useful, without breaking utility-first nature(to be tree-shakable and lightweight).

  • CRUD access already done
  • toString/fromString make as independent function

other functionality is not app-independent(universal enough), so in my opinion is not suitable for permask. Ok? =)

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.

Increase ACCESS_BITS limit to support more permission types

2 participants