mirror of
				https://github.com/steveiliop56/tinyauth.git
				synced 2025-10-31 14:15:50 +00:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			v3.3.0-alp
			...
			v3.3.1-bet
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 2db7795eb7 | ||
| ![github-actions[bot]](/assets/img/avatar_default.png)  | dd5a9e2216 | ||
|   | 00d1543f08 | ||
|   | d1eeb8c7f7 | ||
|   | a98a91a394 | 
							
								
								
									
										3
									
								
								.github/workflows/sponsors.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/sponsors.yml
									
									
									
									
										vendored
									
									
								
							| @@ -13,7 +13,8 @@ jobs: | |||||||
|         uses: JamesIves/github-sponsors-readme-action@v1 |         uses: JamesIves/github-sponsors-readme-action@v1 | ||||||
|         with: |         with: | ||||||
|           token: ${{ secrets.SPONSORS_GENERATOR_PAT }} |           token: ${{ secrets.SPONSORS_GENERATOR_PAT }} | ||||||
|           file: README.md |           active-only: false | ||||||
|  |           file: "README.md" | ||||||
|           template: '<a href="https://github.com/{{{ login }}}"><img src="{{{ avatarUrl }}}" width="64px" alt="User avatar: {{{ login }}}" /></a>  ' |           template: '<a href="https://github.com/{{{ login }}}"><img src="{{{ avatarUrl }}}" width="64px" alt="User avatar: {{{ login }}}" /></a>  ' | ||||||
|  |  | ||||||
|       - name: Create Pull Request |       - name: Create Pull Request | ||||||
|   | |||||||
| @@ -53,7 +53,7 @@ Tinyauth is licensed under the GNU General Public License v3.0. TL;DR — You ma | |||||||
|  |  | ||||||
| Thanks a lot to the following people for providing me with more coffee: | Thanks a lot to the following people for providing me with more coffee: | ||||||
|  |  | ||||||
| <!-- sponsors --><a href="https://github.com/nicotsx"><img src="https://github.com/nicotsx.png" width="64px" alt="User avatar: nicotsx" /></a>  <a href="https://github.com/SimpleHomelab"><img src="https://github.com/SimpleHomelab.png" width="64px" alt="User avatar: SimpleHomelab" /></a>  <a href="https://github.com/jmadden91"><img src="https://github.com/jmadden91.png" width="64px" alt="User avatar: jmadden91" /></a>  <a href="https://github.com/tribor"><img src="https://github.com/tribor.png" width="64px" alt="User avatar: tribor" /></a>  <!-- sponsors --> | <!-- sponsors --><a href="https://github.com/erwinkramer"><img src="https://github.com/erwinkramer.png" width="64px" alt="User avatar: erwinkramer" /></a>  <a href="https://github.com/nicotsx"><img src="https://github.com/nicotsx.png" width="64px" alt="User avatar: nicotsx" /></a>  <a href="https://github.com/SimpleHomelab"><img src="https://github.com/SimpleHomelab.png" width="64px" alt="User avatar: SimpleHomelab" /></a>  <a href="https://github.com/jmadden91"><img src="https://github.com/jmadden91.png" width="64px" alt="User avatar: jmadden91" /></a>  <a href="https://github.com/tribor"><img src="https://github.com/tribor.png" width="64px" alt="User avatar: tribor" /></a>  <!-- sponsors --> | ||||||
|  |  | ||||||
| ## Acknowledgements | ## Acknowledgements | ||||||
|  |  | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -41,9 +41,11 @@ | |||||||
|     "totpTitle": "Enter your TOTP code", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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 الخاص بك", |     "totpTitle": "أدخل رمز TOTP الخاص بك", | ||||||
|     "unauthorizedTitle": "غير مرخص", |     "unauthorizedTitle": "غير مرخص", | ||||||
|     "unauthorizedResourceSubtitle": "المستخدم الذي يحمل اسم المستخدم <Code>{{username}}</Code> غير مصرح له بالوصول إلى المورد <Code>{{resource}}</Code>.", |     "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": "حاول مجددا", |     "unauthorizedButton": "حاول مجددا", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Geben Sie Ihren TOTP Code ein", | ||||||
|     "unauthorizedTitle": "Unautorisiert", |     "unauthorizedTitle": "Unautorisiert", | ||||||
|     "unauthorizedResourceSubtitle": "Der Benutzer mit Benutzername <Code>{{username}}</Code> ist nicht berechtigt auf die Ressource <Code>{{resource}}</Code> zuzugreifen.", |     "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", |     "unauthorizedButton": "Erneut versuchen", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "untrustedRedirectTitle": "Nicht vertrauenswürdige Weiterleitung", | ||||||
|     "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?", |     "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": "Cancel" |     "cancelTitle": "Abbrechen", | ||||||
|  |     "forgotPasswordTitle": "Passwort vergessen?" | ||||||
| } | } | ||||||
| @@ -41,9 +41,11 @@ | |||||||
|     "totpTitle": "Εισάγετε τον κωδικό TOTP", |     "totpTitle": "Εισάγετε τον κωδικό TOTP", | ||||||
|     "unauthorizedTitle": "Μη εξουσιοδοτημένο", |     "unauthorizedTitle": "Μη εξουσιοδοτημένο", | ||||||
|     "unauthorizedResourceSubtitle": "Ο χρήστης με όνομα χρήστη <Code>{{username}}</Code> δεν έχει άδεια πρόσβασης στον πόρο <Code>{{resource}}</Code>.", |     "unauthorizedResourceSubtitle": "Ο χρήστης με όνομα χρήστη <Code>{{username}}</Code> δεν έχει άδεια πρόσβασης στον πόρο <Code>{{resource}}</Code>.", | ||||||
|     "unaothorizedLoginSubtitle": "Ο χρήστης με όνομα χρήστη <Code>{{username}}</Code> δεν είναι εξουσιοδοτημένος να συνδεθεί.", |     "unauthorizedLoginSubtitle": "Ο χρήστης με όνομα χρήστη <Code>{{username}}</Code> δεν είναι εξουσιοδοτημένος να συνδεθεί.", | ||||||
|  |     "unauthorizedGroupsSubtitle": "Ο χρήστης με όνομα χρήστη <Code>{{username}}</Code> δεν είναι στις ομάδες που απαιτούνται από τον πόρο <Code>{{resource}}</Code>.", | ||||||
|     "unauthorizedButton": "Προσπαθήστε ξανά", |     "unauthorizedButton": "Προσπαθήστε ξανά", | ||||||
|     "untrustedRedirectTitle": "Μη έμπιστη ανακατεύθυνση", |     "untrustedRedirectTitle": "Μη έμπιστη ανακατεύθυνση", | ||||||
|     "untrustedRedirectSubtitle": "Προσπαθείτε να ανακατευθύνετε σε έναν τομέα που δεν ταιριάζει με τον ρυθμισμένο τομέα σας (<Code>{{domain}}</Code>). Είστε βέβαιοι ότι θέλετε να συνεχίσετε;", |     "untrustedRedirectSubtitle": "Προσπαθείτε να ανακατευθύνετε σε έναν τομέα που δεν ταιριάζει με τον ρυθμισμένο τομέα σας (<Code>{{domain}}</Code>). Είστε βέβαιοι ότι θέλετε να συνεχίσετε;", | ||||||
|     "cancelTitle": "Ακύρωση" |     "cancelTitle": "Ακύρωση", | ||||||
|  |     "forgotPasswordTitle": "Ξεχάσατε το συνθηματικό σας;" | ||||||
| } | } | ||||||
| @@ -41,9 +41,11 @@ | |||||||
|     "totpTitle": "Enter your TOTP code", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Saisissez votre code TOTP", | ||||||
|     "unauthorizedTitle": "Non autorisé", |     "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>.", |     "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", |     "unauthorizedButton": "Réessayer", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Voer je TOTP-code in", | ||||||
|     "unauthorizedTitle": "Ongeautoriseerd", |     "unauthorizedTitle": "Ongeautoriseerd", | ||||||
|     "unauthorizedResourceSubtitle": "De gebruiker met gebruikersnaam <Code>{{username}}</Code> heeft geen toegang tot de bron <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Opnieuw proberen", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Wprowadź kod TOTP", | ||||||
|     "unauthorizedTitle": "Nieautoryzowany", |     "unauthorizedTitle": "Nieautoryzowany", | ||||||
|     "unauthorizedResourceSubtitle": "Użytkownik o nazwie <Code>{{username}}</Code> nie jest upoważniony do uzyskania dostępu do zasobu <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Spróbuj ponownie", | ||||||
|     "untrustedRedirectTitle": "Niezaufane przekierowanie", |     "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ć?", |     "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", |     "loginDivider": "Ou continuar com uma senha", | ||||||
|     "loginUsername": "Nome de usuário", |     "loginUsername": "Nome de usuário", | ||||||
|     "loginPassword": "Senha", |     "loginPassword": "Senha", | ||||||
| @@ -41,9 +41,11 @@ | |||||||
|     "totpTitle": "Insira o seu código TOTP", |     "totpTitle": "Insira o seu código TOTP", | ||||||
|     "unauthorizedTitle": "Não autorizado", |     "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>.", |     "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", |     "unauthorizedButton": "Tentar novamente", | ||||||
|     "untrustedRedirectTitle": "Redirecionamento não confiável", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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 代码", |     "totpTitle": "输入您的 TOTP 代码", | ||||||
|     "unauthorizedTitle": "未授权", |     "unauthorizedTitle": "未授权", | ||||||
|     "unauthorizedResourceSubtitle": "用户 <Code>{{username}}</Code> 无权访问资源 <Code>{{resource}}</Code>。", |     "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": "重试", |     "unauthorizedButton": "重试", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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", |     "totpTitle": "Enter your TOTP code", | ||||||
|     "unauthorizedTitle": "Unauthorized", |     "unauthorizedTitle": "Unauthorized", | ||||||
|     "unauthorizedResourceSubtitle": "The user with username <Code>{{username}}</Code> is not authorized to access the resource <Code>{{resource}}</Code>.", |     "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", |     "unauthorizedButton": "Try again", | ||||||
|     "untrustedRedirectTitle": "Untrusted redirect", |     "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?", |     "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> | ||||||
|         <Button |         <Button | ||||||
|           fullWidth |           fullWidth | ||||||
|           mt="sm" |           mt="xs" | ||||||
|           color="gray" |           color="gray" | ||||||
|           onClick={() => (window.location.href = "/")} |           onClick={() => (window.location.href = "/")} | ||||||
|         > |         > | ||||||
| @@ -110,7 +110,7 @@ export const ContinuePage = () => { | |||||||
|         </Button> |         </Button> | ||||||
|         <Button |         <Button | ||||||
|           fullWidth |           fullWidth | ||||||
|           mt="sm" |           mt="xs" | ||||||
|           color="gray" |           color="gray" | ||||||
|           onClick={() => (window.location.href = "/")} |           onClick={() => (window.location.href = "/")} | ||||||
|         > |         > | ||||||
|   | |||||||
| @@ -2,8 +2,9 @@ import { Button, Code, Paper, Text } from "@mantine/core"; | |||||||
| import { Layout } from "../components/layouts/layout"; | import { Layout } from "../components/layouts/layout"; | ||||||
| import { Navigate } from "react-router"; | import { Navigate } from "react-router"; | ||||||
| import { Trans, useTranslation } from "react-i18next"; | import { Trans, useTranslation } from "react-i18next"; | ||||||
| import React from "react"; | import React, { useEffect } from "react"; | ||||||
| import { isValidQuery } from "../utils/utils"; | import { isValidQuery } from "../utils/utils"; | ||||||
|  | import { useIsMounted } from "../lib/hooks/use-is-mounted"; | ||||||
|  |  | ||||||
| export const UnauthorizedPage = () => { | export const UnauthorizedPage = () => { | ||||||
|   const queryString = window.location.search; |   const queryString = window.location.search; | ||||||
| @@ -12,13 +13,31 @@ export const UnauthorizedPage = () => { | |||||||
|   const groupErr = params.get("groupErr") ?? ""; |   const groupErr = params.get("groupErr") ?? ""; | ||||||
|   const resource = params.get("resource") ?? ""; |   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(); |   const { t } = useTranslation(); | ||||||
|  |  | ||||||
|   if (!isValidQuery(username)) { |   if (!isValidQuery(username)) { | ||||||
|     return <Navigate to="/" />; |     return <Navigate to="/" />; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (isValidQuery(resource) && !isValidQuery(groupErr)) { |   if (isValidQuery(resource) && !isGroupErr) { | ||||||
|     return ( |     return ( | ||||||
|       <UnauthorizedLayout> |       <UnauthorizedLayout> | ||||||
|         <Trans |         <Trans | ||||||
| @@ -31,7 +50,7 @@ export const UnauthorizedPage = () => { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (isValidQuery(groupErr) && isValidQuery(resource)) { |   if (isGroupErr && isValidQuery(resource)) { | ||||||
|     return ( |     return ( | ||||||
|       <UnauthorizedLayout> |       <UnauthorizedLayout> | ||||||
|         <Trans |         <Trans | ||||||
|   | |||||||
| @@ -12,6 +12,7 @@ export default defineConfig({ | |||||||
|         changeOrigin: true, |         changeOrigin: true, | ||||||
|         rewrite: (path) => path.replace(/^\/api/, ""), |         rewrite: (path) => path.replace(/^\/api/, ""), | ||||||
|       }, |       }, | ||||||
|     } |     }, | ||||||
|  |     allowedHosts: true, | ||||||
|   } |   } | ||||||
| }); | }); | ||||||
|   | |||||||
| @@ -75,6 +75,8 @@ func (h *Handlers) AuthHandler(c *gin.Context) { | |||||||
| 	// Get the container labels | 	// Get the container labels | ||||||
| 	labels, err := h.Docker.GetLabels(appId) | 	labels, err := h.Docker.GetLabels(appId) | ||||||
|  |  | ||||||
|  | 	log.Debug().Interface("labels", labels).Msg("Got labels") | ||||||
|  |  | ||||||
| 	// Check if there was an error | 	// Check if there was an error | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.Error().Err(err).Msg("Failed to get container labels") | 		log.Error().Err(err).Msg("Failed to get container labels") | ||||||
| @@ -183,54 +185,55 @@ func (h *Handlers) AuthHandler(c *gin.Context) { | |||||||
| 			return | 			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 | 			log.Debug().Bool("groupOk", groupOk).Msg("Checking 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") | 			// 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 | 				// Set WWW-Authenticate header | ||||||
| 		if !groupOk { | 				c.Header("WWW-Authenticate", "Basic realm=\"tinyauth\"") | ||||||
| 			log.Warn().Str("username", userContext.Username).Str("host", host).Msg("User is not in required groups") |  | ||||||
|  |  | ||||||
| 			// Set WWW-Authenticate header | 				if proxy.Proxy == "nginx" || !isBrowser { | ||||||
| 			c.Header("WWW-Authenticate", "Basic realm=\"tinyauth\"") | 					c.JSON(401, gin.H{ | ||||||
|  | 						"status":  401, | ||||||
|  | 						"message": "Unauthorized", | ||||||
|  | 					}) | ||||||
|  | 					return | ||||||
|  | 				} | ||||||
|  |  | ||||||
| 			if proxy.Proxy == "nginx" || !isBrowser { | 				// Values | ||||||
| 				c.JSON(401, gin.H{ | 				values := types.UnauthorizedQuery{ | ||||||
| 					"status":  401, | 					Resource: strings.Split(host, ".")[0], | ||||||
| 					"message": "Unauthorized", | 					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 | 				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)) | 		c.Header("Remote-User", utils.SanitizeHeader(userContext.Username)) | ||||||
|   | |||||||
| @@ -110,8 +110,8 @@ func (hooks *Hooks) UseUserContext(c *gin.Context) types.UserContext { | |||||||
| 		log.Debug().Msg("Provider exists") | 		log.Debug().Msg("Provider exists") | ||||||
|  |  | ||||||
| 		// Check if the oauth email is whitelisted | 		// Check if the oauth email is whitelisted | ||||||
| 		if !hooks.Auth.EmailWhitelisted(cookie.Username) { | 		if !hooks.Auth.EmailWhitelisted(cookie.Email) { | ||||||
| 			log.Error().Str("email", cookie.Username).Msg("Email is not whitelisted") | 			log.Error().Str("email", cookie.Email).Msg("Email is not whitelisted") | ||||||
|  |  | ||||||
| 			// It isn't so we delete the cookie and return an empty context | 			// It isn't so we delete the cookie and return an empty context | ||||||
| 			hooks.Auth.DeleteSessionCookie(c) | 			hooks.Auth.DeleteSessionCookie(c) | ||||||
|   | |||||||
| @@ -103,6 +103,7 @@ func GetGithubUser(client *http.Client) (constants.Claims, error) { | |||||||
| 	for _, email := range emails { | 	for _, email := range emails { | ||||||
| 		if email.Primary { | 		if email.Primary { | ||||||
| 			// Set the email then exit | 			// Set the email then exit | ||||||
|  | 			log.Debug().Str("email", email.Email).Msg("Found primary email") | ||||||
| 			user.Email = email.Email | 			user.Email = email.Email | ||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| @@ -115,6 +116,7 @@ func GetGithubUser(client *http.Client) (constants.Claims, error) { | |||||||
|  |  | ||||||
| 	// Set the email if it is not set picking the first one | 	// Set the email if it is not set picking the first one | ||||||
| 	if user.Email == "" { | 	if user.Email == "" { | ||||||
|  | 		log.Warn().Str("email", emails[0].Email).Msg("No primary email found, using first email") | ||||||
| 		user.Email = emails[0].Email | 		user.Email = emails[0].Email | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user