Initial commit: OAuth IAM Laravel application

Laravel-based OAuth/IAM service with Passport, Vue 3 frontend, and
Docker Compose setup for local and production deployment.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 01:02:41 +02:00
commit c2b5291a74
174 changed files with 29318 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>OAuth2 Server</title>
<script>
// Aplica el tema ANTES del primer paint (evita el flash del tema equivocado).
// Prioridad: preferencia guardada > prefers-color-scheme del SO.
(function () {
var stored = localStorage.getItem('theme');
var dark = stored ? stored === 'dark' : window.matchMedia('(prefers-color-scheme: dark)').matches;
document.documentElement.classList.toggle('dark', dark);
})();
</script>
@vite(['resources/scss/app.scss', 'resources/js/app.ts'])
</head>
<body>
<div id="app"></div>
@php
$sessionLocale = app()->getLocale();
// La SPA trae diccionario propio para "es", "en" y "ca".
$frontendLocale = in_array($sessionLocale, ['es', 'en', 'ca'], true) ? $sessionLocale : 'es';
@endphp
<script>
// Locale de sesión real (es/en/ca) — para preseleccionar el selector de idioma.
window.__SESSION_LOCALE__ = @json($sessionLocale);
window.__LOCALE__ = @json($frontendLocale);
</script>
@isset($authToken)
@php
$oauthAuthorizePayload = [
'authToken' => $authToken,
'csrfToken' => csrf_token(),
'client' => [
'id' => $client->id,
'name' => $client->name,
],
'scopes' => collect($scopes)->map(fn ($scope) => [
'id' => $scope->id,
'description' => $scope->description,
])->values(),
'user' => [
'name' => $user->name,
'email' => $user->email,
],
];
@endphp
<script>
window.__OAUTH_AUTHORIZE__ = @json($oauthAuthorizePayload);
</script>
@endisset
</body>
</html>