From 0be5510d05e823210dcf4b154ed6c7e3cfd425a9 Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Tue, 16 Apr 2019 17:01:00 +0200 Subject: [PATCH 01/10] Verify logLevel value (Closes: #1714) --- .../lib/Lemonldap/NG/Handler/Main/Init.pm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Init.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Init.pm index 117a14f3a..30c7dd02d 100644 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Init.pm +++ b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Init.pm @@ -53,6 +53,14 @@ sub logLevelInit { my $logger = $class->localConfig->{logger} ||= $class->defaultLogger; eval "require $logger"; die $@ if ($@); + unless ( + $class->localConfig->{logLevel} =~ /^(debug|info|notice|warn|error)$/ ) + { + print STDERR 'Bad logLevel value \'' + . $class->localConfig->{logLevel} + . "', switching to 'info'\n"; + $class->localConfig->{logLevel} = 'info'; + } $class->logger( $logger->new( $class->localConfig ) ); $class->logger->debug("Logger $logger loaded"); $logger = $class->localConfig->{userLogger} || $logger; From 69444b701b5e84aa29c07dc3bba24ddb71107fab Mon Sep 17 00:00:00 2001 From: Christophe Maudoux Date: Tue, 16 Apr 2019 21:13:02 +0200 Subject: [PATCH 02/10] Improve unit test (#1712) --- .../t/31-Auth-and-issuer-CAS-declared-apps.t | 182 ++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-declared-apps.t diff --git a/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-declared-apps.t b/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-declared-apps.t new file mode 100644 index 000000000..bc3ed7d44 --- /dev/null +++ b/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-declared-apps.t @@ -0,0 +1,182 @@ +use lib 'inc'; +use Test::More; # skip_all => 'CAS is in rebuild'; +use strict; +use IO::String; +use LWP::UserAgent; +use LWP::Protocol::PSGI; +use MIME::Base64; + +BEGIN { + require 't/test-lib.pm'; +} + +my $debug = 'error'; +my ( $issuer, $sp, $res ); +my %handlerOR = ( issuer => [], sp => [] ); + +# Redefine LWP methods for tests +LWP::Protocol::PSGI->register( + sub { + my $req = Plack::Request->new(@_); + ok( $req->uri =~ m#http://auth.((?:id|s)p).com([^\?]*)(?:\?(.*))?$#, + 'SOAP request' ); + my $host = $1; + my $url = $2; + my $query = $3; + my $res; + my $client = ( $host eq 'idp' ? $issuer : $sp ); + if ( $req->method eq 'POST' ) { + my $s = $req->content; + ok( + $res = $client->_post( + $url, IO::String->new($s), + length => length($s), + query => $query, + type => 'application/xml', + ), + "Execute POST request to $url" + ); + } + else { + ok( + $res = $client->_get( + $url, + type => 'application/xml', + query => $query, + ), + "Execute request to $url" + ); + } + expectOK($res); + ok( getHeader( $res, 'Content-Type' ) =~ m#xml#, 'Content is XML' ) + or explain( $res->[1], 'Content-Type => application/xml' ); + count(3); + return $res; + } +); + +ok( $issuer = issuer(), 'Issuer portal' ); +$handlerOR{issuer} = \@Lemonldap::NG::Handler::Main::_onReload; +count(1); +switch ('sp'); +&Lemonldap::NG::Handler::Main::cfgNum( 0, 0 ); + +ok( $sp = sp(), 'SP portal' ); +count(1); +$handlerOR{sp} = \@Lemonldap::NG::Handler::Main::_onReload; + +# Simple SP access +ok( + $res = $sp->_get( + '/', accept => 'text/html', + ), + 'Unauth SP request' +); +count(1); + +# No cancel button found +ok( + $res->[2]->[0] !~ +qr%%, + 'Cancel button NOT found' +) or print STDERR Dumper( $res->[2]->[0] ); +count(1); + +# Query IdP +switch ('issuer'); +ok( + $res = $issuer->_get( + '/cas/login', + query => 'service=http://auth.sp.com/', + accept => 'text/html' + ), + 'Query CAS server' +); +count(1); +expectOK($res); +my $pdata = 'lemonldappdata=' . expectCookie( $res, 'lemonldappdata' ); + +clean_sessions(); +done_testing( count() ); + +sub switch { + my $type = shift; + @Lemonldap::NG::Handler::Main::_onReload = @{ + $handlerOR{$type}; + }; +} + +sub issuer { + return LLNG::Manager::Test->new( { + ini => { + logLevel => $debug, + templatesDir => 'site/htdocs/static', + domain => 'idp.com', + portal => 'http://auth.idp.com', + authentication => 'Demo', + userDB => 'Same', + issuerDBCASActivation => 1, + issuerDBCASRule => '$uid eq "french"', + casAttr => 'uid', + casAccessControlPolicy => 'error', + multiValuesSeparator => ';', + casAppMetaDataExportedVars => { + sp => { + cn => 'cn', + mail => 'mail', + uid => 'uid', + } + }, + casAppMetaDataOptions => { + sp => { + casAppMetaDataOptionsService => 'http://auth.sp.com', + }, + sp2 => { + casAppMetaDataOptionsService => 'http://auth.sp2.com', + }, + }, + } + } + ); +} + +sub sp { + return LLNG::Manager::Test->new( { + ini => { + logLevel => $debug, + domain => 'sp.com', + portal => 'http://auth.sp.com', + authentication => 'CAS', + userDB => 'CAS', + restSessionServer => 1, + issuerDBCASActivation => 0, + multiValuesSeparator => ';', + exportedVars => { + cn => 'cn', + }, + casSrvMetaDataExportedVars => { + idp => { + cn => 'cn', + mail => 'mail', + uid => 'uid', + }, + idp2 => { + cn => 'cn', + mail => 'mail', + uid => 'uid', + } + }, + casSrvMetaDataOptions => { + idp => { + casSrvMetaDataOptionsUrl => 'http://auth.idp.com/cas', + casSrvMetaDataOptionsGateway => 0, + }, + idp2 => { + casSrvMetaDataOptionsUrl => 'http://auth.idp.com/cas', + casSrvMetaDataOptionsGateway => 0, + } + }, + }, + } + ); +} From 82bd5bd27159eb0458f6978f0a887f6b5cedc671 Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Wed, 17 Apr 2019 17:14:01 +0200 Subject: [PATCH 03/10] Remove insufficiently translated language files from default install --- e2e-tests/lemonldap-ng.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-tests/lemonldap-ng.ini b/e2e-tests/lemonldap-ng.ini index aa49c3de6..70d1cab41 100644 --- a/e2e-tests/lemonldap-ng.ini +++ b/e2e-tests/lemonldap-ng.ini @@ -21,7 +21,7 @@ dirName=__pwd__/e2e-tests/conf checkXSS = 0 portalSkin = bootstrap staticPrefix = /static -languages = fr, en, vi, it, ar, de, zh, nl, es, pt, ro +languages = fr, en, vi, it, ar templateDir = __pwd__/lemonldap-ng-portal/site/templates portalStatus = 1 totp2fActivation = 1 From 2c6aeb0cca33bcde88a3ddd54cdbab75b37a7437 Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Wed, 17 Apr 2019 17:14:55 +0200 Subject: [PATCH 04/10] Revert "Remove insufficiently translated language files from default install" This reverts commit 82bd5bd27159eb0458f6978f0a887f6b5cedc671. --- e2e-tests/lemonldap-ng.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-tests/lemonldap-ng.ini b/e2e-tests/lemonldap-ng.ini index 70d1cab41..aa49c3de6 100644 --- a/e2e-tests/lemonldap-ng.ini +++ b/e2e-tests/lemonldap-ng.ini @@ -21,7 +21,7 @@ dirName=__pwd__/e2e-tests/conf checkXSS = 0 portalSkin = bootstrap staticPrefix = /static -languages = fr, en, vi, it, ar +languages = fr, en, vi, it, ar, de, zh, nl, es, pt, ro templateDir = __pwd__/lemonldap-ng-portal/site/templates portalStatus = 1 totp2fActivation = 1 From 889c1da46e5d2115d94fc4f37cf0a627ab7bae85 Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Wed, 17 Apr 2019 17:16:01 +0200 Subject: [PATCH 05/10] Enable italian language in default install --- lemonldap-ng-common/lemonldap-ng.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lemonldap-ng-common/lemonldap-ng.ini b/lemonldap-ng-common/lemonldap-ng.ini index b7a384718..00d5e2275 100644 --- a/lemonldap-ng-common/lemonldap-ng.ini +++ b/lemonldap-ng-common/lemonldap-ng.ini @@ -354,7 +354,7 @@ staticPrefix = __MANAGERSTATICDIR__ templateDir = __MANAGERTEMPLATESDIR__ ; languages: available languages for manager interface -languages = fr, en, vi, ar +languages = fr, en, it, vi, ar ; Manager modules enabled ; Set here the list of modules you want to see in manager interface From 3111cb0cb2cae8252949f6eea3083d20cf6dbcac Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Wed, 17 Apr 2019 17:31:03 +0200 Subject: [PATCH 06/10] Update translation (using 100% match suggestions) --- .../site/htdocs/static/languages/ar.json | 2 +- .../site/htdocs/static/languages/zh.json | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lemonldap-ng-manager/site/htdocs/static/languages/ar.json b/lemonldap-ng-manager/site/htdocs/static/languages/ar.json index 1b8fd6c7e..54259e8bf 100644 --- a/lemonldap-ng-manager/site/htdocs/static/languages/ar.json +++ b/lemonldap-ng-manager/site/htdocs/static/languages/ar.json @@ -847,7 +847,7 @@ "yubikey2fNonce":"Nonce", "yubikey2fPublicIDSize":"حجم الجزء العام لي OTP آي دي", "yubikey2fSecretKey":"مفتاح سرأل API", -"yubikey2fSelfRegistration":"Self registration", +"yubikey2fSelfRegistration":"التسجيل الذاتي", "yubikey2fUrl":"خدمة أل يو أر ل", "yubikey2fUserCanRemoveKey":"Authorize user to remove Yubikey", "zeroConfExplanations":"لا يحتوي الخادم على إعدادات. استخدام قالب لحفظ الأول", diff --git a/lemonldap-ng-manager/site/htdocs/static/languages/zh.json b/lemonldap-ng-manager/site/htdocs/static/languages/zh.json index 0d9382648..2db4ff928 100644 --- a/lemonldap-ng-manager/site/htdocs/static/languages/zh.json +++ b/lemonldap-ng-manager/site/htdocs/static/languages/zh.json @@ -150,10 +150,10 @@ "cfgVersion":"配置信息", "checkXSS":"Check XSS attacks", "clickHereToForce":"Click here to force", -"checkState":"Activation", +"checkState":"激活", "checkStateSecret":"Shared secret", "checkUsers":"SSO profile Check", -"checkUser":"Activation", +"checkUser":"激活", "checkUserIdRule":"Identities use rule", "checkUserHiddenAttributes":"Hidden attributes", "checkUserDisplayPersistentInfo":"Display persistent session", @@ -388,7 +388,7 @@ "localSessionStorageOptions":"Cache module options", "locationRules":"Access rule", "loginHistory":"登陆记录", -"loginHistoryEnabled":"Activation", +"loginHistoryEnabled":"激活", "logo":"Logo", "logout":"注销登录", "logoutServices":"Logout forward", @@ -397,7 +397,7 @@ "lwpSslOpts":"SSL options for server requests", "macros":"Macros", "mail2f":"Mail second factor", -"mail2fActivation":"Activation", +"mail2fActivation":"激活", "mail2fCodeRegex":"Code regex", "mail2fTimeout":"Code timeout", "mail2fSubject":"Mail subject", @@ -458,7 +458,7 @@ "notABoolean":"Not a boolean", "notAnInteger":"Not an integer", "notAValidPerlExpression":"Not a valid Perl expression", -"notification":"Activation", +"notification":"激活", "notifications":"Notifications", "notificationServer":"Notification server", "notificationCreated":"Notification has been created", @@ -679,7 +679,7 @@ "restore":"Restore", "restoreConf":"Restore configuration", "rest2f":"REST second factor", -"rest2fActivation":"Activation", +"rest2fActivation":"激活", "rest2fAuthnLevel":"认证等级", "rest2fInitArgs":"Init Arguments", "rest2fInitUrl":"Init URL", @@ -763,7 +763,7 @@ "timeoutActivityInterval":"Sessions update interval", "tokenUseGlobalStorage":"Use global storage", "totp":"TOTP", -"totp2fActivation":"Activation", +"totp2fActivation":"激活", "totp2fAuthnLevel":"TOTP authentication level", "totp2fDigits":"Number of digits", "totp2fDisplayExistingSecret":"Display existing secret", @@ -783,7 +783,7 @@ "twitterUserField":"Field containing user identifier", "type":"Type", "u2f":"U2F", -"u2fActivation":"Activation", +"u2fActivation":"激活", "u2fAuthnLevel":"U2F authentication level", "u2fUserCanRemoveKey":"Authorize user to remove U2F key", "u2fSelfRegistration":"Self registration", @@ -808,7 +808,7 @@ "useRedirectOnForbidden":"Redirect on forbidden", "useSafeJail":"Use Safe jail", "utotp2f":"TOTP-or-U2F", -"utotp2fActivation":"Activation", +"utotp2fActivation":"激活", "utotp2fAuthnLevel":"认证等级", "value":"Value", "values":"Values", @@ -838,10 +838,10 @@ "waitOrF5":"Wait for redirection or press F5", "whatToTrace":"REMOTE_USER", "whiteList":"White list", -"wsdlServer":"WSDL server", +"wsdlServer":"WSDL 服务器", "XMLcontent":"XML content", "yubikey2f":"Yubikey", -"yubikey2fActivation":"Activation", +"yubikey2fActivation":"激活", "yubikey2fAuthnLevel":"认证等级", "yubikey2fClientID":"API client ID", "yubikey2fNonce":"Nonce", @@ -855,7 +855,7 @@ "saml":"SAML", "samlAttribute":"SAML attribute", "samlDiscoveryProtocol":"Discovery Protocol", -"samlDiscoveryProtocolActivation":"Activation", +"samlDiscoveryProtocolActivation":"激活", "samlDiscoveryProtocolIsPassive":"Is Passive", "samlDiscoveryProtocolPolicy":"Policy", "samlDiscoveryProtocolURL":"EndPoint URL", @@ -979,7 +979,7 @@ "samlAuthnContextMapTLSClient":"TLS client", "samlAuthnContextMapKerberos":"Kerberos", "samlCommonDomainCookie":"Common Domain Cookie", -"samlCommonDomainCookieActivation":"Activation", +"samlCommonDomainCookieActivation":"激活", "samlCommonDomainCookieDomain":"Common domain", "samlCommonDomainCookieReader":"Reader URL", "samlCommonDomainCookieWriter":"Writer URL", From 69fdc95229b755cd41964d6e9c32c3e37c27f3e7 Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Wed, 17 Apr 2019 17:56:28 +0200 Subject: [PATCH 07/10] Enable german on portal --- lemonldap-ng-common/lemonldap-ng.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lemonldap-ng-common/lemonldap-ng.ini b/lemonldap-ng-common/lemonldap-ng.ini index 00d5e2275..447922563 100644 --- a/lemonldap-ng-common/lemonldap-ng.ini +++ b/lemonldap-ng-common/lemonldap-ng.ini @@ -183,7 +183,7 @@ staticPrefix = __PORTALSTATICDIR__ templateDir = __PORTALTEMPLATESDIR__ ; languages: available languages for portal interface -languages = en, fr, vi, it, ar +languages = en, fr, vi, it, ar, de ; II - Optional parameters (overwrite configuration) From d0e5be27970a933c2adae81a845db2f58fd29546 Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Wed, 17 Apr 2019 17:58:55 +0200 Subject: [PATCH 08/10] Enable Finnish on portal --- lemonldap-ng-common/lemonldap-ng.ini | 2 +- .../site/htdocs/static/languages/fi.json | 262 ++++++++++++++++++ 2 files changed, 263 insertions(+), 1 deletion(-) create mode 100644 lemonldap-ng-portal/site/htdocs/static/languages/fi.json diff --git a/lemonldap-ng-common/lemonldap-ng.ini b/lemonldap-ng-common/lemonldap-ng.ini index 447922563..99fbd6b97 100644 --- a/lemonldap-ng-common/lemonldap-ng.ini +++ b/lemonldap-ng-common/lemonldap-ng.ini @@ -183,7 +183,7 @@ staticPrefix = __PORTALSTATICDIR__ templateDir = __PORTALTEMPLATESDIR__ ; languages: available languages for portal interface -languages = en, fr, vi, it, ar, de +languages = en, fr, vi, it, ar, de, fi ; II - Optional parameters (overwrite configuration) diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/fi.json b/lemonldap-ng-portal/site/htdocs/static/languages/fi.json new file mode 100644 index 000000000..a281c3342 --- /dev/null +++ b/lemonldap-ng-portal/site/htdocs/static/languages/fi.json @@ -0,0 +1,262 @@ +{ +"PE0":"Käyttäjä todennettu", +"PE1":"Kirjautumisesi on vanhentunut, sinun tulee kirjautua uudelleen", +"PE2":"Käyttäjänimi ja salasana kenttä pitää olla täytetty", +"PE3":"Virheellinen hakemisto käyttäjän tunnus tai salasana", +"PE4":"Käyttäjää ei löytynyt hakemistosta", +"PE5":"Virheelliset kirjautumistiedot", +"PE6":"Virhe yhdistäessä LDAP palvelimelle", +"PE7":"Virhe yhdistäessä LDAP palvelimelle", +"PE8":"Apache::Session moduulissa tapahtui virhe", +"PE9":"Kirjautuminen vaaditaan", +"PE10":"Virheellinen varmenne", +"PE11":"Lasso:Login tai Lasso:Logout alustus epäonnistui", +"PE12":"Liberty-Alliance artefact resolution failed", +"PE13":"Liberty-Alliance defederation failed", +"PE14":"Liberty-Alliance query returned by IDP in assertion is empty", +"PE15":"One of Liberty-Alliance soap calls failed", +"PE16":"One of Liberty-Alliance single logout failed", +"PE17":"No SAML artefact found, or auto-accepting SSO failed", +"PE18":"Initializing, building or requesting SSO failed", +"PE19":"Virhe tallentaessa Liberty-Alliance istunnon tunnistetta", +"PE20":"A Liberty-Alliance Soap End Point process failed", +"PE21":"Tunnuksesi on lukittu", +"PE22":"Salasanasi on vanhentunut", +"PE23":"Varmenne vaaditaan", +"PE24":"Virhe", +"PE25":"Salasana on nyt nollattu ja se pitää vaihtaa", +"PE26":"Salasanaa ei ehkä voitu muuttaa", +"PE27":"Vanha salasana täytyy syöttää uuden salasanan syöttämisen yhteydessä", +"PE28":"Salasana ei ole riittävän vahva", +"PE29":"Salasana on liian lyhyt", +"PE30":"Salasana on liian nuori", +"PE31":"Password used too recently", +"PE32":" authentications remaining, change your password!", +"PE33":"%d päivää, %d tuntia, %d minuuttia ja %sekunttia jäljellä salasanan vanhentumiseen, vaihda salasana!", +"PE34":"Salasanat eivät vastaa toisiaan", +"PE35":"Salasanan vaihto onnistui", +"PE36":"Sinulla on uusi viesti", +"PE37":"Virhellinen URL-osoite", +"PE38":"Schemaa ei ole saatavilla", +"PE39":"Vanha salasana on virheellinen", +"PE40":"Käyttäjänimi on virheellinen", +"PE41":"Istunnon avaaminen ei ole sallittu", +"PE42":"Confirmation required", +"PE43":"Sähköpostiosoite on vaadittu", +"PE44":"Vahvistusavain on virheellinen tai vanhentunut", +"PE45":"Virhe lähettäessä sähköpostia", +"PE46":"Sähköposti on lähetetty", +"PE47":"Olet nyt kirjautunut ulos", +"PE48":"Tuntematon SAML virhe", +"PE49":"Virhe ladatessa SAML palvelua", +"PE50":"Problem when loading an identity provider", +"PE51":"SAML Single Sign On:issa tapahtui virhe", +"PE52":"SAML entity is not known", +"PE53":"SAML message destination is not correct", +"PE54":"SAML message conditions are not respected", +"PE55":"Identity provider initiated single sign on is not authorized", +"PE56":"An error occured during SAML single logout", +"PE57":"Error in SAML message signature management", +"PE58":"An error occured during SAML artifact use", +"PE59":"Communication error with SAML sessions", +"PE60":"Problem when loading a service provider", +"PE61":"An error occured during SAML attributes exchange", +"PE62":"This is an OpenID endpoint page", +"PE63":"You try to use an OpenID identity which is not yours", +"PE64":"A required attribute is not available", +"PE65":"Federation forbidden by security policy", +"PE66":"Vahvistussähköposti on jo lähetetty", +"PE67":"Salasana-kenttä on täytettävä", +"PE68":"Access not granted on CAS service", +"PE69":"Syötä sähköpostiosoitteesi", +"PE70":"Ei vastaavaa käyttäjää", +"PE71":"Anna uusi salasana", +"PE72":"Vahvistus sähköposti on lähetetty", +"PE73":"Radius connection has failed", +"PE74":"Vanha salasana on vaadittu", +"PE75":"You came from an unaccredited IP address", +"PE76":"You failed at typing the captcha", +"PE77":"You have to type the captcha", +"PE78":"Please enter your information", +"PE79":"An information is missing", +"PE80":"Osoite on jo käytössä", +"PE81":"Invalid authentication attempt", +"PE82":"Exceeded authentication timeout", +"PE83":"U2F verification failed. Retry or contact your administrator", +"PE84":"You're not authorized to access to this host", +"PE85":"The remote site ask for a newer session (and UpgradeSession plugin isn't loaded). Logout and retry", +"PE86":"Your account is locked. You must wait 30s before authenticate again", +"PE87":"You must authenticate again to access to Portal", +"PE88":"Your account must have an e-mail address in order to use double factor authentication", +"PE89":"Access not granted on SAML service", +"PE90":"Access not granted on OIDC service", +"PE91":"Access not granted on OID service", +"PE92":"Access not granted on GET service", +"PE93":"Access not granted on IMPERSONATION service", +"2fRegRequired":"This service requires a double factor authentication. Register a device now, then go back to the portal.", +"accept":"Hyväksy", +"accessDenied":"Sinulla ei ole käyttöoikeutta tähän sovellukseen", +"accountCreated":"Käyttäjätili on luotu, väliaikainen salasana on lähetetty sähköpostiisi.", +"accountCreationSuccess":"Tilisi on luotu.", +"action":"Action", +"allowed":"Access ALLOWED", +"anotherInformation":"Another information:", +"areYouSure":"Oletko varma?", +"askToRenew":"This application needs a more recent authentication. Do you want to reauthenticate?", +"askToUpgrade":"This application needs an higher authentication level. Do you want to reauthenticate?", +"attributes":"ATTRIBUTES", +"authPortal":"Todennus portaali", +"authRemaining":"%s authentications remaining, change your password!", +"autoAccept":"Automatically accept in 30 seconds", +"back2CasUrl":"The application you just logged out of has provided a link it would like you to follow", +"back2Portal":"Palaa takaisin portaaliin", +"badCode":"Bad code", +"badName":"Bad name", +"cancel":"Peruuta", +"captcha":"Captcha", +"changeKey":"Generate new key", +"changePwd":"Vaihda salasanasi", +"checkLastLogins":"Tarkista viimeiset kirjautumiseni", +"checkUser":"Check user SSO profile", +"choose2f":"Choose your second factor", +"chooseApp":"Choose an application your are allowed to access to", +"clickHere":"Please click here", +"clickOnYubikey":"Click on your Yubikey", +"closeSSO":"Sulje SSO istuntosi", +"code":"Koodi", +"confirmation":"Vahvistus", +"confirmLinkSent":"A confirmation link has been sent. This link is valid until ", +"confirmPwd":"Vahvista salasana", +"connect":"Kirjaudu", +"connectedAs":"Kirjautuneena ", +"continue":"Jatka", +"createAccount":"Rekisteröidy", +"currentPwd":"Nykyinen salasana", +"date":"Päivämäärä", +"enterCred":"Syötä käyttäjätietosi", +"enterExt2fCode":"A code has been sent to you. Please enter it", +"enterOpenIDLogin":"Please enter your OpenID login", +"enterTotpCode":"Enter TOTP code", +"enterYubikey":"Please use your Yubikey", +"errorMsg":"Virhe viesti", +"fillTheForm":"Fill the form", +"firstName":"Etunimi", +"forbidden":"Access FORBIDDEN", +"forgotPwd":"Unohditko salasanasi?", +"generatePwd":"Luo salasana automaattisesti", +"gotNewMessages":"Sinulla on uusia viestejä", +"goToPortal":"Siirry portaaliin", +"gplSoft":"free software covered by the GPL license", +"groups_sso":"SSO GROUPS", +"headers":"HEADERS", +"id":"Id", +"imSure":"Olen varma", +"info":"Information", +"ipAddr":"IP-osoite", +"key":"Key", +"lastFailedLogins":"Viimeiset virheelliset kirjautumiset", +"lastLogins":"Viimeisimmät kirjautumiset", +"lastName":"Sukunimi", +"linkValidUntil":"Tämä viesti sisältää linkin salasanan nollaamiseen, linkki on voimassa", +"loginHistory":"Kirjautumishistoria", +"login":"Kirjaudu", +"logout":"Kirjaudu ulos", +"logoutConfirm":"Haluatko kirjautua ulos?", +"logoutFromOtherApp":"Logout from other applications ...", +"logoutFromSP":"Logout from service providers ...", +"macros":"MACROS", +"mail":"Sähköposti", +"mailSent2":"Viesti on lähetetty sähköpostiisi.", +"maintenanceMode":"This application is in maintenance, please try to connect later", +"maxNumberof2FDevicesReached":"Maximum number of 2F devices reached!!!", +"missingCode":"Code is missing", +"name":"Name", +"newMessages":"New message(s)", +"newPassword":"Uusi salasana", +"newPwdSentTo":"A confirmation has been sent to your mail address.", +"noHistory":"This is your first connection, welcome!", +"notAuthorized":"You're not authorized to do this", +"notFound":"Not found: you try to access to an unavailable page", +"noTOTPFound":"No TOTP found", +"noU2FKeyFound":"No U2F key found", +"oidcConsent":"The application %s would like to know:", +"oidcConsents":"OIDC consents", +"oidcConsentsFull":"OpenID-Connect consents", +"openidAp":"Do you agree to provide the following parameters?", +"openIdExample":"for example:http://myopenid.org/toto", +"openidExchange":"Do you want to authenticate yourself on %s ?", +"openidPA":"Data usage policy is available at", +"openidRpns":"Parameter %s requested for federation isn't available", +"openSessionSpace":"This space allow you to open a SSO session. This will help you to securely access to all applications authorized by your profil.", +"openSSOSession":"Open your SSO session", +"otherSessions":"Other active sessions", +"password":"Salasana", +"ppGrace":"authentications remaining, change your password!", +"proxyError":"Bad gateway: unable to join remote server", +"pwdChange":"Password change", +"pwd":"Salasana", +"pwdResetAlreadyIssued":"A password reset request was already issued on ", +"pwdWillExpire":"%s days, %s hours, %s minutes and %s seconds before password expiration, change it!", +"redirectedFrom":"Olet uudelleenohjattu", +"redirectedIn":"You'll be redirected in 30 seconds", +"redirectionInProgres":"Redirection in progress...", +"redirectionToIdp":"Redirection to your Identity Provider", +"refreshrights":"Refresh my rights", +"refuse":"Refuse", +"register":"Rekisteröidy", +"registerRequestAlreadyIssued":"A register request for this account was already issued on ", +"rememberChoice":"Muista valintani", +"removeOtherSessions":"Remove other sessions", +"resendConfirmMail":"Uudelleen lähetä vahvistus sähköposti?", +"resentConfirm":"Do you want the confirmation mail to be resent?", +"resetPwd":"Palauta salasanani?", +"rightsReloadNeedsLogout":"Rights reloads need to logout and login again", +"scope":"Scope", +"search":"Search", +"selectIdP":"Select your Identity Provider", +"service":"Service", +"sendPwd":"Send me a link", +"serverError":"Error occurs on the server", +"serviceProvidedBy":"Service provided by", +"sessionsDeleted":"The following sessions have been closed", +"sfaManager":"2ndFA Manager", +"spoofId":"Spoofed Id", +"SSOSessionInactive":"SSO session inactive", +"stayConnected":"Stay connected on this device", +"submit":"Lähetä", +"totpExistingKey":"A TOTP secret already exists", +"touchU2fDevice":"Please touch the flashing U2F device now.", +"touchU2fDeviceOrEnterTotp":"Please touch the flashing U2F device or enter TOTP code.", +"type":"Type", +"u2fFailed":"U2F verification failed. Retry or contact your administrator", +"u2fPermission":"You may be prompted to allow the site permission to access your security keys. After granting permission, the device will start to blink.", +"u2fWelcome":"U2F device management", +"unableToGetKey":"Unable to access to your key. Retry or contact your administrator", +"unknownAction":"Unknown action", +"unregister":"Unregister", +"updateCdc":"Update Common Domain Cookie", +"upgradeSession":"Upgrade session", +"user":"Käyttäjä", +"useYubikey":"Käytä Yubikeytä", +"value":"Value", +"verify":"Vahvista", +"VHnotFound":"Virtual Host not found", +"wait":"Odota", +"waitingmessage":"Authentication in progress, please wait", +"warning":"Varoitus", +"welcomeOnPortal":"Welcome on your secured authentication portal.", +"yesResendMail":"Kyllä, uudelleen lähetä sähköposti", +"yourAddress":"Osoitteesi", +"yourApps":"Sovelluksesi", +"yourEmail":"Sähköpostiosoitteesi", +"yourIdentity":"Your identity", +"yourIdentityIs":"Your identity is", +"yourKeyIsRegistered":"Your key is registered", +"yourKeyIsAlreadyRegistered":"Your key is ALREADY registered !!!", +"yourKeyIsUnregistered":"Your key has been unregistered", +"yourKeyIsVerified":"Your key is verified", +"yourNewTotpKey":"Your new TOTP key, please test it and enter the code", +"yourPhone":"Puhelinnumerosi", +"yourProfile":"Profiilisi", +"yourTotpKey":"Your TOTP key" +} \ No newline at end of file From 4f90db8918ef8c2bcda9975fe53c69820337d3bb Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Wed, 17 Apr 2019 18:01:46 +0200 Subject: [PATCH 09/10] Enable Finnish on portal --- .../site/templates/common/mail/fi.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 lemonldap-ng-portal/site/templates/common/mail/fi.json diff --git a/lemonldap-ng-portal/site/templates/common/mail/fi.json b/lemonldap-ng-portal/site/templates/common/mail/fi.json new file mode 100644 index 000000000..2bfa99ab4 --- /dev/null +++ b/lemonldap-ng-portal/site/templates/common/mail/fi.json @@ -0,0 +1,18 @@ +{ +"accountCreated":"Tunnus on luotu, väliaikainen salasana on lähetetty sähköpostiisi.", +"autoMail":"Tämä sähköpostiviesti lähetetään automaattisesti", +"click2Register":"Klikkaa tästä vahvistaaksesi käyttäjätunnuksesi rekisteröinnin", +"click2Reset":"Klikkaa tästä nollataksesi salasanasi", +"hello":"Hei", +"mail2fSubject":"[LemonLDAP::NG] Your login code", +"mailConfirmSubject":"[LemonLDAP::NG] Salasanan nollauksen vahvistus", +"mailSubject":"[LemonLDAP::NG] Uusi salasanasi", +"newPwdIs":"Uusi salasanasi on", +"pwdChanged":"Salasanasi on vaihdettu.", +"pwdIs":"Sinun salasanasi on", +"registerConfirmSubject":"[LemonLDAP::NG] Tunnuksen rekisteröinnin vahvistus", +"registerDoneSubject":"[LemonLDAP::NG] Uusi käyttäjätunnuksesi", +"requestIssuedFromIP":"The request was issued from IP", +"yourLoginCodeIs":"Your login code is", +"yourLoginIs":"Your login is" +} \ No newline at end of file From 974007ec8b9fa49a82445095ad136331ac3213cb Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Wed, 17 Apr 2019 18:10:56 +0200 Subject: [PATCH 10/10] Update translation (using 100% match suggestions) --- lemonldap-ng-portal/site/htdocs/static/languages/fi.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/fi.json b/lemonldap-ng-portal/site/htdocs/static/languages/fi.json index a281c3342..b0e5f312b 100644 --- a/lemonldap-ng-portal/site/htdocs/static/languages/fi.json +++ b/lemonldap-ng-portal/site/htdocs/static/languages/fi.json @@ -125,7 +125,7 @@ "closeSSO":"Sulje SSO istuntosi", "code":"Koodi", "confirmation":"Vahvistus", -"confirmLinkSent":"A confirmation link has been sent. This link is valid until ", +"confirmLinkSent":"Vahvistuslinkki on lähetetty, tämä linkki on voimassa", "confirmPwd":"Vahvista salasana", "connect":"Kirjaudu", "connectedAs":"Kirjautuneena ", @@ -162,7 +162,7 @@ "login":"Kirjaudu", "logout":"Kirjaudu ulos", "logoutConfirm":"Haluatko kirjautua ulos?", -"logoutFromOtherApp":"Logout from other applications ...", +"logoutFromOtherApp":"Kirjaudu toiseen sovellukseen...", "logoutFromSP":"Logout from service providers ...", "macros":"MACROS", "mail":"Sähköposti", @@ -196,7 +196,7 @@ "pwdChange":"Password change", "pwd":"Salasana", "pwdResetAlreadyIssued":"A password reset request was already issued on ", -"pwdWillExpire":"%s days, %s hours, %s minutes and %s seconds before password expiration, change it!", +"pwdWillExpire":"%d päivää, %d tuntia, %d minuuttia ja %sekunttia jäljellä salasanan vanhentumiseen, vaihda salasana!", "redirectedFrom":"Olet uudelleenohjattu", "redirectedIn":"You'll be redirected in 30 seconds", "redirectionInProgres":"Redirection in progress...",