{{ __('Welcome back') }}

{{ __('Log in to your :app account', ['app' => config('app.name')]) }}

{{-- Flash error from SocialLoginController. Without this, OAuth failures (missing client_id, Socialite exceptions, redirect URI mismatch on callback) silently bounced the user back to /login with the error stuffed in the session but never displayed — making the Microsoft / Google buttons look like they did nothing. Showing the message here makes the failure obvious. --}} @if(session('error')) @endif @if(session('status'))
{{ session('status') }}
@endif
@csrf {{-- Email --}}
@error('email')

{{ $message }}

@enderror
{{-- Password --}}
{{ __('Forgot password?') }}
{{-- Remember me --}}
{{-- reCAPTCHA — rendered ONLY when admin has both captcha_enabled=true AND filled in both keys (App\Support\Captcha::isEnabled()). The widget posts a `g-recaptcha-response` hidden field which FortifyServiceProvider::authenticateUsing() verifies against Google's /siteverify before the user lookup runs. --}} @if(\App\Support\Captcha::isEnabled())
@error('email') @if(str_contains($message, 'CAPTCHA') || str_contains($message, 'captcha'))

{{ $message }}

@endif @enderror @endif {{-- Submit --}} @php // Master kill-switch — Admin → Settings → Auth → "Allow social login". // When OFF, none of the per-provider toggles below render. $__socialEnabled = \App\Models\SystemSetting::get('social_login_enabled', 'true') === 'true'; $__registrationEnabled = \App\Models\SystemSetting::get('registration_enabled', 'true') === 'true'; // Per-provider toggles — same keys the admin Integrations page // writes. Default OFF (`'false'`) so a provider is only shown // when the admin has both flipped it ON AND saved OAuth keys. // Without per-provider gating customers were seeing the GitHub // button on /login even after disabling the GitHub integration // in admin — clicking it bounced to "GitHub sign-in is not // configured" because the keys were never entered. $__googleEnabled = \App\Models\SystemSetting::get('integration_google_enabled', 'false') === 'true'; $__microsoftEnabled = \App\Models\SystemSetting::get('integration_microsoft_enabled', 'false') === 'true'; $__githubEnabled = \App\Models\SystemSetting::get('integration_github_enabled', 'false') === 'true'; $__facebookEnabled = \App\Models\SystemSetting::get('integration_facebook_enabled', 'false') === 'true'; // Only render the social section if at least ONE provider is // actually live. Saves an empty "Or continue with" divider // when the admin disabled all of them. $__anySocial = $__socialEnabled && ($__googleEnabled || $__microsoftEnabled || $__githubEnabled || $__facebookEnabled); @endphp @if($__anySocial) {{-- Divider --}}
{{ __('Or continue with') }}
@if($__googleEnabled || $__microsoftEnabled) {{-- Social login buttons — 2 in a row when both Google + MS are on, else full-width --}}
@if($__googleEnabled) {{ __('Google') }} @endif @if($__microsoftEnabled) {{ __('Microsoft') }} @endif
@endif @if($__githubEnabled) {{ __('Continue with GitHub') }} @endif @if($__facebookEnabled) {{ __('Continue with Facebook') }} @endif @endif @if($__registrationEnabled) {{-- Register link --}}

{{ __("Don't have an account?") }} {{ __('Sign up') }}

@endif