Require a setup_token query parameter to access the registration page when no users exist, preventing admin hijacking on new instances.
124 lines
No EOL
7.3 KiB
PHP
124 lines
No EOL
7.3 KiB
PHP
<x-layout-simple>
|
|
<section class="bg-gray-50 dark:bg-base">
|
|
<div class="flex flex-col items-center justify-center px-6 py-8 mx-auto md:h-screen lg:py-0">
|
|
<div class="w-full max-w-md space-y-8">
|
|
<div class="text-center space-y-2">
|
|
<div class="flex justify-center">
|
|
<img src="https://mapledeploy.ca/api/logo/lockup?height=80" alt="MapleDeploy" class="h-12 dark:hidden" />
|
|
<img src="https://mapledeploy.ca/api/logo/lockup?height=80&dark=true" alt="MapleDeploy" class="hidden h-12 dark:block" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="space-y-6">
|
|
@if (!empty($setup_pending))
|
|
{{-- MapleDeploy: setup token required but not provided --}}
|
|
<div class="mb-6 p-4 bg-warning/10 border border-warning rounded-lg">
|
|
<div class="flex gap-3">
|
|
<svg class="size-5 text-warning flex-shrink-0 mt-0.5" xmlns="http://www.w3.org/2000/svg"
|
|
viewBox="0 0 20 20" fill="currentColor">
|
|
<path fill-rule="evenodd"
|
|
d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z"
|
|
clip-rule="evenodd" />
|
|
</svg>
|
|
<div>
|
|
<p class="font-bold text-warning">Setup pending</p>
|
|
<p class="text-sm dark:text-white text-black">
|
|
Initial setup has not been completed. Please use the setup link from your
|
|
<a href="https://app.mapledeploy.ca" class="underline hover:text-warning">MapleDeploy dashboard</a>.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@else
|
|
@if (session('status'))
|
|
<div class="mb-6 p-4 bg-success/10 border border-success rounded-lg">
|
|
<p class="text-sm text-success">{{ session('status') }}</p>
|
|
</div>
|
|
@endif
|
|
|
|
@if (session('error'))
|
|
<div class="mb-6 p-4 bg-error/10 border border-error rounded-lg">
|
|
<p class="text-sm text-error">{{ session('error') }}</p>
|
|
</div>
|
|
@endif
|
|
|
|
@if ($errors->any())
|
|
<div class="mb-6 p-4 bg-error/10 border border-error rounded-lg">
|
|
@foreach ($errors->all() as $error)
|
|
<p class="text-sm text-error">{{ $error }}</p>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
|
|
<form action="/login" method="POST" class="flex flex-col gap-4">
|
|
@csrf
|
|
@env('local')
|
|
<x-forms.input value="test@example.com" type="email" autocomplete="email" name="email" required
|
|
label="{{ __('input.email') }}" />
|
|
<x-forms.input value="password" type="password" autocomplete="current-password" name="password"
|
|
required label="{{ __('input.password') }}" />
|
|
@else
|
|
<x-forms.input type="email" name="email" autocomplete="email" required
|
|
label="{{ __('input.email') }}" />
|
|
<x-forms.input type="password" name="password" autocomplete="current-password" required
|
|
label="{{ __('input.password') }}" />
|
|
@endenv
|
|
|
|
<div class="flex items-center justify-between">
|
|
<a href="/forgot-password"
|
|
class="text-sm dark:text-neutral-400 hover:text-coollabs dark:hover:text-warning hover:underline transition-colors">
|
|
{{ __('auth.forgot_password_link') }}
|
|
</a>
|
|
</div>
|
|
|
|
<x-forms.button class="w-full justify-center py-3 box-boarding" type="submit" isHighlighted>
|
|
{{ __('auth.login') }}
|
|
</x-forms.button>
|
|
</form>
|
|
|
|
@if ($is_registration_enabled)
|
|
<div class="relative my-6">
|
|
<div class="absolute inset-0 flex items-center">
|
|
<div class="w-full border-t border-neutral-300 dark:border-coolgray-400"></div>
|
|
</div>
|
|
<div class="relative flex justify-center text-sm">
|
|
<span class="px-2 bg-gray-50 dark:bg-base text-neutral-500 dark:text-neutral-400 ">
|
|
Don't have an account?
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<a href="/register"
|
|
class="block w-full text-center py-3 px-4 rounded-lg border border-neutral-300 dark:border-coolgray-400 font-medium hover:border-coollabs dark:hover:border-warning transition-colors">
|
|
{{ __('auth.register_now') }}
|
|
</a>
|
|
@else
|
|
<div class="mt-6 text-center text-sm text-neutral-500 dark:text-neutral-400">
|
|
{{ __('auth.registration_disabled') }}
|
|
</div>
|
|
@endif
|
|
|
|
@if ($enabled_oauth_providers->isNotEmpty())
|
|
<div class="relative my-6">
|
|
<div class="absolute inset-0 flex items-center">
|
|
<div class="w-full border-t border-neutral-300 dark:border-coolgray-400"></div>
|
|
</div>
|
|
<div class="relative flex justify-center text-sm">
|
|
<span class="px-2 bg-gray-50 dark:bg-base text-neutral-500 dark:text-neutral-400">or
|
|
continue with</span>
|
|
</div>
|
|
</div>
|
|
<div class="flex flex-col gap-3">
|
|
@foreach ($enabled_oauth_providers as $provider_setting)
|
|
<x-forms.button class="w-full justify-center" type="button"
|
|
onclick="document.location.href='/auth/{{ $provider_setting->provider }}/redirect'">
|
|
{{ __("auth.login.$provider_setting->provider") }}
|
|
</x-forms.button>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
@endif {{-- end setup_pending --}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</x-layout-simple>
|