mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-23 23:14:32 +02:00
Merge branch 'main' into fix-24635
This commit is contained in:
59 files changed
+124566
-1911
No files matched your search
@@ -4,6 +4,9 @@ import {GET, POST} from '../modules/fetch.ts';
|
||||
|
||||
const {appSubUrl} = window.config;
|
||||
|
||||
/** One of the possible values for the `data-webauthn-error-msg` attribute on the webauthn error message element */
|
||||
type ErrorType = 'general' | 'insecure' | 'browser' | 'unable-to-process' | 'duplicated' | 'unknown';
|
||||
|
||||
export async function initUserAuthWebAuthn() {
|
||||
const elPrompt = document.querySelector('.user.signin.webauthn-prompt');
|
||||
const elSignInPasskeyBtn = document.querySelector('.signin-passkey');
|
||||
@@ -11,7 +14,8 @@ export async function initUserAuthWebAuthn() {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!detectWebAuthnSupport()) {
|
||||
const errorType = detectWebAuthnSupport();
|
||||
if (errorType) {
|
||||
if (elSignInPasskeyBtn) hideElem(elSignInPasskeyBtn);
|
||||
return;
|
||||
}
|
||||
@@ -177,7 +181,7 @@ async function webauthnRegistered(newCredential: any) { // TODO: Credential type
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
function webAuthnError(errorType: string, message:string = '') {
|
||||
function webAuthnError(errorType: ErrorType, message:string = '') {
|
||||
const elErrorMsg = document.querySelector(`#webauthn-error-msg`)!;
|
||||
|
||||
if (errorType === 'general') {
|
||||
@@ -194,25 +198,26 @@ function webAuthnError(errorType: string, message:string = '') {
|
||||
showElem('#webauthn-error');
|
||||
}
|
||||
|
||||
function detectWebAuthnSupport() {
|
||||
/** Returns the error type or `null` when there was no error. */
|
||||
function detectWebAuthnSupport(): ErrorType | null {
|
||||
if (!window.isSecureContext) {
|
||||
webAuthnError('insecure');
|
||||
return false;
|
||||
return 'insecure';
|
||||
}
|
||||
|
||||
if (typeof window.PublicKeyCredential !== 'function') {
|
||||
webAuthnError('browser');
|
||||
return false;
|
||||
return 'browser';
|
||||
}
|
||||
|
||||
return true;
|
||||
return null;
|
||||
}
|
||||
|
||||
export function initUserAuthWebAuthnRegister() {
|
||||
const elRegister = document.querySelector<HTMLInputElement>('#register-webauthn');
|
||||
if (!elRegister) return;
|
||||
|
||||
if (!detectWebAuthnSupport()) {
|
||||
const errorType = detectWebAuthnSupport();
|
||||
if (errorType) {
|
||||
webAuthnError(errorType);
|
||||
elRegister.disabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user