|
@@ -7,13 +7,25 @@ use App\Http\Resources\UserDependentResource;
|
|
|
use App\Services\UserDependentService;
|
|
use App\Services\UserDependentService;
|
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Request;
|
|
|
|
|
+use Illuminate\Support\Facades\Auth;
|
|
|
|
|
|
|
|
class UserDependentController extends Controller
|
|
class UserDependentController extends Controller
|
|
|
{
|
|
{
|
|
|
public function __construct(protected UserDependentService $service) {}
|
|
public function __construct(protected UserDependentService $service) {}
|
|
|
|
|
|
|
|
|
|
+ private function deniesAccessToUser(int $userId): bool
|
|
|
|
|
+ {
|
|
|
|
|
+ $user = Auth::user();
|
|
|
|
|
+
|
|
|
|
|
+ return $user?->isAssociado() && $user->id !== $userId;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public function indexByUser(int $userId): JsonResponse
|
|
public function indexByUser(int $userId): JsonResponse
|
|
|
{
|
|
{
|
|
|
|
|
+ if ($this->deniesAccessToUser($userId)) {
|
|
|
|
|
+ return $this->errorResponse(message: __('messages.unauthorized'), code: 403);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
$items = $this->service->getAllByUser($userId);
|
|
$items = $this->service->getAllByUser($userId);
|
|
|
return $this->successResponse(payload: UserDependentResource::collection($items));
|
|
return $this->successResponse(payload: UserDependentResource::collection($items));
|
|
|
}
|
|
}
|
|
@@ -34,7 +46,7 @@ class UserDependentController extends Controller
|
|
|
|
|
|
|
|
public function store(UserDependentRequest $request): JsonResponse
|
|
public function store(UserDependentRequest $request): JsonResponse
|
|
|
{
|
|
{
|
|
|
- $item = $this->service->create($request->validated());
|
|
|
|
|
|
|
+ $item = $this->service->create($request->validated(), $request->file('document'));
|
|
|
return $this->successResponse(
|
|
return $this->successResponse(
|
|
|
payload: new UserDependentResource($item),
|
|
payload: new UserDependentResource($item),
|
|
|
message: __('messages.created'),
|
|
message: __('messages.created'),
|
|
@@ -45,11 +57,30 @@ class UserDependentController extends Controller
|
|
|
public function show(int $id): JsonResponse
|
|
public function show(int $id): JsonResponse
|
|
|
{
|
|
{
|
|
|
$item = $this->service->findById($id);
|
|
$item = $this->service->findById($id);
|
|
|
|
|
+
|
|
|
|
|
+ if (!$item) {
|
|
|
|
|
+ return $this->errorResponse(message: __('messages.not_found'), code: 404);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($this->deniesAccessToUser($item->responsible_user_id)) {
|
|
|
|
|
+ return $this->errorResponse(message: __('messages.unauthorized'), code: 403);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return $this->successResponse(payload: new UserDependentResource($item));
|
|
return $this->successResponse(payload: new UserDependentResource($item));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function update(UserDependentRequest $request, int $id): JsonResponse
|
|
public function update(UserDependentRequest $request, int $id): JsonResponse
|
|
|
{
|
|
{
|
|
|
|
|
+ $current = $this->service->findById($id);
|
|
|
|
|
+
|
|
|
|
|
+ if (!$current) {
|
|
|
|
|
+ return $this->errorResponse(message: __('messages.not_found'), code: 404);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($this->deniesAccessToUser($current->responsible_user_id)) {
|
|
|
|
|
+ return $this->errorResponse(message: __('messages.unauthorized'), code: 403);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
$item = $this->service->update($id, $request->validated());
|
|
$item = $this->service->update($id, $request->validated());
|
|
|
return $this->successResponse(
|
|
return $this->successResponse(
|
|
|
payload: new UserDependentResource($item),
|
|
payload: new UserDependentResource($item),
|
|
@@ -59,6 +90,16 @@ class UserDependentController extends Controller
|
|
|
|
|
|
|
|
public function destroy(int $id): JsonResponse
|
|
public function destroy(int $id): JsonResponse
|
|
|
{
|
|
{
|
|
|
|
|
+ $current = $this->service->findById($id);
|
|
|
|
|
+
|
|
|
|
|
+ if (!$current) {
|
|
|
|
|
+ return $this->errorResponse(message: __('messages.not_found'), code: 404);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($this->deniesAccessToUser($current->responsible_user_id)) {
|
|
|
|
|
+ return $this->errorResponse(message: __('messages.unauthorized'), code: 403);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
$this->service->delete($id);
|
|
$this->service->delete($id);
|
|
|
return $this->successResponse(message: __('messages.deleted'), code: 204);
|
|
return $this->successResponse(message: __('messages.deleted'), code: 204);
|
|
|
}
|
|
}
|