TRF Certest first commit

This commit is contained in:
2025-02-26 08:57:46 +01:00
commit 3ce064a108
2524 changed files with 475404 additions and 0 deletions
@@ -0,0 +1,69 @@
<?php
namespace Vanguard\Http\Controllers\Api\Authorization;
use Spatie\QueryBuilder\AllowedFilter;
use Spatie\QueryBuilder\QueryBuilder;
use Vanguard\Http\Controllers\Api\ApiController;
use Vanguard\Http\Requests\Permission\CreatePermissionRequest;
use Vanguard\Http\Requests\Permission\RemovePermissionRequest;
use Vanguard\Http\Requests\Permission\UpdatePermissionRequest;
use Vanguard\Http\Resources\PermissionResource;
use Vanguard\Permission;
use Vanguard\Repositories\Permission\PermissionRepository;
class PermissionsController extends ApiController
{
public function __construct(private readonly PermissionRepository $permissions)
{
$this->middleware('permission:permissions.manage');
}
public function index(): \Illuminate\Http\Resources\Json\AnonymousResourceCollection
{
$permissions = QueryBuilder::for(Permission::class)
->allowedFilters([
AllowedFilter::partial('name'),
AllowedFilter::partial('display_name'),
AllowedFilter::exact('role', 'role_id'),
])
->allowedSorts(['name', 'created_at'])
->defaultSort('created_at')
->paginate();
return PermissionResource::collection($permissions);
}
public function store(CreatePermissionRequest $request): PermissionResource
{
$permission = $this->permissions->create(
$request->only(['name', 'display_name', 'description'])
);
return new PermissionResource($permission);
}
public function show(Permission $permission): PermissionResource
{
return new PermissionResource($permission);
}
public function update(Permission $permission, UpdatePermissionRequest $request): PermissionResource
{
$input = collect($request->all());
$permission = $this->permissions->update(
$permission->id,
$input->only(['name', 'display_name', 'description'])->toArray()
);
return new PermissionResource($permission);
}
public function destroy(Permission $permission, RemovePermissionRequest $request): \Illuminate\Http\JsonResponse
{
$this->permissions->delete($permission->id);
return $this->respondWithSuccess();
}
}
@@ -0,0 +1,36 @@
<?php
namespace Vanguard\Http\Controllers\Api\Authorization;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
use Vanguard\Events\Role\PermissionsUpdated;
use Vanguard\Http\Controllers\Api\ApiController;
use Vanguard\Http\Requests\Role\UpdateRolePermissionsRequest;
use Vanguard\Http\Resources\PermissionResource;
use Vanguard\Repositories\Role\RoleRepository;
use Vanguard\Role;
class RolePermissionsController extends ApiController
{
public function __construct(private RoleRepository $roles)
{
$this->middleware('permission:permissions.manage');
}
public function show(Role $role): AnonymousResourceCollection
{
return PermissionResource::collection($role->cachedPermissions());
}
public function update(Role $role, UpdateRolePermissionsRequest $request): AnonymousResourceCollection
{
$this->roles->updatePermissions(
roleId: $role->id,
permissions: $request->permissions
);
event(new PermissionsUpdated);
return PermissionResource::collection($role->cachedPermissions());
}
}
@@ -0,0 +1,78 @@
<?php
namespace Vanguard\Http\Controllers\Api\Authorization;
use Cache;
use Illuminate\Http\JsonResponse;
use Spatie\QueryBuilder\QueryBuilder;
use Vanguard\Http\Controllers\Api\ApiController;
use Vanguard\Http\Requests\Role\CreateRoleRequest;
use Vanguard\Http\Requests\Role\RemoveRoleRequest;
use Vanguard\Http\Requests\Role\UpdateRoleRequest;
use Vanguard\Http\Resources\RoleResource;
use Vanguard\Repositories\Role\RoleRepository;
use Vanguard\Repositories\User\UserRepository;
use Vanguard\Role;
class RolesController extends ApiController
{
public function __construct(private RoleRepository $roles)
{
$this->middleware('permission:roles.manage');
}
public function index(): \Illuminate\Http\Resources\Json\AnonymousResourceCollection
{
$roles = QueryBuilder::for(Role::class)
->allowedIncludes(RoleResource::allowedIncludes())
->allowedFilters(['name'])
->allowedSorts(['name', 'created_at'])
->defaultSort('created_at')
->paginate();
return RoleResource::collection($roles);
}
public function store(CreateRoleRequest $request): RoleResource
{
$role = $this->roles->create(
$request->only(['name', 'display_name', 'description'])
);
return new RoleResource($role);
}
public function show($id): RoleResource
{
$role = QueryBuilder::for(Role::where('id', $id))
->allowedIncludes(RoleResource::allowedIncludes())
->first();
return new RoleResource($role);
}
public function update(Role $role, UpdateRoleRequest $request): RoleResource
{
$input = collect($request->all());
$role = $this->roles->update(
$role->id,
$input->only(['name', 'display_name', 'description'])->toArray()
);
return new RoleResource($role);
}
public function destroy(Role $role, UserRepository $users, RemoveRoleRequest $request): JsonResponse
{
$userRole = $this->roles->findByName(Role::DEFAULT_USER_ROLE);
$users->switchRolesForUsers($role->id, $userRole->id);
$this->roles->delete($role->id);
Cache::flush();
return $this->respondWithSuccess();
}
}