Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BackedEnum everywhere #65

Open
MartkCz opened this issue Apr 25, 2022 · 1 comment
Open

BackedEnum everywhere #65

MartkCz opened this issue Apr 25, 2022 · 1 comment

Comments

@MartkCz
Copy link
Contributor

MartkCz commented Apr 25, 2022

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
Copy link
Contributor Author

MartkCz commented Apr 26, 2022

I could prepare PR if it makes sense

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

No branches or pull requests

1 participant