First complete upload CasaDoc
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
<?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;
|
||||
|
||||
/**
|
||||
* @package Vanguard\Http\Controllers\Api\Users
|
||||
*/
|
||||
class PermissionsController extends ApiController
|
||||
{
|
||||
public function __construct(private PermissionRepository $permissions)
|
||||
{
|
||||
$this->middleware('permission:permissions.manage');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all system permissions.
|
||||
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new permission from request.
|
||||
* @param CreatePermissionRequest $request
|
||||
* @return PermissionResource
|
||||
*/
|
||||
public function store(CreatePermissionRequest $request)
|
||||
{
|
||||
$permission = $this->permissions->create(
|
||||
$request->only(['name', 'display_name', 'description'])
|
||||
);
|
||||
|
||||
return new PermissionResource($permission);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get info about specified permission.
|
||||
* @param Permission $permission
|
||||
* @return PermissionResource
|
||||
*/
|
||||
public function show(Permission $permission)
|
||||
{
|
||||
return new PermissionResource($permission);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update specified permission.
|
||||
* @param Permission $permission
|
||||
* @param UpdatePermissionRequest $request
|
||||
* @return PermissionResource
|
||||
*/
|
||||
public function update(Permission $permission, UpdatePermissionRequest $request)
|
||||
{
|
||||
$input = collect($request->all());
|
||||
|
||||
$permission = $this->permissions->update(
|
||||
$permission->id,
|
||||
$input->only(['name', 'display_name', 'description'])->toArray()
|
||||
);
|
||||
|
||||
return new PermissionResource($permission);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove specified permission from storage.
|
||||
* @param Permission $permission
|
||||
* @param RemovePermissionRequest $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function destroy(Permission $permission, RemovePermissionRequest $request)
|
||||
{
|
||||
$this->permissions->delete($permission->id);
|
||||
|
||||
return $this->respondWithSuccess();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\Http\Controllers\Api\Authorization;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
* @package Vanguard\Http\Controllers\Api
|
||||
*/
|
||||
class RolePermissionsController extends ApiController
|
||||
{
|
||||
public function __construct(private RoleRepository $roles)
|
||||
{
|
||||
$this->middleware('permission:permissions.manage');
|
||||
}
|
||||
|
||||
public function show(Role $role)
|
||||
{
|
||||
return PermissionResource::collection($role->cachedPermissions());
|
||||
}
|
||||
|
||||
/**
|
||||
* Update specified role.
|
||||
* @param Role $role
|
||||
* @param UpdateRolePermissionsRequest $request
|
||||
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
|
||||
*/
|
||||
public function update(Role $role, UpdateRolePermissionsRequest $request)
|
||||
{
|
||||
$this->roles->updatePermissions(
|
||||
$role->id,
|
||||
$request->permissions
|
||||
);
|
||||
|
||||
event(new PermissionsUpdated);
|
||||
|
||||
return PermissionResource::collection($role->cachedPermissions());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\Http\Controllers\Api\Authorization;
|
||||
|
||||
use Cache;
|
||||
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;
|
||||
|
||||
/**
|
||||
* @package Vanguard\Http\Controllers\Api\Users
|
||||
*/
|
||||
class RolesController extends ApiController
|
||||
{
|
||||
public function __construct(private RoleRepository $roles)
|
||||
{
|
||||
$this->middleware('permission:roles.manage');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all system roles with users count for each role.
|
||||
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$roles = QueryBuilder::for(Role::class)
|
||||
->allowedIncludes(RoleResource::allowedIncludes())
|
||||
->allowedFilters(['name'])
|
||||
->allowedSorts(['name', 'created_at'])
|
||||
->defaultSort('created_at')
|
||||
->paginate();
|
||||
|
||||
return RoleResource::collection($roles);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new role from the request.
|
||||
* @param CreateRoleRequest $request
|
||||
* @return RoleResource
|
||||
*/
|
||||
public function store(CreateRoleRequest $request)
|
||||
{
|
||||
$role = $this->roles->create(
|
||||
$request->only(['name', 'display_name', 'description'])
|
||||
);
|
||||
|
||||
return new RoleResource($role);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return info about specified role.
|
||||
* @param $id
|
||||
* @return RoleResource
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$role = QueryBuilder::for(Role::where('id', $id))
|
||||
->allowedIncludes(RoleResource::allowedIncludes())
|
||||
->first();
|
||||
|
||||
return new RoleResource($role);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update specified role.
|
||||
* @param Role $role
|
||||
* @param UpdateRoleRequest $request
|
||||
* @return RoleResource
|
||||
*/
|
||||
public function update(Role $role, UpdateRoleRequest $request)
|
||||
{
|
||||
$input = collect($request->all());
|
||||
|
||||
$role = $this->roles->update(
|
||||
$role->id,
|
||||
$input->only(['name', 'display_name', 'description'])->toArray()
|
||||
);
|
||||
|
||||
return new RoleResource($role);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove specified role (if role is removable).
|
||||
* @param Role $role
|
||||
* @param UserRepository $users
|
||||
* @param RemoveRoleRequest $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function destroy(Role $role, UserRepository $users, RemoveRoleRequest $request)
|
||||
{
|
||||
$userRole = $this->roles->findByName('User');
|
||||
|
||||
$users->switchRolesForUsers($role->id, $userRole->id);
|
||||
|
||||
$this->roles->delete($role->id);
|
||||
|
||||
Cache::flush();
|
||||
|
||||
return $this->respondWithSuccess();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user