PHP 8.2.30
Preview: RolePermissionRepository.php Size: 3.79 KB
/home/byroehnu/easetack.com/app/Repositories/Admin/RolePermissionRepository.php

<?php

namespace App\Repositories\Admin;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;

class RolePermissionRepository
{
    /**
     * Get search result with paginate
     */
    public function paginateSearchResult($search, array $sort = []): LengthAwarePaginator
    {
        $query = Role::query();

        // search category
        if (isset($search)) {
            $query->where('name', 'LIKE', "%$search%");
        }

        // sort category
        if (isset($sort['column'])) {
            $query->orderBy($sort['column'], $sort['order']);
        }

        return $query->paginate(30)
            ->appends(array_filter([
                'search' => $search,
                'sort' => $sort,
            ]));
    }

    public function permissions()
    {
        return Permission::all();
    }

    public function roles()
    {
        return Role::all();
    }

    public function getUserRoleTable(User $user)
    {
        return $this->roles()->transform(function ($role) use ($user) {
            return array_merge($role->only('id', 'name', 'title', 'description'), [
                'has_role' => $user->hasRole($role),
            ]);
        });
    }

    public function getUserPermissionTable(User $user): array
    {
        $permissions = [];
        foreach (Permission::all() as $permission) {
            if ($permission->crud_group) {
                $permissions['crud_permissions'][$permission->crud_group]['title'] = $permission->title;
                $permissions['crud_permissions'][$permission->crud_group]['actions'][$permission->crud_action] = array_merge($permission->only(['id', 'name']),
                    [
                        'has_permission' => $user->hasPermissionTo($permission),
                        'has_direct_permission' => $user->hasDirectPermission($permission),
                    ]);
            } else {
                $permissions['special_permissions'][] = array_merge($permission->only(['id', 'name', 'title', 'description']),
                    [
                        'has_permission' => $user->hasPermissionTo($permission),
                        'has_direct_permission' => $user->hasDirectPermission($permission),
                    ]
                );
            }
        }

        return $permissions;
    }

    public function getPermissionTable(): array
    {
        $permissions = [];
        foreach (Permission::all() as $permission) {
            if ($permission->crud_group) {
                $permissions['crud_permissions'][$permission->crud_group]['title'] = $permission->title;
                $permissions['crud_permissions'][$permission->crud_group]['actions'][$permission->crud_action] = array_merge($permission->only(['id', 'name']));
            }
        }

        return $permissions;
    }

    /**
     * Store role
     */
    public function store(Request $request): void
    {
        $role = Role::create(['title' => $request->title, 'name' => strtolower($request->title), 'description' => $request->description]);
        $permission = array_map(fn($p) => (int) $p, $request->permissions);
        $role->syncPermissions($permission);
    }

    /**
     * Update role
     */
    public function update(Request $request, Role $role): void
    {
        $role->update(['title' => $request->title, 'name' => strtolower($request->title), 'description' => $request->description]);
        $permission = array_map(fn($p) => (int) $p, $request->permissions);
        $role->syncPermissions($permission);
    }

    /**
     * Bulk delete
     */
    public function bulkDelete(Request $request): void
    {
        $ids = explode(',', $request->ids);
        Role::whereIn('id', $ids)->where('name', '!=', 'admin')->delete();
    }
}

Directory Contents

Dirs: 0 × Files: 37

Name Size Perms Modified Actions
713 B lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
4.90 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
8.52 KB lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
4.28 KB lrw-rw-rw- 2025-05-15 11:40:33
Edit Download
1.27 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
3.81 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
2.42 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
1.11 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
1.58 KB lrw-rw-rw- 2025-04-22 07:44:34
Edit Download
1.18 KB lrw-rw-rw- 2025-05-05 10:37:43
Edit Download
11.35 KB lrw-rw-rw- 2025-04-19 04:42:55
Edit Download
5.59 KB lrw-rw-rw- 2025-05-15 11:24:11
Edit Download
982 B lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
5.26 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
7.94 KB lrw-rw-rw- 2025-05-08 11:48:26
Edit Download
1.40 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
4.73 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
8.77 KB lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
7.70 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
5.04 KB lrw-rw-rw- 2025-05-15 11:24:11
Edit Download
3.88 KB lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
7.79 KB lrw-rw-rw- 2025-04-22 07:42:55
Edit Download
1.32 KB lrw-rw-rw- 2025-04-22 07:42:55
Edit Download
653 B lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
3.79 KB lrw-rw-rw- 2025-05-04 10:44:46
Edit Download
2.27 KB lrw-rw-rw- 2025-04-26 10:16:33
Edit Download
4.97 KB lrw-rw-rw- 2025-05-15 11:24:11
Edit Download
8.42 KB lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
723 B lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
2.42 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
1.19 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
7.19 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
4.42 KB lrw-rw-rw- 2025-05-01 06:16:57
Edit Download
1017 B lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
2.63 KB lrw-rw-rw- 2025-04-13 07:02:31
Edit Download
3.51 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
2.51 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).