Files
breadcrumb-the-shire/pages/api/v1/roles/show($id).php
2026-03-04 15:56:58 +01:00

67 lines
2.2 KiB
PHP

<?php
use MintyPHP\Http\ApiAuth;
use MintyPHP\Http\ApiBootstrap;
use MintyPHP\Http\ApiResponse;
use MintyPHP\Repository\Access\RolePermissionRepository;
ApiBootstrap::init();
$request = requestInput();
$uuid = trim((string) ($id ?? ''));
if ($uuid === '') {
ApiResponse::notFound();
}
$method = $request->method();
if ($method === 'GET') {
ApiResponse::requireAbility(\MintyPHP\Service\Access\OperationsAuthorizationPolicy::ABILITY_API_ROLES_VIEW);
$role = app(\MintyPHP\Service\Directory\DirectoryServicesFactory::class)->createRoleService()->findByUuid($uuid);
if (!$role) {
ApiResponse::notFound();
}
$roleId = (int) ($role['id'] ?? 0);
$permissionKeys = [];
if ($roleId > 0) {
$permissionKeys = app(RolePermissionRepository::class)->listPermissionKeysByRoleIds([$roleId]);
sort($permissionKeys);
}
ApiResponse::success([
'data' => [
'uuid' => $role['uuid'] ?? '',
'description' => $role['description'] ?? '',
'code' => $role['code'] ?? '',
'active' => (bool) ($role['active'] ?? 1),
'permission_keys' => $permissionKeys,
'created' => $role['created'] ?? '',
'modified' => $role['modified'] ?? '',
],
]);
}
if ($method === 'PUT' || $method === 'PATCH') {
ApiResponse::requireAbility(\MintyPHP\Service\Access\OperationsAuthorizationPolicy::ABILITY_API_ROLES_UPDATE);
$role = app(\MintyPHP\Service\Directory\DirectoryServicesFactory::class)->createRoleService()->findByUuid($uuid);
if (!$role) {
ApiResponse::notFound();
}
$roleId = (int) ($role['id'] ?? 0);
$input = $request->bodyAll();
$result = app(\MintyPHP\Service\Directory\DirectoryServicesFactory::class)->createRoleService()->updateFromAdmin($roleId, $input, ApiAuth::userId());
ApiResponse::fromServiceResult($result);
}
if ($method === 'DELETE') {
ApiResponse::requireAbility(\MintyPHP\Service\Access\OperationsAuthorizationPolicy::ABILITY_API_ROLES_DELETE);
$result = app(\MintyPHP\Service\Directory\DirectoryServicesFactory::class)->createRoleService()->deleteByUuid($uuid);
ApiResponse::fromServiceResult($result);
}
ApiResponse::methodNotAllowed();