diff --git a/CHANGELOG.md b/CHANGELOG.md index ce29cfb7e..b444bf1dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +# Upcoming Wekan release + +This release adds the following new features: + +- [Improve authentication](https://github.com/wekan/wekan/pull/2065): remove login dropdown, + and add setting `DEFAULT_AUTHENTICATION_METHOD=ldap` or + `sudo snap set wekan default-authentication-method='ldap'`. Thanks to Akuket. Closes wekan/wekan-ldap#31 + +Thanks to above GitHub users for their contributions. + # v1.94 2018-12-18 Wekan version This release adds the following new features: diff --git a/Dockerfile b/Dockerfile index 1383883e7..b64b124ad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -70,6 +70,7 @@ ARG LOGOUT_IN ARG LOGOUT_ON_HOURS ARG LOGOUT_ON_MINUTES ARG CORS +ARG DEFAULT_AUTHENTICATION_METHOD # Set the environment variables (defaults where required) # DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303 @@ -142,7 +143,8 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth LOGOUT_IN="" \ LOGOUT_ON_HOURS="" \ LOGOUT_ON_MINUTES="" \ - CORS="" + CORS="" \ + DEFAULT_AUTHENTICATION_METHOD="" # Copy the app to the image COPY ${SRC_PATH} /home/wekan/app diff --git a/client/components/main/editor.js b/client/components/main/editor.js index 20ece5622..152f69e2a 100755 --- a/client/components/main/editor.js +++ b/client/components/main/editor.js @@ -9,10 +9,12 @@ Template.editor.onRendered(() => { match: /\B@([\w.]*)$/, search(term, callback) { const currentBoard = Boards.findOne(Session.get('currentBoard')); - callback(currentBoard.activeMembers().map((member) => { - const username = Users.findOne(member.userId).username; - return username.includes(term) ? username : null; - }).filter(Boolean)); + if (currentBoard) { + callback(currentBoard.activeMembers().map((member) => { + const username = Users.findOne(member.userId).username; + return username.includes(term) ? username : null; + }).filter(Boolean)); + } }, template(value) { return value; @@ -37,6 +39,9 @@ const at = HTML.CharRef({html: '@', str: '@'}); Blaze.Template.registerHelper('mentions', new Template('mentions', function() { const view = this; const currentBoard = Boards.findOne(Session.get('currentBoard')); + if (!currentBoard) { + return HTML.Raw(''); + } const knowedUsers = currentBoard.members.map((member) => { const u = Users.findOne(member.userId); if(u){ diff --git a/client/components/main/layouts.jade b/client/components/main/layouts.jade index 55ee2686a..1c22fee6c 100644 --- a/client/components/main/layouts.jade +++ b/client/components/main/layouts.jade @@ -23,7 +23,6 @@ template(name="userFormsLayout") br section.auth-dialog +Template.dynamic(template=content) - +connectionMethod if isCas .at-form button#cas(class='at-btn submit' type='submit') {{casSignInLabel}} diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js index a50d167e3..89dcca2df 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -6,29 +6,14 @@ const i18nTagToT9n = (i18nTag) => { return i18nTag; }; -const validator = { - set(obj, prop, value) { - if (prop === 'state' && value !== 'signIn') { - $('.at-form-authentication').hide(); - } else if (prop === 'state' && value === 'signIn') { - $('.at-form-authentication').show(); - } - // The default behavior to store the value - obj[prop] = value; - // Indicate success - return true; - }, -}; - -Template.userFormsLayout.onCreated(() => { +Template.userFormsLayout.onCreated(function() { + Meteor.call('getDefaultAuthenticationMethod', (error, result) => { + this.data.defaultAuthenticationMethod = new ReactiveVar(error ? undefined : result); + }); Meteor.subscribe('setting'); - }); Template.userFormsLayout.onRendered(() => { - - AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator); - const i18nTag = navigator.language; if (i18nTag) { T9n.setLanguage(i18nTagToT9n(i18nTag)); @@ -101,13 +86,11 @@ Template.userFormsLayout.events({ } }); }, - 'click #at-btn'(event) { - /* All authentication method can be managed/called here. - !! DON'T FORGET to correctly fill the fields of the user during its creation if necessary authenticationMethod : String !! - */ - const authenticationMethodSelected = $('.select-authentication').val(); - // Local account - if (authenticationMethodSelected === 'password') { + 'click #at-btn'(event, instance) { + const email = $('#at-field-username_and_email').val(); + const password = $('#at-field-password').val(); + + if (FlowRouter.getRouteName() !== 'atSignIn' || password === '' || email === '') { return; } @@ -115,29 +98,11 @@ Template.userFormsLayout.events({ event.preventDefault(); event.stopImmediatePropagation(); - const email = $('#at-field-username_and_email').val(); - const password = $('#at-field-password').val(); - - // Ldap account - if (authenticationMethodSelected === 'ldap') { - // Check if the user can use the ldap connection - Meteor.subscribe('user-authenticationMethod', email, { - onReady() { - const user = Users.findOne(); - if (user === undefined || user.authenticationMethod === 'ldap') { - // Use the ldap connection package - Meteor.loginWithLDAP(email, password, function(error) { - if (!error) { - // Connection - return FlowRouter.go('/'); - } - return error; - }); - } - return this.stop(); - }, - }); - } + Meteor.subscribe('user-authenticationMethod', email, { + onReady() { + return authentication.call(this, instance, email, password); + }, + }); }, }); @@ -146,3 +111,49 @@ Template.defaultLayout.events({ Modal.close(); }, }); + +function authentication(instance, email, password) { + const user = Users.findOne(); + + // Authentication with password + if (user && user.authenticationMethod === 'password') { + $('#at-pwd-form').submit(); + return this.stop(); + } + + const authenticationMethod = user + ? user.authenticationMethod + : instance.data.defaultAuthenticationMethod.get(); + + switch (authenticationMethod) { + case 'ldap': + // Use the ldap connection package + Meteor.loginWithLDAP(email, password, function(error) { + if (error) { + displayError('error-ldap-login'); + return this.stop(); + } else { + return FlowRouter.go('/'); + } + }); + break; + + default: + displayError('error-undefined'); + } + + return this.stop(); +} + +function displayError(code) { + const translated = TAPi18n.__(code); + + if (translated === code) { + return; + } + + if(!$('.at-error').length) { + $('.at-pwd-form').before('

