@Niush Or better yet, use an integer enum, rather than a string enum, so you can use bitmasking to store multiple user roles in a single column.
// Roles class
enum Roles: int {
case BaseUser = 1;
case Monitor = 2;
case Admin = 4;
case Owner = 8;
}
---
// User class
public function isAdmin() : bool {
return $this->role & Roles::Admin->value;
}
// Or more generally
public function isRole(Roles $role) : bool {
return $this->role & $role->value;
}
(Note that in this scenario, you don’t actually cast the role as an enum, but keep it as an integer.)