mirror of
				https://github.com/steveiliop56/tinyauth.git
				synced 2025-10-30 21:55:43 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			v3.3.0-alp
			...
			v3.3.0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | d1eeb8c7f7 | ||
|   | a98a91a394 | 
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "أدخل رمز TOTP الخاص بك", | ||||
|     "unauthorizedTitle": "غير مرخص", | ||||
|     "unauthorizedResourceSubtitle": "المستخدم الذي يحمل اسم المستخدم <Code>{{username}}</Code> غير مصرح له بالوصول إلى المورد <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "المستخدم الذي يحمل اسم المستخدم <Code>{{username}}</Code> غير مصرح له بتسجيل الدخول.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "حاول مجددا", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "إلغاء" | ||||
|     "cancelTitle": "إلغاء", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Geben Sie Ihren TOTP Code ein", | ||||
|     "unauthorizedTitle": "Unautorisiert", | ||||
|     "unauthorizedResourceSubtitle": "Der Benutzer mit Benutzername <Code>{{username}}</Code> ist nicht berechtigt auf die Ressource <Code>{{resource}}</Code> zuzugreifen.", | ||||
|     "unaothorizedLoginSubtitle": "Der Benutzer mit dem Benutzernamen <Code>{{username}}</Code> ist nicht berechtigt, sich einzuloggen.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Erneut versuchen", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "untrustedRedirectTitle": "Nicht vertrauenswürdige Weiterleitung", | ||||
|     "untrustedRedirectSubtitle": "Sie versuchen auf eine Domain umzuleiten, die nicht mit Ihrer konfigurierten Domain übereinstimmt (<Code>{{domain}}</Code>). Sind Sie sicher, dass Sie fortfahren möchten?", | ||||
|     "cancelTitle": "Abbrechen", | ||||
|     "forgotPasswordTitle": "Passwort vergessen?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Εισάγετε τον κωδικό TOTP", | ||||
|     "unauthorizedTitle": "Μη εξουσιοδοτημένο", | ||||
|     "unauthorizedResourceSubtitle": "Ο χρήστης με όνομα χρήστη <Code>{{username}}</Code> δεν έχει άδεια πρόσβασης στον πόρο <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "Ο χρήστης με όνομα χρήστη <Code>{{username}}</Code> δεν είναι εξουσιοδοτημένος να συνδεθεί.", | ||||
|     "unauthorizedLoginSubtitle": "Ο χρήστης με όνομα χρήστη <Code>{{username}}</Code> δεν είναι εξουσιοδοτημένος να συνδεθεί.", | ||||
|     "unauthorizedGroupsSubtitle": "Ο χρήστης με όνομα χρήστη <Code>{{username}}</Code> δεν είναι στις ομάδες που απαιτούνται από τον πόρο <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Προσπαθήστε ξανά", | ||||
|     "untrustedRedirectTitle": "Μη έμπιστη ανακατεύθυνση", | ||||
|     "untrustedRedirectSubtitle": "Προσπαθείτε να ανακατευθύνετε σε έναν τομέα που δεν ταιριάζει με τον ρυθμισμένο τομέα σας (<Code>{{domain}}</Code>). Είστε βέβαιοι ότι θέλετε να συνεχίσετε;", | ||||
|     "cancelTitle": "Ακύρωση" | ||||
|     "cancelTitle": "Ακύρωση", | ||||
|     "forgotPasswordTitle": "Ξεχάσατε το συνθηματικό σας;" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Saisissez votre code TOTP", | ||||
|     "unauthorizedTitle": "Non autorisé", | ||||
|     "unauthorizedResourceSubtitle": "L'utilisateur avec le nom d'utilisateur <Code>{{username}}</Code> n'est pas autorisé à accéder à la ressource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "L'utilisateur avec le nom d'utilisateur <Code>{{username}}</Code> n'est pas autorisé à se connecter.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Réessayer", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Voer je TOTP-code in", | ||||
|     "unauthorizedTitle": "Ongeautoriseerd", | ||||
|     "unauthorizedResourceSubtitle": "De gebruiker met gebruikersnaam <Code>{{username}}</Code> heeft geen toegang tot de bron <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "De gebruiker met gebruikersnaam <Code>{{username}}</Code> is niet gemachtigd om in te loggen.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Opnieuw proberen", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Wprowadź kod TOTP", | ||||
|     "unauthorizedTitle": "Nieautoryzowany", | ||||
|     "unauthorizedResourceSubtitle": "Użytkownik o nazwie <Code>{{username}}</Code> nie jest upoważniony do uzyskania dostępu do zasobu <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "Użytkownik o nazwie <Code>{{username}}</Code> nie jest upoważniony do logowania.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Spróbuj ponownie", | ||||
|     "untrustedRedirectTitle": "Niezaufane przekierowanie", | ||||
|     "untrustedRedirectSubtitle": "Próbujesz przekierować do domeny, która nie pasuje do skonfigurowanej przez Ciebie domeny (<Code>{{domain}}</Code>). Czy na pewno chcesz kontynuować?", | ||||
|     "cancelTitle": "Anuluj" | ||||
|     "cancelTitle": "Anuluj", | ||||
|     "forgotPasswordTitle": "Nie pamiętasz hasła?" | ||||
| } | ||||
| @@ -1,5 +1,5 @@ | ||||
| { | ||||
|     "loginTitle": "Bem-vindo de volta, faça o login com", | ||||
|     "loginTitle": "Bem-vindo de volta, acesse com", | ||||
|     "loginDivider": "Ou continuar com uma senha", | ||||
|     "loginUsername": "Nome de usuário", | ||||
|     "loginPassword": "Senha", | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Insira o seu código TOTP", | ||||
|     "unauthorizedTitle": "Não autorizado", | ||||
|     "unauthorizedResourceSubtitle": "O usuário com nome de usuário <Code>{{username}}</Code> não está autorizado a acessar o recurso <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "O usuário com o nome <Code>{{username}}</Code> não está autorizado a acessar.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Tentar novamente", | ||||
|     "untrustedRedirectTitle": "Redirecionamento não confiável", | ||||
|     "untrustedRedirectSubtitle": "Você está tentando redirecionar para um domínio que não corresponde ao seu domínio configurado (<Code>{{domain}}</Code>). Tem certeza que deseja continuar?", | ||||
|     "cancelTitle": "Cancelar" | ||||
|     "cancelTitle": "Cancelar", | ||||
|     "forgotPasswordTitle": "Esqueceu sua senha?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "İptal" | ||||
|     "cancelTitle": "İptal", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "输入您的 TOTP 代码", | ||||
|     "unauthorizedTitle": "未授权", | ||||
|     "unauthorizedResourceSubtitle": "用户 <Code>{{username}}</Code> 无权访问资源 <Code>{{resource}}</Code>。", | ||||
|     "unaothorizedLoginSubtitle": "用户名 <Code>{{username}}</Code> 无登录权限。", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "重试", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -41,9 +41,11 @@ | ||||
|     "totpTitle": "Enter your TOTP code", | ||||
|     "unauthorizedTitle": "Unauthorized", | ||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", | ||||
|     "unaothorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedLoginSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to login.", | ||||
|     "unauthorizedGroupsSubtitle": "The user with username <Code>{{username}}</Code> is not in the groups required by the resource <Code>{{resource}}</Code>.", | ||||
|     "unauthorizedButton": "Try again", | ||||
|     "untrustedRedirectTitle": "Untrusted redirect", | ||||
|     "untrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain (<Code>{{domain}}</Code>). Are you sure you want to continue?", | ||||
|     "cancelTitle": "Cancel" | ||||
|     "cancelTitle": "Cancel", | ||||
|     "forgotPasswordTitle": "Forgot your password?" | ||||
| } | ||||
| @@ -70,7 +70,7 @@ export const ContinuePage = () => { | ||||
|         </Button> | ||||
|         <Button | ||||
|           fullWidth | ||||
|           mt="sm" | ||||
|           mt="xs" | ||||
|           color="gray" | ||||
|           onClick={() => (window.location.href = "/")} | ||||
|         > | ||||
| @@ -110,7 +110,7 @@ export const ContinuePage = () => { | ||||
|         </Button> | ||||
|         <Button | ||||
|           fullWidth | ||||
|           mt="sm" | ||||
|           mt="xs" | ||||
|           color="gray" | ||||
|           onClick={() => (window.location.href = "/")} | ||||
|         > | ||||
|   | ||||
| @@ -2,8 +2,9 @@ import { Button, Code, Paper, Text } from "@mantine/core"; | ||||
| import { Layout } from "../components/layouts/layout"; | ||||
| import { Navigate } from "react-router"; | ||||
| import { Trans, useTranslation } from "react-i18next"; | ||||
| import React from "react"; | ||||
| import React, { useEffect } from "react"; | ||||
| import { isValidQuery } from "../utils/utils"; | ||||
| import { useIsMounted } from "../lib/hooks/use-is-mounted"; | ||||
|  | ||||
| export const UnauthorizedPage = () => { | ||||
|   const queryString = window.location.search; | ||||
| @@ -12,13 +13,31 @@ export const UnauthorizedPage = () => { | ||||
|   const groupErr = params.get("groupErr") ?? ""; | ||||
|   const resource = params.get("resource") ?? ""; | ||||
|  | ||||
|   const [isGroupErr, setIsGroupErr] = React.useState(false); | ||||
|  | ||||
|   const useMounted = useIsMounted(); | ||||
|  | ||||
|   useEffect(() => { | ||||
|     if (useMounted()) { | ||||
|       if (isValidQuery(groupErr)) { | ||||
|         if (groupErr === "true") { | ||||
|           setIsGroupErr(true); | ||||
|           return; | ||||
|         } | ||||
|         setIsGroupErr(false); | ||||
|         return; | ||||
|       } | ||||
|       setIsGroupErr(false); | ||||
|     } | ||||
|   }, []); | ||||
|  | ||||
|   const { t } = useTranslation(); | ||||
|  | ||||
|   if (!isValidQuery(username)) { | ||||
|     return <Navigate to="/" />; | ||||
|   } | ||||
|  | ||||
|   if (isValidQuery(resource) && !isValidQuery(groupErr)) { | ||||
|   if (isValidQuery(resource) && !isGroupErr) { | ||||
|     return ( | ||||
|       <UnauthorizedLayout> | ||||
|         <Trans | ||||
| @@ -31,7 +50,7 @@ export const UnauthorizedPage = () => { | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   if (isValidQuery(groupErr) && isValidQuery(resource)) { | ||||
|   if (isGroupErr && isValidQuery(resource)) { | ||||
|     return ( | ||||
|       <UnauthorizedLayout> | ||||
|         <Trans | ||||
|   | ||||
| @@ -75,6 +75,8 @@ func (h *Handlers) AuthHandler(c *gin.Context) { | ||||
| 	// Get the container labels | ||||
| 	labels, err := h.Docker.GetLabels(appId) | ||||
|  | ||||
| 	log.Debug().Interface("labels", labels).Msg("Got labels") | ||||
|  | ||||
| 	// Check if there was an error | ||||
| 	if err != nil { | ||||
| 		log.Error().Err(err).Msg("Failed to get container labels") | ||||
| @@ -183,54 +185,55 @@ func (h *Handlers) AuthHandler(c *gin.Context) { | ||||
| 			return | ||||
| 		} | ||||
|  | ||||
| 		log.Debug().Interface("labels", labels).Msg("Got labels") | ||||
| 		// Check groups if using OAuth | ||||
| 		if userContext.OAuth { | ||||
| 			// Check if user is in required groups | ||||
| 			groupOk := h.Auth.OAuthGroup(c, userContext, labels) | ||||
|  | ||||
| 		// Check if user is in required groups | ||||
| 		groupOk := h.Auth.OAuthGroup(c, userContext, labels) | ||||
| 			log.Debug().Bool("groupOk", groupOk).Msg("Checking if user is in required groups") | ||||
|  | ||||
| 		log.Debug().Bool("groupOk", groupOk).Msg("Checking if user is in required groups") | ||||
| 			// The user is not allowed to access the app | ||||
| 			if !groupOk { | ||||
| 				log.Warn().Str("username", userContext.Username).Str("host", host).Msg("User is not in required groups") | ||||
|  | ||||
| 		// The user is not allowed to access the app | ||||
| 		if !groupOk { | ||||
| 			log.Warn().Str("username", userContext.Username).Str("host", host).Msg("User is not in required groups") | ||||
| 				// Set WWW-Authenticate header | ||||
| 				c.Header("WWW-Authenticate", "Basic realm=\"tinyauth\"") | ||||
|  | ||||
| 			// Set WWW-Authenticate header | ||||
| 			c.Header("WWW-Authenticate", "Basic realm=\"tinyauth\"") | ||||
| 				if proxy.Proxy == "nginx" || !isBrowser { | ||||
| 					c.JSON(401, gin.H{ | ||||
| 						"status":  401, | ||||
| 						"message": "Unauthorized", | ||||
| 					}) | ||||
| 					return | ||||
| 				} | ||||
|  | ||||
| 			if proxy.Proxy == "nginx" || !isBrowser { | ||||
| 				c.JSON(401, gin.H{ | ||||
| 					"status":  401, | ||||
| 					"message": "Unauthorized", | ||||
| 				}) | ||||
| 				// Values | ||||
| 				values := types.UnauthorizedQuery{ | ||||
| 					Resource: strings.Split(host, ".")[0], | ||||
| 					GroupErr: true, | ||||
| 				} | ||||
|  | ||||
| 				// Use either username or email | ||||
| 				if userContext.OAuth { | ||||
| 					values.Username = userContext.Email | ||||
| 				} else { | ||||
| 					values.Username = userContext.Username | ||||
| 				} | ||||
|  | ||||
| 				// Build query | ||||
| 				queries, err := query.Values(values) | ||||
|  | ||||
| 				// Handle error (no need to check for nginx/headers since we are sure we are using caddy/traefik) | ||||
| 				if err != nil { | ||||
| 					log.Error().Err(err).Msg("Failed to build queries") | ||||
| 					c.Redirect(http.StatusPermanentRedirect, fmt.Sprintf("%s/error", h.Config.AppURL)) | ||||
| 					return | ||||
| 				} | ||||
|  | ||||
| 				// We are using caddy/traefik so redirect | ||||
| 				c.Redirect(http.StatusTemporaryRedirect, fmt.Sprintf("%s/unauthorized?%s", h.Config.AppURL, queries.Encode())) | ||||
| 				return | ||||
| 			} | ||||
|  | ||||
| 			// Values | ||||
| 			values := types.UnauthorizedQuery{ | ||||
| 				Resource: strings.Split(host, ".")[0], | ||||
| 				GroupErr: true, | ||||
| 			} | ||||
|  | ||||
| 			// Use either username or email | ||||
| 			if userContext.OAuth { | ||||
| 				values.Username = userContext.Email | ||||
| 			} else { | ||||
| 				values.Username = userContext.Username | ||||
| 			} | ||||
|  | ||||
| 			// Build query | ||||
| 			queries, err := query.Values(values) | ||||
|  | ||||
| 			// Handle error (no need to check for nginx/headers since we are sure we are using caddy/traefik) | ||||
| 			if err != nil { | ||||
| 				log.Error().Err(err).Msg("Failed to build queries") | ||||
| 				c.Redirect(http.StatusPermanentRedirect, fmt.Sprintf("%s/error", h.Config.AppURL)) | ||||
| 				return | ||||
| 			} | ||||
|  | ||||
| 			// We are using caddy/traefik so redirect | ||||
| 			c.Redirect(http.StatusTemporaryRedirect, fmt.Sprintf("%s/unauthorized?%s", h.Config.AppURL, queries.Encode())) | ||||
| 			return | ||||
| 		} | ||||
|  | ||||
| 		c.Header("Remote-User", utils.SanitizeHeader(userContext.Username)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user