public function hasRole($role) { if (is_array($role)) { foreach ($role as $r) { if ($this->hasRole($r)) { return true; } } } if (is_string($role)) { $role = Role::where('name', $role)->first(); } if (is_integer($role)) { $role = Role::find($role); } if (!$role instanceof Role) { return false; } foreach ($this->roles as $assignedRole) { if ($assignedRole->id == $role->id) { return true; } } return false; }
public function hasPermission($permission) { if (is_string($permission)) { $permission = Permission::where('name', $permission)->first(); } if (is_integer($permission)) { $permission = Role::find($permission); } if (!$permission instanceof Permission) { throw new \InvalidArgumentException('Argument must be integer, string, or an instance of ' . Permission::class); } foreach ($this->roles as $assignedRole) { foreach ($assignedRole->permissions as $assignedPermission) { if ($permission->id === $assignedPermission->id) { return true; } } } return false; }