FEATURE #2048: add basics of permissions management

This commit is contained in:
Michal Kváček
2017-08-10 23:18:53 +02:00
parent f702ba3a29
commit cccdbda543
18 changed files with 483 additions and 147 deletions
+22
View File
@@ -23,6 +23,7 @@ class User extends Model implements AuthenticableInterface, CanResetPassword
const ROLE_VISITOR = 'visitor';
const ROLE_EDITOR = 'editor';
const ROLE_ADMIN = 'admin';
protected static $abilities;
public $timestamps = true;
protected $fillable = [
'email',
@@ -60,4 +61,25 @@ class User extends Model implements AuthenticableInterface, CanResetPassword
{
$this->notify(new ResetPasswordNotification($token));
}
public function permissions()
{
return $this->belongsToMany(Permission::class, 'user_has_permissions');
}
/**
* Check if current user has given ability
*
* @param $ability
*
* @return bool
*/
public function hasAbility($ability)
{
if (empty(self::$abilities)) {
self::$abilities = $this->permissions->pluck('string_id')->toArray();
}
return in_array($ability, self::$abilities);
}
}