54 lines
1.3 KiB
PHP
54 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
abstract class Controller
|
|
{
|
|
protected function success(mixed $data = null, string $message = 'Success', int $code = 200): JsonResponse
|
|
{
|
|
return response()->json([
|
|
'success' => true,
|
|
'data' => $data,
|
|
'message' => $message,
|
|
], $code);
|
|
}
|
|
|
|
protected function created(mixed $data = null, string $message = 'Created'): JsonResponse
|
|
{
|
|
return $this->success($data, $message, 201);
|
|
}
|
|
|
|
protected function error(string $message, int $code = 400, array $errors = []): JsonResponse
|
|
{
|
|
$response = [
|
|
'success' => false,
|
|
'message' => $message,
|
|
];
|
|
|
|
if (!empty($errors)) {
|
|
$response['errors'] = $errors;
|
|
}
|
|
|
|
return response()->json($response, $code);
|
|
}
|
|
|
|
protected function unauthorized(string $message = 'Unauthorized'): JsonResponse
|
|
{
|
|
return $this->error($message, 401);
|
|
}
|
|
|
|
protected function forbidden(string $message = 'Forbidden'): JsonResponse
|
|
{
|
|
return $this->error($message, 403);
|
|
}
|
|
|
|
protected function notFound(string $message = 'Resource not found'): JsonResponse
|
|
{
|
|
return $this->error($message, 404);
|
|
}
|
|
}
|