security icon indicating copy to clipboard operation
security copied to clipboard

BackedEnum everywhere

Open MartkCz opened this issue 3 years ago • 1 comments

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

Proposal

  1. Add interface Privilege
  2. Allow passing object of Role, Resource,Privilege to methods: Permission::hasResource, Permission::allow, Permission::addRole, etc

MartkCz avatar Apr 25 '22 11:04 MartkCz

I could prepare PR if it makes sense

MartkCz avatar Apr 26 '22 11:04 MartkCz