58 lines
1.4 KiB
PHP
58 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Repositories;
|
|
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
class RoleRepository implements RoleInterface
|
|
{
|
|
public function pluck()
|
|
{
|
|
return Role::pluck('name', 'id');
|
|
}
|
|
|
|
public function findAll()
|
|
{
|
|
return Role::with('permissions')->get();
|
|
}
|
|
|
|
public function getRoleById($roleId)
|
|
{
|
|
return Role::with('permissions')->findOrFail($roleId);
|
|
}
|
|
|
|
public function delete($roleId)
|
|
{
|
|
$role = self::getRoleById($roleId);
|
|
$role->permissions()->detach();
|
|
return $role->delete();
|
|
}
|
|
|
|
public function create(array $roleDetails)
|
|
{
|
|
return Role::create($roleDetails);
|
|
}
|
|
|
|
public function update($roleId, array $newDetails)
|
|
{
|
|
$role = Role::find($roleId);
|
|
$role->update($newDetails);
|
|
return $role;
|
|
}
|
|
public function getPermissionListsArrangedByPrefix()
|
|
{
|
|
$permissions = self::findAll();
|
|
|
|
$routeNameArr = [];
|
|
foreach ($permissions as $permission) {
|
|
if (!is_null($permission->name)) {
|
|
$routeName = explode('.', $permission->name);
|
|
if (is_array($routeName) && !empty($routeName[0])) {
|
|
$routeNameArr[$routeName[0]][$permission->id] = array_key_exists(1, $routeName) ? $routeName[1] : $routeName[0];
|
|
}
|
|
}
|
|
}
|
|
return $routeNameArr;
|
|
}
|
|
}
|