112 lines
3.4 KiB
PHP
112 lines
3.4 KiB
PHP
<?php
|
|
|
|
namespace Modules\UserManager\Http\Controllers\Users\Api;
|
|
|
|
use App\Http\Controllers\ApiController;
|
|
use Exception;
|
|
use Modules\UserManager\Http\Requests\Role\StoreRoleRequest;
|
|
use Modules\UserManager\Http\Requests\Role\UpdateRoleRequest;
|
|
use Spatie\Permission\Models\Role;
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
|
|
class RoleController extends ApiController
|
|
{
|
|
public function index()
|
|
: JsonResponse
|
|
{
|
|
$roles = Role::with(['permissions'])->get();
|
|
|
|
return $this->sendResponse($roles, 'Roles retrieved successfully.');
|
|
}
|
|
|
|
public function show($role)
|
|
: JsonResponse
|
|
{
|
|
$role = Role::with(['permissions'])->find($role);
|
|
if (is_null($role)) {
|
|
return $this->sendError('Role not found.');
|
|
}
|
|
|
|
return $this->sendResponse($role, 'Role retrieved successfully.');
|
|
}
|
|
|
|
public function store(StoreRoleRequest $request)
|
|
: JsonResponse
|
|
{
|
|
// Validate the request...
|
|
$validated = $request->validated();
|
|
|
|
// Store the Role...
|
|
if ($validated) {
|
|
try {
|
|
if(!isset($validated['guard_name'])){
|
|
$validated['guard_name'] = 'default';
|
|
}
|
|
|
|
$role = Role::create($validated);
|
|
|
|
$permissions = $request->input('permissions');
|
|
|
|
if (!empty($permissions)) {
|
|
$role = Role::find($role->id);
|
|
$role->syncPermissions($permissions);
|
|
}
|
|
|
|
|
|
|
|
return $this->sendResponse($role, 'Role created successfully.');
|
|
} catch (Exception $e) {
|
|
return $this->sendError($e->getMessage(), $e->getCode());
|
|
}
|
|
}
|
|
|
|
return $this->sendError('Role created failed.', 400);
|
|
}
|
|
|
|
public function update(UpdateRoleRequest $request, Role $role)
|
|
: JsonResponse
|
|
{
|
|
// Validate the request...
|
|
$validated = $request->validated();
|
|
|
|
// Store the Role...
|
|
if ($validated) {
|
|
try {
|
|
if(!isset($validated['guard_name'])){
|
|
$validated['guard_name'] = 'default';
|
|
}
|
|
|
|
$role->update($validated);
|
|
|
|
$permissions = $request->input('permissions');
|
|
if (!empty($permissions)) {
|
|
$role->syncPermissions($permissions);
|
|
}
|
|
|
|
return $this->sendResponse($role, 'Role updated successfully.');
|
|
} catch (Exception $e) {
|
|
return $this->sendError($e->getMessage(), $e->getCode());
|
|
}
|
|
}
|
|
|
|
return $this->sendError('Role updated failed.', 400);
|
|
}
|
|
|
|
public function destroy($id)
|
|
: JsonResponse
|
|
{
|
|
$role = Role::find($id);
|
|
if (is_null($role)) {
|
|
return $this->sendError('Role not found.');
|
|
}
|
|
|
|
try {
|
|
$role->delete();
|
|
|
|
return $this->sendResponse($role, 'Role deleted successfully.');
|
|
} catch (Exception $e) {
|
|
return $this->sendError($e->getMessage(), $e->getCode());
|
|
}
|
|
}
|
|
}
|