- Introduced `ddev` configuration for Laravel-based SAML SSO setup. - Added detailed technical specifications for SAML 2.0 integration, including endpoints, flows, and cryptographic signing. - Created extensive unit tests to validate `SamlIdpController` and `SamlIdpService` functionalities. - Enhanced metadata generation, SAML request parsing, and cryptographic signing of responses. - Implemented models, services, and tests to standardize IdP interactions with Service Providers.
81 lines
3.6 KiB
PHP
81 lines
3.6 KiB
PHP
<x-layouts::auth :title="__('Log in')">
|
|
<div class="flex flex-col md:flex-row gap-6 w-full md:justify-between items-start text-blue-950">
|
|
<div class="flex justify-center flex-col gap-6 ml-10 mt-40">
|
|
<div class="flex flex-col">
|
|
<p class="text-6xl font-black">Welcome Back !</p>
|
|
<div class="mt-4 ml-2">
|
|
<p class="text-lg">Login to account and continue to</p>
|
|
<span class="font-bold">{{config('app.name')}}</span>
|
|
</div>
|
|
</div>
|
|
<!-- Session Status -->
|
|
<x-auth-session-status :status="session('status')"/>
|
|
<x-auth-session-status class="alert-error!" :status="implode('\n', $errors->all())"/>
|
|
</div>
|
|
<x-shared.card class="w-md p-6 flex gap-6 flex-col">
|
|
<div class="rounded-full relative bg-blue-100 text-blue-600 size-15 mx-auto p-4 mt-6">
|
|
<span
|
|
class="motion-safe:animate-[ping_2s_ease-in-out_infinite] absolute inset-0 inline-flex h-full w-full rounded-full bg-blue-400 opacity-75"></span>
|
|
|
|
<x-mary-icon name="lucide.lock-keyhole" class="w-7 h-7 relative z-10"/>
|
|
</div>
|
|
<x-auth-header :title="__('Log in')"
|
|
:description="__('Enter your credentials to access your account.')"/>
|
|
<form method="POST" action="{{ route('login.store') }}" class="flex flex-col gap-6">
|
|
@csrf
|
|
|
|
<!-- Email Address -->
|
|
<x-mary-input
|
|
name="email"
|
|
:label="__('Email address')"
|
|
:value="old('email')"
|
|
type="email"
|
|
required
|
|
autofocus
|
|
autocomplete="email"
|
|
placeholder="email@example.com"
|
|
/>
|
|
|
|
<!-- Password -->
|
|
<div class="relative">
|
|
<x-mary-password
|
|
right
|
|
name="password"
|
|
:label="__('Password')"
|
|
type="password"
|
|
required
|
|
autocomplete="current-password"
|
|
:placeholder="__('Password')"
|
|
viewable
|
|
/>
|
|
|
|
@if (Route::has('password.request'))
|
|
<a class="absolute top-0 text-sm inset-e-0 hover:text-blue-500"
|
|
href="{{route('password.request')}}"
|
|
wire:navigate>
|
|
{{ __('Forgot your password?') }}
|
|
</a>
|
|
@endif
|
|
</div>
|
|
|
|
<!-- Remember Me -->
|
|
<x-mary-checkbox name="remember" :label="__('Remember me')" :checked="old('remember')"/>
|
|
|
|
<div class="flex items-center justify-end">
|
|
<x-mary-button type="submit" class="w-full btn-primary" data-test="login-button">
|
|
{{ __('Log in') }}
|
|
</x-mary-button>
|
|
</div>
|
|
</form>
|
|
|
|
@if (Route::has('register'))
|
|
<div class="space-x-1 text-sm text-center rtl:space-x-reverse text-zinc-600 dark:text-zinc-400">
|
|
<span>{{ __('Don\'t have an account?') }}</span>
|
|
<a href="{{route('register')}}" class="font-bold text-gray-900 hover:text-blue-500"
|
|
wire:navigate>{{ __('Sign up') }}</a>
|
|
</div>
|
|
@endif
|
|
</x-shared.card>
|
|
</div>
|
|
</x-layouts::auth>
|