security
security copied to clipboard
BackedEnum everywhere
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
- Add interface Privilege
- Allow passing object of Role, Resource,Privilege to methods: Permission::hasResource, Permission::allow, Permission::addRole, etc
I could prepare PR if it makes sense