Feature/phone register (#11)

Co-authored-by: ISMAIL MASSERAN <topaz@ISMAILs-Macbook.local>
Co-authored-by: ISMAIL MASSERAN <topaz@Mac.dlinkrouter.local>
Reviewed-on: #11
This commit was merged in pull request #11.
This commit is contained in:
2026-07-14 12:03:22 +08:00
parent 1e50e3d19f
commit b05e074456
160 changed files with 6497 additions and 759 deletions
@@ -0,0 +1,83 @@
<?php
namespace Modules\ExternalSystem\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Modules\ExternalSystem\Entities\ExternalSystem;
use Modules\ExternalSystem\Exceptions\ExternalSystemLaunchException;
use Modules\ExternalSystem\Services\ExternalSystemLaunchService;
use Modules\ExternalSystem\Transformers\ExternalSystemResource;
class ExternalSystemController extends Controller
{
public function __construct(
protected ExternalSystemLaunchService $launchService,
) {}
public function index(): JsonResponse
{
$systems = ExternalSystem::query()
->orderBy('sort_order')
->orderBy('name')
->get();
return response()->json([
'success' => true,
'data' => ExternalSystemResource::collection($systems),
]);
}
public function show(string $id): JsonResponse
{
$system = ExternalSystem::query()->find($id);
if (! $system) {
return response()->json([
'success' => false,
'message' => 'Sistem luaran tidak dijumpai.',
'data' => null,
], 404);
}
return response()->json([
'success' => true,
'data' => new ExternalSystemResource($system),
]);
}
public function launch(Request $request, string $code): JsonResponse
{
try {
$result = $this->launchService->launch($request->user(), $code);
return response()->json([
'success' => true,
'message' => 'SSO berjaya dijana.',
'data' => $result,
]);
} catch (ExternalSystemLaunchException $exception) {
return response()->json([
'success' => false,
'message' => $exception->getMessage(),
'code' => $exception->errorCode,
'data' => null,
], $exception->status);
} catch (\Throwable $exception) {
Log::error('Failed to launch external system SSO.', [
'code' => $code,
'user_id' => $request->user()?->id,
'message' => $exception->getMessage(),
]);
return response()->json([
'success' => false,
'message' => 'Gagal membuka sistem luaran. Sila cuba lagi.',
'code' => 'external_system_launch_failed',
'data' => null,
], 500);
}
}
}