2023-03-14 15:22:52 +00:00
|
|
|
{{ template "header" .}}
|
|
|
|
<div class="py-10">
|
|
|
|
<header>
|
|
|
|
|
2023-05-27 11:58:08 +00:00
|
|
|
<h1 class="text-2xl font-bold leading-tight text-slate-700 dark:text-slate-300">
|
2023-03-14 15:22:52 +00:00
|
|
|
{{ .title }}
|
|
|
|
</h1>
|
|
|
|
|
|
|
|
</header>
|
|
|
|
<main class="mt-4">
|
2024-04-02 19:27:15 +00:00
|
|
|
{{ if .disableSignup }}
|
2023-09-22 15:26:09 +00:00
|
|
|
<p class="italic">{{ .locale.Tr "auth.signup-disabled" }}</p>
|
2023-03-14 15:22:52 +00:00
|
|
|
{{ else }}
|
2024-10-07 21:56:32 +00:00
|
|
|
<div class="grid sm:grid-cols-2">
|
|
|
|
<div class="">
|
|
|
|
<div class="mt-8 sm:w-full sm:max-w-md">
|
|
|
|
<div class="bg-white dark:bg-gray-900 rounded-md border border-1 border-gray-200 dark:border-gray-700 py-8 px-4 shadow sm:rounded-lg sm:px-10">
|
2023-05-06 16:53:59 +00:00
|
|
|
|
2024-10-07 21:56:32 +00:00
|
|
|
{{ if not .disableForm }}
|
|
|
|
<form class="space-y-6" method="post">
|
|
|
|
<div>
|
|
|
|
<label for="username" class="block text-sm font-medium text-slate-700 dark:text-slate-300"> {{ .locale.Tr "auth.username" }} </label>
|
|
|
|
<div class="mt-1">
|
|
|
|
<input id="username" name="username" type="text" required class="dark:bg-gray-800 appearance-none block w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md shadow-sm placeholder-gray-600 dark:placeholder-gray-400 focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm">
|
|
|
|
</div>
|
2023-03-14 15:22:52 +00:00
|
|
|
</div>
|
|
|
|
|
2024-10-07 21:56:32 +00:00
|
|
|
<div class="mt-8">
|
|
|
|
<label for="password" class="block text-sm font-medium text-slate-700 dark:text-slate-300"> {{ .locale.Tr "auth.password" }} </label>
|
|
|
|
<div class="mt-1">
|
|
|
|
<input id="password" name="password" type="password" autocomplete="current-password" required class="dark:bg-gray-800 appearance-none block w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md shadow-sm placeholder-gray-600 dark:placeholder-gray-400 focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm">
|
|
|
|
</div>
|
2023-03-14 15:22:52 +00:00
|
|
|
</div>
|
2024-10-07 21:56:32 +00:00
|
|
|
{{ if .isLoginPage }}
|
|
|
|
<div class="flex">
|
|
|
|
<div class="flex-auto">
|
|
|
|
<button type="submit" class="inline-flex items-center px-4 py-2 border border-transparent border-gray-200 dark:border-gray-700 text-sm font-medium rounded-md shadow-sm text-white dark:text-white bg-primary-500 hover:bg-primary-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500">{{ .locale.Tr "auth.login" }}</button>
|
|
|
|
</div>
|
|
|
|
{{ if not .DisableSignup }}
|
|
|
|
<span class="float-right text-sm py-2 underline"><a href="{{ $.c.ExternalUrl }}/register">{{ .locale.Tr "auth.register-instead" }} →</a></span>
|
|
|
|
{{ end }}
|
2023-03-14 15:22:52 +00:00
|
|
|
</div>
|
2024-10-07 21:56:32 +00:00
|
|
|
{{ else }}
|
|
|
|
<div class="flex">
|
|
|
|
<div class="flex-auto">
|
|
|
|
<button type="submit" class="inline-flex items-center px-4 py-2 border border-transparent border-gray-200 dark:border-gray-700 text-sm font-medium rounded-md shadow-sm text-white dark:text-white bg-primary-500 hover:bg-primary-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500">{{ .locale.Tr "auth.signup" }}</button>
|
|
|
|
</div>
|
|
|
|
<span class="float-right text-sm py-2 underline"><a href="{{ $.c.ExternalUrl }}/login">{{ .locale.Tr "auth.login-instead" }} →</a></span>
|
2023-03-14 15:22:52 +00:00
|
|
|
|
2024-10-07 21:56:32 +00:00
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{ .csrfHtml }}
|
|
|
|
</form>
|
2023-03-14 15:22:52 +00:00
|
|
|
{{ end }}
|
2024-10-07 21:56:32 +00:00
|
|
|
{{ if or .githubOauth .gitlabOauth .giteaOauth .oidcOauth }}
|
|
|
|
{{ if not .disableForm }}
|
|
|
|
<div class="relative my-4">
|
|
|
|
<div class="absolute inset-0 flex items-center" aria-hidden="true">
|
|
|
|
<div class="w-full border-t border-gray-200 dark:border-gray-700"></div>
|
|
|
|
</div>
|
2023-05-06 16:53:59 +00:00
|
|
|
</div>
|
2024-10-07 21:56:32 +00:00
|
|
|
<br />
|
|
|
|
{{ end }}
|
|
|
|
<div>
|
|
|
|
{{ if .githubOauth }}
|
|
|
|
<a href="{{ $.c.ExternalUrl }}/oauth/github" class="block w-full mb-2 text-center whitespace-nowrap text-slate-700 dark:text-slate-300{{ if .syncReposFromFS }} text-slate-500 cursor-not-allowed {{ end }}rounded border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 px-2.5 py-2 text-xs font-medium text-gray-700 dark:text-white shadow-sm hover:bg-gray-100 dark:hover:bg-gray-700 hover:border-gray-500 hover:text-slate-700 dark:hover:text-slate-300 focus:outline-none focus:ring-1 focus:border-primary-500 focus:ring-primary-500 leading-3">
|
|
|
|
{{ .locale.Tr "auth.oauth" "GitHub"}}
|
|
|
|
</a>
|
|
|
|
{{ end }}
|
|
|
|
{{ if .gitlabOauth }}
|
|
|
|
<a href="{{ $.c.ExternalUrl }}/oauth/gitlab" class="block w-full mb-2 text-center whitespace-nowrap text-slate-700 dark:text-slate-300{{ if .syncReposFromFS }} text-slate-500 cursor-not-allowed {{ end }}rounded border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 px-2.5 py-2 text-xs font-medium text-gray-700 dark:text-white shadow-sm hover:bg-gray-100 dark:hover:bg-gray-700 hover:border-gray-500 hover:text-slate-700 dark:hover:text-slate-300 focus:outline-none focus:ring-1 focus:border-primary-500 focus:ring-primary-500 leading-3">
|
|
|
|
{{ .locale.Tr "auth.oauth" .c.GitlabName}}
|
|
|
|
</a>
|
|
|
|
{{ end }}
|
|
|
|
{{ if .giteaOauth }}
|
|
|
|
<a href="{{ $.c.ExternalUrl }}/oauth/gitea" class="block w-full mb-2 text-center whitespace-nowrap text-slate-700 dark:text-slate-300{{ if .syncReposFromFS }} text-slate-500 cursor-not-allowed {{ end }}rounded border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 px-2.5 py-2 text-xs font-medium text-gray-700 dark:text-white shadow-sm hover:bg-gray-100 dark:hover:bg-gray-700 hover:border-gray-500 hover:text-slate-700 dark:hover:text-slate-300 focus:outline-none focus:ring-1 focus:border-primary-500 focus:ring-primary-500 leading-3">
|
|
|
|
{{ .locale.Tr "auth.oauth" .c.GiteaName }}
|
|
|
|
</a>
|
|
|
|
{{ end }}
|
|
|
|
{{ if .oidcOauth }}
|
|
|
|
<a href="{{ $.c.ExternalUrl }}/oauth/openid-connect" class="block w-full mb-2 text-center whitespace-nowrap text-slate-700 dark:text-slate-300{{ if .syncReposFromFS }} text-slate-500 cursor-not-allowed {{ end }}rounded border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 px-2.5 py-2 text-xs font-medium text-gray-700 dark:text-white shadow-sm hover:bg-gray-100 dark:hover:bg-gray-700 hover:border-gray-500 hover:text-slate-700 dark:hover:text-slate-300 focus:outline-none focus:ring-1 focus:border-primary-500 focus:ring-primary-500 leading-3">
|
|
|
|
Continue with OpenID account
|
|
|
|
</a>
|
|
|
|
{{ end }}
|
2023-04-17 20:13:19 +00:00
|
|
|
</div>
|
2023-05-06 16:53:59 +00:00
|
|
|
{{ end }}
|
2024-10-07 21:56:32 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2024-11-02 00:06:14 +00:00
|
|
|
{{ if and (.isLoginPage) (not .disableForm) }}
|
2024-10-07 21:56:32 +00:00
|
|
|
<div class="">
|
|
|
|
<div class="mt-8 sm:w-full sm:max-w-md">
|
|
|
|
<div class="bg-white dark:bg-gray-900 rounded-md border border-1 border-gray-200 dark:border-gray-700 py-8 px-4 shadow sm:rounded-lg sm:px-10 ">
|
|
|
|
<p class="block text-sm font-medium text-slate-700 dark:text-slate-300">{{ .locale.Tr "auth.mfa.passkey" }}</p>
|
|
|
|
<div class="flex items-center justify-center">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-14">
|
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z" />
|
|
|
|
</svg>
|
2023-04-17 20:13:19 +00:00
|
|
|
</div>
|
2024-10-07 21:56:32 +00:00
|
|
|
<div class="flex items-center justify-center mt-4">
|
|
|
|
<form id="webauthn">
|
|
|
|
{{ .csrfHtml }}
|
|
|
|
<button type="button" id="login-passkey-button" class="inline-flex items-center px-4 py-2 border border-transparent border-gray-200 dark:border-gray-700 text-sm font-medium rounded-md shadow-sm text-white dark:text-white bg-primary-500 hover:bg-primary-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500">{{ .locale.Tr "auth.mfa.login-with-passkey" }}</button>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
<div class="flex items-center justify-center">
|
|
|
|
<p id="login-passkey-wait" class="hidden text-sm font-medium items-center text-slate-700 dark:text-slate-300">{{ .locale.Tr "auth.mfa.waiting-for-passkey-input" }}</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
2023-03-14 15:22:52 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2024-10-07 21:56:32 +00:00
|
|
|
{{ end }}
|
2023-03-14 15:22:52 +00:00
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
</main>
|
|
|
|
</div>
|
|
|
|
|
2024-10-07 21:56:32 +00:00
|
|
|
<script type="module" src="{{ asset "webauthn.ts" }}"></script>
|
|
|
|
|
2023-03-14 15:22:52 +00:00
|
|
|
{{ template "footer" .}}
|