]> BookStack Code Mirror - bookstack/blobdiff - app/Role.php
Polish translation
[bookstack] / app / Role.php
index 270e4e0b8e32ce1287be95dae0d1c138d8120e3b..bf9685ee25d597f35edb3403f82a31d33c220651 100644 (file)
@@ -1,8 +1,5 @@
-<?php
+<?php namespace BookStack;
 
-namespace BookStack;
-
-use Illuminate\Database\Eloquent\Model;
 
 class Role extends Model
 {
@@ -14,42 +11,85 @@ class Role extends Model
      */
     public function users()
     {
-        return $this->belongsToMany('BookStack\User');
+        return $this->belongsToMany(User::class);
     }
 
     /**
-     * The permissions that belong to the role.
+     * Get all related JointPermissions.
+     * @return \Illuminate\Database\Eloquent\Relations\HasMany
+     */
+    public function jointPermissions()
+    {
+        return $this->hasMany(JointPermission::class);
+    }
+
+    /**
+     * The RolePermissions that belong to the role.
      */
     public function permissions()
     {
-        return $this->belongsToMany('BookStack\Permission');
+        return $this->belongsToMany(RolePermission::class, 'permission_role', 'role_id', 'permission_id');
     }
 
     /**
      * Check if this role has a permission.
-     * @param $permission
+     * @param $permissionName
+     * @return bool
      */
-    public function hasPermission($permission)
+    public function hasPermission($permissionName)
     {
-        return $this->permissions->pluck('name')->contains($permission);
+        $permissions = $this->getRelationValue('permissions');
+        foreach ($permissions as $permission) {
+            if ($permission->getRawAttribute('name') === $permissionName) return true;
+        }
+        return false;
     }
 
     /**
      * Add a permission to this role.
-     * @param Permission $permission
+     * @param RolePermission $permission
      */
-    public function attachPermission(Permission $permission)
+    public function attachPermission(RolePermission $permission)
     {
         $this->permissions()->attach($permission->id);
     }
 
+    /**
+     * Detach a single permission from this role.
+     * @param RolePermission $permission
+     */
+    public function detachPermission(RolePermission $permission)
+    {
+        $this->permissions()->detach($permission->id);
+    }
+
     /**
      * Get the role object for the specified role.
      * @param $roleName
-     * @return mixed
+     * @return Role
      */
     public static function getRole($roleName)
     {
         return static::where('name', '=', $roleName)->first();
     }
+
+    /**
+     * Get the role object for the specified system role.
+     * @param $roleName
+     * @return Role
+     */
+    public static function getSystemRole($roleName)
+    {
+        return static::where('system_name', '=', $roleName)->first();
+    }
+
+    /**
+     * Get all visible roles
+     * @return mixed
+     */
+    public static function visible()
+    {
+        return static::where('hidden', '=', false)->orderBy('name')->get();
+    }
+
 }