Closed MartkCz closed 1 month ago
I use everywhere enums for roles/resources/privileges in php 8.1. it's better for maintenance than strings.
enum Roles: string implements Role { case EDITOR = 'editor'; public function getRoleId(): string { return $this->value; } } enum Resources: string implements Resource { case ARTICLE = 'article'; public function getResourceId(): string { return $this->value; } } enum ArticlePrivilege: string // implements Privilege { case EDIT = 'edit'; }
only method isAllowed accepts Resource and Role objects
1) Add interface Privilege 2) Allow passing object of Role, Resource,Privilege to methods: Permission::hasResource, Permission::allow, Permission::addRole, etc
I could prepare PR if it makes sense
I use everywhere enums for roles/resources/privileges in php 8.1. it's better for maintenance than strings.
only method isAllowed accepts Resource and Role objects
Proposal
1) Add interface Privilege 2) Allow passing object of Role, Resource,Privilege to methods: Permission::hasResource, Permission::allow, Permission::addRole, etc