'); + } + $('.at-error p').text(translated); +} diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade deleted file mode 100644 index ac4c8c642..000000000 --- a/client/components/settings/connectionMethod.jade +++ /dev/null @@ -1,6 +0,0 @@ -template(name='connectionMethod') - div.at-form-authentication - label {{_ 'authentication-method'}} - select.select-authentication - each authentications - option(value="{{value}}") {{_ value}} diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js deleted file mode 100644 index 9fe8f382d..000000000 --- a/client/components/settings/connectionMethod.js +++ /dev/null @@ -1,34 +0,0 @@ -Template.connectionMethod.onCreated(function() { - this.authenticationMethods = new ReactiveVar([]); - - Meteor.call('getAuthenticationsEnabled', (_, result) => { - if (result) { - // TODO : add a management of different languages - // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) - this.authenticationMethods.set([ - {value: 'password'}, - // Gets only the authentication methods availables - ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})), - ]); - } - - // If only the default authentication available, hides the select boxe - const content = $('.at-form-authentication'); - if (!(this.authenticationMethods.get().length > 1)) { - content.hide(); - } else { - content.show(); - } - }); -}); - -Template.connectionMethod.onRendered(() => { - // Moves the select boxe in the first place of the at-pwd-form div - $('.at-form-authentication').detach().prependTo('.at-pwd-form'); -}); - -Template.connectionMethod.helpers({ - authentications() { - return Template.instance().authenticationMethods.get(); - }, -}); diff --git a/docker-compose-build.yml b/docker-compose-build.yml index a3ee2bd64..d72769484 100644 --- a/docker-compose-build.yml +++ b/docker-compose-build.yml @@ -223,6 +223,9 @@ services: # LOGOUT_ON_MINUTES : The number of minutes # example : LOGOUT_ON_MINUTES=55 #- LOGOUT_ON_MINUTES= + # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate. Method can be password or ldap. + # example : DEFAULT_AUTHENTICATION_METHOD=ldap + #- DEFAULT_AUTHENTICATION_METHOD= depends_on: - wekandb diff --git a/docker-compose-postgresql.yml b/docker-compose-postgresql.yml index ab15d978c..215dc7d56 100644 --- a/docker-compose-postgresql.yml +++ b/docker-compose-postgresql.yml @@ -245,6 +245,9 @@ services: # LOGOUT_ON_MINUTES : The number of minutes # example : LOGOUT_ON_MINUTES=55 #- LOGOUT_ON_MINUTES= + # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate. . Method can be password or ldap. + # example : DEFAULT_AUTHENTICATION_METHOD=ldap + #- DEFAULT_AUTHENTICATION_METHOD= depends_on: - mongodb diff --git a/docker-compose.yml b/docker-compose.yml index 0cb58cffe..7d7bf9d10 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -212,6 +212,9 @@ services: # LOGOUT_ON_MINUTES : The number of minutes # example : LOGOUT_ON_MINUTES=55 #- LOGOUT_ON_MINUTES= + # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate. Method can be password or ldap. + # example : DEFAULT_AUTHENTICATION_METHOD=ldap + #- DEFAULT_AUTHENTICATION_METHOD= depends_on: - wekandb diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json index e19f9b40f..a2692e96f 100644 --- a/i18n/ar.i18n.json +++ b/i18n/ar.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/bg.i18n.json b/i18n/bg.i18n.json index 22e3e7704..f26a29c59 100644 --- a/i18n/bg.i18n.json +++ b/i18n/bg.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json index cc7cb39b3..3a94b6493 100644 --- a/i18n/br.i18n.json +++ b/i18n/br.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json index e43d799ec..d39c65970 100644 --- a/i18n/ca.i18n.json +++ b/i18n/ca.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json index fe7d83035..c3775d426 100644 --- a/i18n/cs.i18n.json +++ b/i18n/cs.i18n.json @@ -1,6 +1,6 @@ { "accept": "Přijmout", - "act-activity-notify": "Activity Notification", + "act-activity-notify": "Notifikace aktivit", "act-addAttachment": "přiložen __attachment__ do __card__", "act-addSubtask": "added subtask __checklist__ to __card__", "act-addChecklist": "přidán checklist __checklist__ do __card__", @@ -78,7 +78,7 @@ "and-n-other-card": "A __count__ další karta(y)", "and-n-other-card_plural": "A __count__ dalších karet", "apply": "Použít", - "app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.", + "app-is-offline": "Načítá se, prosím čekejte. Obnovení stránky způsobí ztrátu dat. Pokud se načítání nedaří, zkontrolujte prosím server.", "archive": "Move to Archive", "archive-all": "Move All to Archive", "archive-board": "Move Board to Archive", @@ -283,20 +283,20 @@ "import-board": "Importovat tablo", "import-board-c": "Importovat tablo", "import-board-title-trello": "Import board from Trello", - "import-board-title-wekan": "Import board from previous export", + "import-board-title-wekan": "Importovat tablo z předchozího exportu", "import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.", "import-sandstorm-warning": "Importované tablo spaže všechny existující data v tablu a nahradí je importovaným tablem.", "from-trello": "Z Trella", - "from-wekan": "From previous export", + "from-wekan": "Z předchozího exportu", "import-board-instruction-trello": "Na svém Trello tablu, otevři 'Menu', pak 'More', 'Print and Export', 'Export JSON', a zkopíruj výsledný text", - "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", + "import-board-instruction-wekan": "Ve vašem tablu jděte do 'Menu', klikněte na 'Exportovat tablo' a zkopírujte text ze staženého souboru.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Sem vlož validní JSON data", "import-map-members": "Mapovat členy", - "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", + "import-members-map": "Toto importované tablo obsahuje několik osob. Prosím namapujte osoby z importu na místní uživatelské účty.", "import-show-user-mapping": "Zkontrolovat namapování členů", - "import-user-select": "Pick your existing user you want to use as this member", - "importMapMembersAddPopup-title": "Select member", + "import-user-select": "Vyberte existující uživatelský účet, kterého chcete použít pro tuto osobu", + "importMapMembersAddPopup-title": "Zvolte osobu", "info": "Verze", "initials": "Iniciály", "invalid-date": "Neplatné datum", @@ -460,7 +460,7 @@ "send-smtp-test": "Poslat si zkušební email.", "invitation-code": "Kód pozvánky", "email-invite-register-subject": "__inviter__ odeslal pozvánku", - "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.", + "email-invite-register-text": "Ahoj __user__,\n\n__inviter__ tě přizval do kanban boardu ke spolupráci.\n\nNásleduj prosím odkaz níže:\n\n__url__\n\nKód Tvé pozvánky je: __icode__\n\nDěkujeme.", "email-smtp-test-subject": "SMTP Test Email", "email-smtp-test-text": "Email byl úspěšně odeslán", "error-invitation-code-not-exist": "Kód pozvánky neexistuje.", @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/da.i18n.json b/i18n/da.i18n.json index 930f9181c..f73389d11 100644 --- a/i18n/da.i18n.json +++ b/i18n/da.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index db620dd63..972887275 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Verstecke Logo", "add-custom-html-after-body-start": "Füge benutzerdefiniertes HTML nach Anfang hinzu", - "add-custom-html-before-body-end": "Füge benutzerdefiniertes HTML vor Ende hinzu" + "add-custom-html-before-body-end": "Füge benutzerdefiniertes HTML vor Ende hinzu", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/el.i18n.json b/i18n/el.i18n.json index 1534d8352..5fafb43e8 100644 --- a/i18n/el.i18n.json +++ b/i18n/el.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json index 3b4172dfb..0899b113a 100644 --- a/i18n/en-GB.i18n.json +++ b/i18n/en-GB.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 5aa04e971..a4138f148 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -620,5 +620,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json index 3613008e6..4fdb7fabc 100644 --- a/i18n/eo.i18n.json +++ b/i18n/eo.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json index 822c2b7a4..0b8544791 100644 --- a/i18n/es-AR.i18n.json +++ b/i18n/es-AR.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json index 1313e252e..7d37a331d 100644 --- a/i18n/es.i18n.json +++ b/i18n/es.i18n.json @@ -619,5 +619,7 @@ "layout": "Disñeo", "hide-logo": "Ocultar logo", "add-custom-html-after-body-start": "Añade HTML personalizado después de ", - "add-custom-html-before-body-end": "Añade HTML personalizado después de " + "add-custom-html-before-body-end": "Añade HTML personalizado después de ", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json index d2a6e68cf..e12e0f194 100644 --- a/i18n/eu.i18n.json +++ b/i18n/eu.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json index fded3329e..e72048d8f 100644 --- a/i18n/fa.i18n.json +++ b/i18n/fa.i18n.json @@ -619,5 +619,7 @@ "layout": "لایه", "hide-logo": "مخفی سازی نماد", "add-custom-html-after-body-start": "افزودن کد های HTML بعد از شروع", - "add-custom-html-before-body-end": "افزودن کد های HTML قبل از پایان" + "add-custom-html-before-body-end": "افزودن کد های HTML قبل از پایان", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json index b5a5d0255..9f2432b4b 100644 --- a/i18n/fi.i18n.json +++ b/i18n/fi.i18n.json @@ -619,5 +619,7 @@ "layout": "Ulkoasu", "hide-logo": "Piilota Logo", "add-custom-html-after-body-start": "Lisää HTML alun jälkeen", - "add-custom-html-before-body-end": "Lisä HTML ennen loppua" + "add-custom-html-before-body-end": "Lisä HTML ennen loppua", + "error-undefined": "Jotain meni pieleen", + "error-ldap-login": "Virhe tapahtui yrittäessä kirjautua sisään" } \ No newline at end of file diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 98fade89a..db70770d4 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -1,6 +1,6 @@ { "accept": "Accepter", - "act-activity-notify": "Activity Notification", + "act-activity-notify": "Notification d'activité", "act-addAttachment": "a joint __attachment__ à __card__", "act-addSubtask": "a ajouté une sous-tâche __checklist__ à __card__", "act-addChecklist": "a ajouté la checklist __checklist__ à __card__", @@ -78,7 +78,7 @@ "and-n-other-card": "Et __count__ autre carte", "and-n-other-card_plural": "Et __count__ autres cartes", "apply": "Appliquer", - "app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.", + "app-is-offline": "Chargement en cours, veuillez patienter. Vous risquez de perdre des données si vous rechargez la page. Si le chargement échoue, veuillez vérifier que le serveur n'est pas arrêté.", "archive": "Archiver", "archive-all": "Tout archiver", "archive-board": "Archiver le tableau", @@ -283,20 +283,20 @@ "import-board": "importer un tableau", "import-board-c": "Importer un tableau", "import-board-title-trello": "Importer le tableau depuis Trello", - "import-board-title-wekan": "Import board from previous export", - "import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.", + "import-board-title-wekan": "Importer le tableau depuis l'export précédent", + "import-sandstorm-backup-warning": "Ne supprimez pas les données que vous importez du tableau exporté d'origine ou de Trello avant de vérifier que la graine peut se fermer et s'ouvrir à nouveau, ou qu'une erreur \"Tableau introuvable\" survient, sinon vous perdrez vos données.", "import-sandstorm-warning": "Le tableau importé supprimera toutes les données du tableau et les remplacera avec celles du tableau importé.", "from-trello": "Depuis Trello", - "from-wekan": "From previous export", + "from-wekan": "Depuis un export précédent", "import-board-instruction-trello": "Dans votre tableau Trello, allez sur 'Menu', puis sur 'Plus', 'Imprimer et exporter', 'Exporter en JSON' et copiez le texte du résultat", - "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", + "import-board-instruction-wekan": "Dans votre tableau, allez dans 'Menu', puis 'Exporter un tableau', et copier le texte du fichier téléchargé.", "import-board-instruction-about-errors": "Si une erreur survient en important le tableau, il se peut que l'import ait fonctionné, et que le tableau se trouve sur la page \"Tous les tableaux\".", "import-json-placeholder": "Collez ici les données JSON valides", "import-map-members": "Faire correspondre aux membres", - "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", + "import-members-map": "Le tableau que vous venez d'importer contient des membres. Veuillez associer les membres que vous souhaitez importer à vos utilisateurs.", "import-show-user-mapping": "Contrôler l'association des membres", - "import-user-select": "Pick your existing user you want to use as this member", - "importMapMembersAddPopup-title": "Select member", + "import-user-select": "Sélectionnez l'utilisateur existant que vous voulez associer à ce membre", + "importMapMembersAddPopup-title": "Sélectionner le membre", "info": "Version", "initials": "Initiales", "invalid-date": "Date invalide", @@ -460,8 +460,8 @@ "send-smtp-test": "Envoyer un mail de test à vous-même", "invitation-code": "Code d'invitation", "email-invite-register-subject": "__inviter__ vous a envoyé une invitation", - "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.", - "email-smtp-test-subject": "SMTP Test Email", + "email-invite-register-text": "Cher __user__,\n\n__inviter__ vous invite à le rejoindre sur le tableau kanban pour collaborer.\n\nVeuillez suivre le lien ci-dessous :\n__url__\n\nVotre code d'invitation est : __icode__\n\nMerci.", + "email-smtp-test-subject": "Email de test SMTP", "email-smtp-test-text": "Vous avez envoyé un mail avec succès", "error-invitation-code-not-exist": "Ce code d'invitation n'existe pas.", "error-notAuthorized": "Vous n'êtes pas autorisé à accéder à cette page.", @@ -618,6 +618,8 @@ "custom-product-name": "Nom personnalisé", "layout": "Interface", "hide-logo": "Cacher le logo", - "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-after-body-start": "Ajouter le HTML personnalisé après le début du ", + "add-custom-html-before-body-end": "Ajouter le HTML personnalisé avant la fin du ", + "error-undefined": "Une erreur inconnue s'est produite", + "error-ldap-login": "Une erreur s'est produite lors de la tentative de connexion" } \ No newline at end of file diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json index 7302a65ca..4a16edff7 100644 --- a/i18n/gl.i18n.json +++ b/i18n/gl.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index 2b13e730c..e18f4c576 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -619,5 +619,7 @@ "layout": "פריסה", "hide-logo": "הסתרת לוגו", "add-custom-html-after-body-start": "הוספת קוד HTML מותאם אישית בתחילת ה .", - "add-custom-html-before-body-end": "הוספת קוד HTML מותאם אישית בסוף ה." + "add-custom-html-before-body-end": "הוספת קוד HTML מותאם אישית בסוף ה.", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/hi.i18n.json b/i18n/hi.i18n.json index 17ab86559..ea4276d0c 100644 --- a/i18n/hi.i18n.json +++ b/i18n/hi.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json index 671e9ea5a..0fc4d4ea7 100644 --- a/i18n/hu.i18n.json +++ b/i18n/hu.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/hy.i18n.json b/i18n/hy.i18n.json index 403471aed..a0d91b428 100644 --- a/i18n/hy.i18n.json +++ b/i18n/hy.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json index 2b67e996d..e83a7c74d 100644 --- a/i18n/id.i18n.json +++ b/i18n/id.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Sembunyikan Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ig.i18n.json b/i18n/ig.i18n.json index f319d9bae..bbbbcc6d6 100644 --- a/i18n/ig.i18n.json +++ b/i18n/ig.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json index 1e3cc86c7..2b7c1e6b1 100644 --- a/i18n/it.i18n.json +++ b/i18n/it.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json index b5728aca8..2091a5941 100644 --- a/i18n/ja.i18n.json +++ b/i18n/ja.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ka.i18n.json b/i18n/ka.i18n.json index 4f80d1ead..d538eae81 100644 --- a/i18n/ka.i18n.json +++ b/i18n/ka.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/km.i18n.json b/i18n/km.i18n.json index 6b761777f..e8d357891 100644 --- a/i18n/km.i18n.json +++ b/i18n/km.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json index aa46dc6b8..91065b358 100644 --- a/i18n/ko.i18n.json +++ b/i18n/ko.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/lv.i18n.json b/i18n/lv.i18n.json index 9675b56b5..999335a5d 100644 --- a/i18n/lv.i18n.json +++ b/i18n/lv.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/mn.i18n.json b/i18n/mn.i18n.json index 1acbc6c34..647358fa8 100644 --- a/i18n/mn.i18n.json +++ b/i18n/mn.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/nb.i18n.json b/i18n/nb.i18n.json index e26f86dbc..77f1d2002 100644 --- a/i18n/nb.i18n.json +++ b/i18n/nb.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json index a71356bfa..96ed163c7 100644 --- a/i18n/nl.i18n.json +++ b/i18n/nl.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json index 6389b2402..9c2e2ef03 100644 --- a/i18n/pl.i18n.json +++ b/i18n/pl.i18n.json @@ -619,5 +619,7 @@ "layout": "Układ strony", "hide-logo": "Ukryj logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json index d9589518d..2189381b7 100644 --- a/i18n/pt-BR.i18n.json +++ b/i18n/pt-BR.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/pt.i18n.json b/i18n/pt.i18n.json index b15d2d664..fc98a27b0 100644 --- a/i18n/pt.i18n.json +++ b/i18n/pt.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json index df2b9c363..a54e1fa01 100644 --- a/i18n/ro.i18n.json +++ b/i18n/ro.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index 40b7529c7..7eda08cc9 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -109,7 +109,7 @@ "boardChangeColorPopup-title": "Изменить фон доски", "boardChangeTitlePopup-title": "Переименовать доску", "boardChangeVisibilityPopup-title": "Изменить настройки видимости", - "boardChangeWatchPopup-title": "Изменить Отслеживание", + "boardChangeWatchPopup-title": "Режимы оповещения", "boardMenuPopup-title": "Меню доски", "boards": "Доски", "board-view": "Вид доски", @@ -272,7 +272,7 @@ "filter-on-desc": "Показываются карточки, соответствующие настройкам фильтра. Нажмите для редактирования.", "filter-to-selection": "Filter to selection", "advanced-filter-label": "Расширенный фильтр", - "advanced-filter-description": "Расширенный фильтр позволяет написать строку, содержащую следующие операторы: == != <= >= && || ( ) Пробел используется как разделитель между Операторами. Вы можете фильтровать все настраиваемые поля, введя их имена и значения. Например: Поле1 == Значение1. Примечание. Если поля или значения содержат пробелы, вам необходимо взять их в одинарные кавычки. Например: 'Поле 1' == 'Значение 1'. Для одиночных управляющих символов (' \\/), которые нужно пропустить, вы можете использовать \\. Например: Field1 = I\\'m. Также вы можете комбинировать несколько условий. Например: F1 == V1 || F1 == V2. Обычно все операторы интерпретируются слева направо. Вы можете изменить порядок, разместив скобки. Например: F1 == V1 && (F2 == V2 || F2 == V3). Также вы можете искать текстовые поля с помощью регулярных выражений: F1 == /Tes.*/i", + "advanced-filter-description": "Расширенный фильтр позволяет написать строку, содержащую следующие операторы: == != <= >= && || ( ) Пробел используется как разделитель между операторами. Можно фильтровать все настраиваемые поля, вводя их имена и значения. Например: Поле1 == Значение1. Примечание. Если поля или значения содержат пробелы, нужно взять их в одинарные кавычки. Например: 'Поле 1' == 'Значение 1'. Для одиночных управляющих символов (' \\/), которые нужно пропустить, следует использовать \\. Например: Field1 = I\\'m. Также можно комбинировать несколько условий. Например: F1 == V1 || F1 == V2. Обычно все операторы интерпретируются слева направо, но можно изменить порядок, разместив скобки. Например: F1 == V1 && (F2 == V2 || F2 == V3). Также можно искать текстовые поля с помощью регулярных выражений: F1 == /Tes.*/i", "fullname": "Полное имя", "header-logo-title": "Вернуться к доскам.", "hide-system-messages": "Скрыть системные сообщения", @@ -341,7 +341,7 @@ "moveSelectionPopup-title": "Переместить выделение", "multi-selection": "Выбрать несколько", "multi-selection-on": "Выбрать несколько из", - "muted": "Заглушен", + "muted": "Не беспокоить", "muted-info": "Вы НИКОГДА не будете уведомлены ни о каких изменениях в этой доске.", "my-boards": "Мои доски", "name": "Имя", @@ -429,7 +429,7 @@ "view-it": "Просмотреть", "warn-list-archived": "внимание: эта карточка из списка, который находится в Архиве", "watch": "Следить", - "watching": "Отслеживается", + "watching": "Полный контроль", "watching-info": "Вы будете уведомлены об любых изменениях в этой доске.", "welcome-board": "Приветственная Доска", "welcome-swimlane": "Этап 1", @@ -619,5 +619,7 @@ "layout": "Внешний вид", "hide-logo": "Скрыть логотип", "add-custom-html-after-body-start": "Добавить HTML после начала ", - "add-custom-html-before-body-end": "Добавить HTML до завершения " + "add-custom-html-before-body-end": "Добавить HTML до завершения ", + "error-undefined": "Что-то пошло не так", + "error-ldap-login": "Ошибка при попытке авторизации" } \ No newline at end of file diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json index c61a9948a..7816ca297 100644 --- a/i18n/sr.i18n.json +++ b/i18n/sr.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json index dfb59e4eb..87da07f95 100644 --- a/i18n/sv.i18n.json +++ b/i18n/sv.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Dölj logotypen", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/sw.i18n.json b/i18n/sw.i18n.json index 040c62b96..be53203fb 100644 --- a/i18n/sw.i18n.json +++ b/i18n/sw.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json index 9bfe43101..460f1f121 100644 --- a/i18n/ta.i18n.json +++ b/i18n/ta.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json index 3724db811..21965a726 100644 --- a/i18n/th.i18n.json +++ b/i18n/th.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index 7ed6a648a..bf2d99ac5 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -619,5 +619,7 @@ "layout": "Düzen", "hide-logo": "Logoyu Gizle", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json index 18ebc4b19..0c2ebbc2d 100644 --- a/i18n/uk.i18n.json +++ b/i18n/uk.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json index 08e97a0e9..4a9aaeb98 100644 --- a/i18n/vi.i18n.json +++ b/i18n/vi.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json index 76e062cec..35e9c280d 100644 --- a/i18n/zh-CN.i18n.json +++ b/i18n/zh-CN.i18n.json @@ -619,5 +619,7 @@ "layout": "布局", "hide-logo": "隐藏LOGO", "add-custom-html-after-body-start": "添加定制的HTML在开始之前", - "add-custom-html-before-body-end": "添加定制的HTML在结束之后" + "add-custom-html-before-body-end": "添加定制的HTML在结束之后", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json index 570e878eb..b2e7136a0 100644 --- a/i18n/zh-TW.i18n.json +++ b/i18n/zh-TW.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/models/settings.js b/models/settings.js index bfd844b0c..674c99a02 100644 --- a/models/settings.js +++ b/models/settings.js @@ -260,5 +260,9 @@ if (Meteor.isServer) { cas: isCasEnabled(), }; }, + + getDefaultAuthenticationMethod() { + return process.env.DEFAULT_AUTHENTICATION_METHOD; + }, }); } diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index f0f4cc71d..720ce87ca 100644 --- a/sandstorm-pkgdef.capnp +++ b/sandstorm-pkgdef.capnp @@ -254,6 +254,7 @@ const myCommand :Spk.Manifest.Command = ( (key = "OAUTH2_TOKEN_ENDPOINT", value=""), (key = "LDAP_ENABLE", value="false"), (key = "SANDSTORM", value = "1"), - (key = "METEOR_SETTINGS", value = "{\"public\": {\"sandstorm\": true}}") + (key = "METEOR_SETTINGS", value = "{\"public\": {\"sandstorm\": true}}"), + (key = "DEFAULT_AUTHENTICATION_METHOD", value = "") ] ); diff --git a/snap-src/bin/config b/snap-src/bin/config index 92532978b..7eb9a990a 100755 --- a/snap-src/bin/config +++ b/snap-src/bin/config @@ -3,7 +3,7 @@ # All supported keys are defined here together with descriptions and default values # list of supported keys -keys="MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API CORS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES" +keys="MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API CORS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD" # default values DESCRIPTION_MONGODB_BIND_UNIX_SOCKET="mongodb binding unix socket:\n"\ @@ -289,3 +289,8 @@ KEY_LOGOUT_ON_HOURS="logout-on-hours" DESCRIPTION_LOGOUT_ON_MINUTES="The number of minutes" DEFAULT_LOGOUT_ON_MINUTES="" KEY_LOGOUT_ON_MINUTES="logout-on-minutes" + + +DESCRIPTION_DEFAULT_AUTHENTICATION_METHOD="The default authentication method used if a user does not exist to create and authenticate. Method can be password or ldap." +DEFAULT_DEFAULT_AUTHENTICATION_METHOD="" +KEY_DEFAULT_AUTHENTICATION_METHOD="default-authentication-method" diff --git a/snap-src/bin/wekan-help b/snap-src/bin/wekan-help index 804f9ad6b..9c7a67a2b 100755 --- a/snap-src/bin/wekan-help +++ b/snap-src/bin/wekan-help @@ -254,21 +254,25 @@ echo -e "Ldap Default Domain." echo -e "The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP:" echo -e "\t$ snap set $SNAP_NAME LDAP_DEFAULT_DOMAIN=''" echo -e "\n" -echo -e "Logout with timer." -echo -e "Enable or not the option that allows to disconnect an user after a given time:" -echo -e "\t$ snap set $SNAP_NAME LOGOUT_WITH_TIMER='true'" -echo -e "\n" -echo -e "Logout in." -echo -e "Logout in how many days:" -echo -e "\t$ snap set $SNAP_NAME LOGOUT_IN='1'" -echo -e "\n" -echo -e "Logout on hours." -echo -e "Logout in how many hours:" -echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_HOURS='9'" -echo -e "\n" -echo -e "Logout on minutes." -echo -e "Logout in how many minutes:" -echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_MINUTES='5'" +# echo -e "Logout with timer." +# echo -e "Enable or not the option that allows to disconnect an user after a given time:" +# echo -e "\t$ snap set $SNAP_NAME LOGOUT_WITH_TIMER='true'" +# echo -e "\n" +# echo -e "Logout in." +# echo -e "Logout in how many days:" +# echo -e "\t$ snap set $SNAP_NAME LOGOUT_IN='1'" +# echo -e "\n" +# echo -e "Logout on hours." +# echo -e "Logout in how many hours:" +# echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_HOURS='9'" +# echo -e "\n" +# echo -e "Logout on minutes." +# echo -e "Logout in how many minutes:" +# echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_MINUTES='5'" +# echo -e "\n" +echo -e "Default authentication method." +echo -e "The default authentication method used if a user does not exist to create and authenticate. Method can be password or ldap." +echo -e "\t$ snap set $SNAP_NAME DEFAULT_AUTHENTICATION_METHOD='ldap'" echo -e "\n" # parse config file for supported settings keys echo -e "wekan supports settings keys"