summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.eslintrc.json2
-rw-r--r--.meteor/packages1
-rw-r--r--.meteor/versions3
-rw-r--r--CHANGELOG.md124
-rw-r--r--Dockerfile14
-rw-r--r--Stackerfile.yml2
-rw-r--r--client/components/boards/boardBody.js76
-rw-r--r--client/components/lists/list.styl4
-rw-r--r--client/components/swimlanes/swimlanes.js18
-rw-r--r--client/components/swimlanes/swimlanes.styl3
-rw-r--r--docker-compose.yml110
-rw-r--r--i18n/ar.i18n.json4
-rw-r--r--i18n/bg.i18n.json4
-rw-r--r--i18n/br.i18n.json4
-rw-r--r--i18n/ca.i18n.json4
-rw-r--r--i18n/cs.i18n.json4
-rw-r--r--i18n/da.i18n.json4
-rw-r--r--i18n/de.i18n.json4
-rw-r--r--i18n/el.i18n.json4
-rw-r--r--i18n/en-GB.i18n.json4
-rw-r--r--i18n/en.i18n.json4
-rw-r--r--i18n/eo.i18n.json4
-rw-r--r--i18n/es-AR.i18n.json4
-rw-r--r--i18n/es.i18n.json10
-rw-r--r--i18n/eu.i18n.json4
-rw-r--r--i18n/fa.i18n.json4
-rw-r--r--i18n/fi.i18n.json4
-rw-r--r--i18n/fr.i18n.json4
-rw-r--r--i18n/gl.i18n.json4
-rw-r--r--i18n/he.i18n.json20
-rw-r--r--i18n/hi.i18n.json4
-rw-r--r--i18n/hu.i18n.json4
-rw-r--r--i18n/hy.i18n.json4
-rw-r--r--i18n/id.i18n.json4
-rw-r--r--i18n/ig.i18n.json4
-rw-r--r--i18n/it.i18n.json4
-rw-r--r--i18n/ja.i18n.json4
-rw-r--r--i18n/ka.i18n.json4
-rw-r--r--i18n/km.i18n.json4
-rw-r--r--i18n/ko.i18n.json4
-rw-r--r--i18n/lv.i18n.json4
-rw-r--r--i18n/mk.i18n.json4
-rw-r--r--i18n/mn.i18n.json4
-rw-r--r--i18n/nb.i18n.json4
-rw-r--r--i18n/nl.i18n.json4
-rw-r--r--i18n/pl.i18n.json110
-rw-r--r--i18n/pt-BR.i18n.json18
-rw-r--r--i18n/pt.i18n.json4
-rw-r--r--i18n/ro.i18n.json4
-rw-r--r--i18n/ru.i18n.json6
-rw-r--r--i18n/sr.i18n.json4
-rw-r--r--i18n/sv.i18n.json70
-rw-r--r--i18n/sw.i18n.json4
-rw-r--r--i18n/ta.i18n.json4
-rw-r--r--i18n/th.i18n.json4
-rw-r--r--i18n/tr.i18n.json4
-rw-r--r--i18n/uk.i18n.json4
-rw-r--r--i18n/vi.i18n.json4
-rw-r--r--i18n/zh-CN.i18n.json4
-rw-r--r--i18n/zh-TW.i18n.json4
-rw-r--r--models/export.js2
-rw-r--r--models/users.js2
-rw-r--r--package.json2
-rwxr-xr-xreleases/virtualbox/start-wekan.sh139
-rw-r--r--sandstorm-pkgdef.capnp4
-rw-r--r--server/authentication.js4
-rwxr-xr-xsnap-src/bin/config35
-rwxr-xr-xsnap-src/bin/mongodb-control2
-rwxr-xr-xsnap-src/bin/wekan-help201
-rw-r--r--start-wekan.bat14
-rwxr-xr-xstart-wekan.sh95
71 files changed, 899 insertions, 364 deletions
diff --git a/.eslintrc.json b/.eslintrc.json
index 6a1df879..364f82a9 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -6,7 +6,7 @@
"browser": true
},
"parserOptions": {
- "ecmaVersion": 6,
+ "ecmaVersion": 2017,
"sourceType": "module",
"ecmaFeatures": {
"experimentalObjectRestSpread": true
diff --git a/.meteor/packages b/.meteor/packages
index 88a0cae6..274a8d0d 100644
--- a/.meteor/packages
+++ b/.meteor/packages
@@ -90,3 +90,4 @@ wekan:wekan-ldap
wekan:accounts-cas
wekan-scrollbar
mquandalle:perfect-scrollbar
+mdg:meteor-apm-agent
diff --git a/.meteor/versions b/.meteor/versions
index b8b8e4fd..e91115a2 100644
--- a/.meteor/versions
+++ b/.meteor/versions
@@ -84,6 +84,7 @@ localstorage@1.2.0
logging@1.1.19
matb33:collection-hooks@0.8.4
matteodem:easy-search@1.6.4
+mdg:meteor-apm-agent@3.1.2
mdg:validation-error@0.5.1
meteor@1.8.2
meteor-base@1.2.0
@@ -144,7 +145,7 @@ retry@1.0.9
routepolicy@1.0.12
rzymek:fullcalendar@3.8.0
salleman:accounts-oidc@1.0.10
-salleman:oidc@1.0.10
+salleman:oidc@1.0.12
service-configuration@1.0.11
session@1.1.7
sha@1.0.9
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1d101b66..d77f13ee 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,127 @@
+# v2.22 2019-02-13 Wekan release
+
+This release adds the following new features:
+
+- [Kadira integration](https://github.com/wekan/wekan/issues/2152). Thanks to GavinLilly.
+- Add [configurable](https://github.com/wekan/wekan/issues/1874#issuecomment-462759627)
+ settings [OAUTH2_ID_TOKEN_WHITELIST_FIELDS and
+ OAUTH2_REQUEST_PERMISSIONS](https://github.com/wekan/wekan/commit/b66f471e530d41a3f12e4bfc29548313e9a73c35).
+ Thanks to xet7.
+
+and fixes the following bugs:
+
+- [Fix: Remove overlap of side bar button with card/list menu button on
+ mobile browser](https://github.com/wekan/wekan/issues/2183). Thanks to xet7.
+
+Thanks to above GitHub users for their contributions, and translators for their translations.
+
+# v2.21 2019-02-12 Wekan release
+
+This release adds the following new features:
+
+- [Bump salleman-oidc to 1.0.12](https://github.com/wekan/wekan/commit/352e5c6cb07b1a09ef692af6f6c49c3b1f3e91c1). Thanks to danpatdav.
+- [Added parameters for OIDC claim mapping](https://github.com/wekan/wekan/commit/bdbbb12f967f7e4f605e6c3310290180f6c8c6d1).
+ These mapping parameters take advantage of new code in salleman-oidc 1.0.12 to override the default claim names provided by the userinfo endpoint.
+ Thanks to danpatdav.
+- [Add OIDC claim mapping parameters to docker-compose.yml/Snap/Source](https://github.com/wekan/wekan/commit/59314ab17d65e9579d2f29b32685b7777f2a06a1).
+ Thanks to xet7.
+
+Thanks to above GitHub users for their contributions.
+
+# v2.20 2019-02-11 Wekan release
+
+This release adds the following new features:
+
+- [Add OIDC / OAuth2 optional setting DEBUG=true to salleman-oidc and Dockerfile](https://github.com/wekan/wekan/pull/2181).
+ Thanks to danpatdav.
+- [Add OIDC / OAuth2 optional setting DEBUG=true to docker-compose.yml/Snap/Source](https://github.com/wekan/wekan/commits/8e02170dd1d5a638ba47dcca910e6eecbfd03baf).
+ Thanks to xet7.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
+# v2.19 2019-02-09 Wekan release
+
+This release removes the following new features:
+
+- [Remove oplog from snap](https://github.com/wekan/wekan/commit/f1bd36a3b87f97927dfe60572646a457e1f7ef66). Need to think how to do it properly.
+
+Thanks to GitHub user xet7 for conrtibutions.
+
+# v2.18 2019-02-08 Wekan release
+
+This release adds the folloging new features:
+
+- [Improve Authentication: Admin Panel / Layout / Set Default Authentication / Password/LDAP](https://github.com/wekan/wekan/pull/2172). Thanks to Akuket.
+- [Add oplog to snap mongodb](https://github.com/wekan/wekan/commit/79ffb7d50202471c7b7f297286f13e66ce30922e). Thanks to xet7.
+
+and fixes the following bugs with Apache I-CLA, thanks to bentiss:
+
+- [Fix swimlanes sorting](https://github.com/wekan/wekan/pull/2174)
+ since "[Properly fix horizontal rendering on Chrome and Firefox](https://github.com/wekan/wekan/commit/7cc185ac)".
+ The rendering of the new design of the swimlanes was correct, but this
+ commit broke the reordering capability. Having the swimlane header at
+ the same level than the lists of cards makes the whole sortable
+ pattern fail.
+ - 2 solutions:
+ - revert to only have 1 div per swimlane. But this introduces [the firefox
+ bug mentioned](https://github.com/wekan/wekan/commit/7cc185ac), so not ideal
+ - force the sortable pattern to do what we want.
+ - To force the sortable pattern, we need:
+ - add in the helper a clone of the list of cards (to not just move the
+ header)
+ - make sure the placeholder never get placed between the header and the
+ list of cards in a swimlane
+ - fix the finding of the next and previous list of cards.
+ For all of this to be successful, we need to resize the swimlanes to a
+ known value. This can lead to some visual jumps with scrolling when you
+ drag or drop the swimlanea. I tried to remedy that by computing the new
+ scroll value. Still not ideal however, as there are still some jumps when
+ dropping.
+ Fixes [#2159](https://github.com/wekan/wekan/issues/2159).
+
+Thanks to above GitHub users and translators for contributions.
+
+# v2.17 2019-02-04 Wekan release
+
+This release fixes the following bugs:
+
+- [OIDC/OAuth2 BoardView Fix](https://github.com/wekan/wekan/issues/1874).
+
+Thanks to GitHub gil0109 for contributions, and translator for their translations.
+
+# v2.16 2019-02-03 Wekan release
+
+This release fixes the following bugs:
+
+- [Part 2](https://github.com/ChronikEwok/wekan/commit/9a6ac544dd5618e58ce107352124fd9b495e5c30):
+ [Fix: Not displaying card content of public board: Snap, Docker and Sandstorm Shared Wekan Board
+ Link](https://github.com/wekan/wekan/issues/1623) with
+ [code from ChronikEwok](https://github.com/ChronikEwok/wekan/commit/cad9b20451bb6149bfb527a99b5001873b06c3de).
+
+Thanks to GitHub user ChronikEwok for contributions.
+
+# v2.15 2019-02-03 Wekan release
+
+This release fixes the following bugs:
+
+- [Fix: Not displaying card content of public board: Snap, Docker and Sandstorm Shared Wekan Board
+ Link](https://github.com/wekan/wekan/issues/1623) with
+ [code from ChronikEwok](https://github.com/ChronikEwok/wekan/commit/cad9b20451bb6149bfb527a99b5001873b06c3de).
+
+Thanks to GitHub user ChronikEwok for contributions.
+
+# v2.14 2019-02-02 Wekan release
+
+This release fixes the following bugs:
+
+- [Fix Sandstorm export board from web](https://github.com/wekan/wekan/issues/2157).
+- [Fix Error when logging in to Wekan REST API when using Sandstorm Wekan](https://github.com/wekan/wekan/issues/1279).
+ Sandstorm API works this way: Make API key, and from that key copy API URL and API KEY to below. It saves Wekan board to file.
+ `curl http://Bearer:APIKEY@api-12345.local.sandstorm.io:6080/api/boards/sandstorm/export?authToken=#APIKEY > wekanboard.json`
+ If later API key does not work, you need to remove it and make a new one.
+
+Thanks to GitHub user xet7 for contributions.
+
# v2.13 2019-02-01 Wekan release
This release adds the following new features with Apache I-CLA, thanks to bentiss:
diff --git a/Dockerfile b/Dockerfile
index 240fb0b7..7957c72c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,6 +2,7 @@ FROM debian:buster-slim
LABEL maintainer="wekan"
# Declare Arguments
+ARG DEBUG
ARG NODE_VERSION
ARG METEOR_RELEASE
ARG METEOR_EDGE
@@ -25,6 +26,12 @@ ARG OAUTH2_SERVER_URL
ARG OAUTH2_AUTH_ENDPOINT
ARG OAUTH2_USERINFO_ENDPOINT
ARG OAUTH2_TOKEN_ENDPOINT
+ARG OAUTH2_ID_MAP
+ARG OAUTH2_USERNAME_MAP
+ARG OAUTH2_FULLNAME_MAP
+ARG OAUTH2_EMAIL_MAP
+ARG OAUTH2_ID_TOKEN_WHITELIST_FIELDS
+ARG OAUTH2_REQUEST_PERMISSIONS
ARG LDAP_ENABLE
ARG LDAP_PORT
ARG LDAP_HOST
@@ -76,6 +83,7 @@ ARG DEFAULT_AUTHENTICATION_METHOD
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
# ENV BUILD_DEPS="paxctl"
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python python3 python3-distutils git ca-certificates gcc-7" \
+ DEBUG=false \
NODE_VERSION=v8.15.0 \
METEOR_RELEASE=1.6.0.1 \
USE_EDGE=false \
@@ -99,6 +107,12 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
OAUTH2_AUTH_ENDPOINT="" \
OAUTH2_USERINFO_ENDPOINT="" \
OAUTH2_TOKEN_ENDPOINT="" \
+ OAUTH2_ID_MAP="" \
+ OAUTH2_USERNAME_MAP="" \
+ OAUTH2_FULLNAME_MAP="" \
+ OAUTH2_EMAIL_MAP="" \
+ OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[] \
+ OAUTH2_REQUEST_PERMISSIONS=[openid] \
LDAP_ENABLE=false \
LDAP_PORT=389 \
LDAP_HOST="" \
diff --git a/Stackerfile.yml b/Stackerfile.yml
index 523ba2b4..7a6c5396 100644
--- a/Stackerfile.yml
+++ b/Stackerfile.yml
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
-appVersion: "v2.13.0"
+appVersion: "v2.22.0"
files:
userUploads:
- README.md
diff --git a/client/components/boards/boardBody.js b/client/components/boards/boardBody.js
index 2de8777a..9105e624 100644
--- a/client/components/boards/boardBody.js
+++ b/client/components/boards/boardBody.js
@@ -1,5 +1,6 @@
const subManager = new SubsManager();
const { calculateIndex, enableClickOnTouch } = Utils;
+const swimlaneWhileSortingHeight = 150;
BlazeComponent.extendComponent({
onCreated() {
@@ -74,21 +75,64 @@ BlazeComponent.extendComponent({
$swimlanesDom.sortable({
tolerance: 'pointer',
appendTo: '.board-canvas',
- helper: 'clone',
+ helper(evt, item) {
+ const helper = $(`<div class="swimlane"
+ style="flex-direction: column;
+ height: ${swimlaneWhileSortingHeight}px;
+ width: $(boardComponent.width)px;
+ overflow: hidden;"/>`);
+ helper.append(item.clone());
+ // Also grab the list of lists of cards
+ const list = item.next();
+ helper.append(list.clone());
+ return helper;
+ },
handle: '.js-swimlane-header',
- items: '.js-swimlane:not(.placeholder)',
+ items: '.swimlane:not(.placeholder)',
placeholder: 'swimlane placeholder',
distance: 7,
start(evt, ui) {
+ const listDom = ui.placeholder.next('.js-swimlane');
+ const parentOffset = ui.item.parent().offset();
+
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
+ listDom.addClass('moving-swimlane');
boardComponent.setIsDragging(true);
+
+ ui.placeholder.insertAfter(ui.placeholder.next());
+ boardComponent.origPlaceholderIndex = ui.placeholder.index();
+
+ // resize all swimlanes + headers to be a total of 150 px per row
+ // this could be achieved by setIsDragging(true) but we want immediate
+ // result
+ ui.item.siblings('.js-swimlane').css('height', `${swimlaneWhileSortingHeight - 26}px`);
+
+ // set the new scroll height after the resize and insertion of
+ // the placeholder. We want the element under the cursor to stay
+ // at the same place on the screen
+ ui.item.parent().get(0).scrollTop = ui.placeholder.get(0).offsetTop + parentOffset.top - evt.pageY;
+ },
+ beforeStop(evt, ui) {
+ const parentOffset = ui.item.parent().offset();
+ const siblings = ui.item.siblings('.js-swimlane');
+ siblings.css('height', '');
+
+ // compute the new scroll height after the resize and removal of
+ // the placeholder
+ const scrollTop = ui.placeholder.get(0).offsetTop + parentOffset.top - evt.pageY;
+
+ // then reset the original view of the swimlane
+ siblings.removeClass('moving-swimlane');
+
+ // and apply the computed scrollheight
+ ui.item.parent().get(0).scrollTop = scrollTop;
},
stop(evt, ui) {
// To attribute the new index number, we need to get the DOM element
// of the previous and the following card -- if any.
- const prevSwimlaneDom = ui.item.prev('.js-swimlane').get(0);
- const nextSwimlaneDom = ui.item.next('.js-swimlane').get(0);
+ const prevSwimlaneDom = ui.item.prevAll('.js-swimlane').get(0);
+ const nextSwimlaneDom = ui.item.nextAll('.js-swimlane').get(0);
const sortIndex = calculateIndex(prevSwimlaneDom, nextSwimlaneDom, 1);
$swimlanesDom.sortable('cancel');
@@ -103,6 +147,30 @@ BlazeComponent.extendComponent({
boardComponent.setIsDragging(false);
},
+ sort(evt, ui) {
+ // get the mouse position in the sortable
+ const parentOffset = ui.item.parent().offset();
+ const cursorY = evt.pageY - parentOffset.top + ui.item.parent().scrollTop();
+
+ // compute the intended index of the placeholder (we need to skip the
+ // slots between the headers and the list of cards)
+ const newplaceholderIndex = Math.floor(cursorY / swimlaneWhileSortingHeight);
+ let destPlaceholderIndex = (newplaceholderIndex + 1) * 2;
+
+ // if we are scrolling far away from the bottom of the list
+ if (destPlaceholderIndex >= ui.item.parent().get(0).childElementCount) {
+ destPlaceholderIndex = ui.item.parent().get(0).childElementCount - 1;
+ }
+
+ // update the placeholder position in the DOM tree
+ if (destPlaceholderIndex !== ui.placeholder.index()) {
+ if (destPlaceholderIndex < boardComponent.origPlaceholderIndex) {
+ ui.placeholder.insertBefore(ui.placeholder.siblings().slice(destPlaceholderIndex - 2, destPlaceholderIndex - 1));
+ } else {
+ ui.placeholder.insertAfter(ui.placeholder.siblings().slice(destPlaceholderIndex - 1, destPlaceholderIndex));
+ }
+ }
+ },
});
// ugly touch event hotfix
diff --git a/client/components/lists/list.styl b/client/components/lists/list.styl
index 70502083..7e4550a4 100644
--- a/client/components/lists/list.styl
+++ b/client/components/lists/list.styl
@@ -84,6 +84,7 @@
padding-left: 10px
color: #a6a6a6
+
.list-header-menu
position: absolute
padding: 27px 19px
@@ -155,6 +156,9 @@
float: left
@media screen and (max-width: 800px)
+ .list-header-menu
+ margin-right: 30px
+
.mini-list
flex: 0 0 60px
height: 60px
diff --git a/client/components/swimlanes/swimlanes.js b/client/components/swimlanes/swimlanes.js
index 71317714..ce327f54 100644
--- a/client/components/swimlanes/swimlanes.js
+++ b/client/components/swimlanes/swimlanes.js
@@ -3,14 +3,18 @@ const { calculateIndex, enableClickOnTouch } = Utils;
function currentCardIsInThisList(listId, swimlaneId) {
const currentCard = Cards.findOne(Session.get('currentCard'));
const currentUser = Meteor.user();
- if (currentUser.profile.boardView === 'board-view-lists')
- return currentCard && currentCard.listId === listId;
- else if (currentUser.profile.boardView === 'board-view-swimlanes')
+ if (currentUser && currentUser.profile.boardView === 'board-view-swimlanes')
return currentCard && currentCard.listId === listId && currentCard.swimlaneId === swimlaneId;
- else if (currentUser.profile.boardView === 'board-view-cal')
- return currentCard;
- else
- return false;
+ else // Default view: board-view-lists
+ return currentCard && currentCard.listId === listId;
+ // https://github.com/wekan/wekan/issues/1623
+ // https://github.com/ChronikEwok/wekan/commit/cad9b20451bb6149bfb527a99b5001873b06c3de
+ // TODO: In public board, if you would like to switch between List/Swimlane view, you could
+ // 1) If there is no view cookie, save to cookie board-view-lists
+ // board-view-lists / board-view-swimlanes / board-view-cal
+ // 2) If public user changes clicks board-view-lists then change view and
+ // then change view and save cookie with view value
+ // without using currentuser above, because currentuser is null.
}
function initSortable(boardComponent, $listsDom) {
diff --git a/client/components/swimlanes/swimlanes.styl b/client/components/swimlanes/swimlanes.styl
index 77a7a413..1056e1e3 100644
--- a/client/components/swimlanes/swimlanes.styl
+++ b/client/components/swimlanes/swimlanes.styl
@@ -53,6 +53,9 @@
.list-group
height: 100%
+.moving-swimlane
+ display: none
+
swimlane-color(background, color...)
background: background !important
if color
diff --git a/docker-compose.yml b/docker-compose.yml
index abcaa48b..a9f11569 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -191,9 +191,12 @@ services:
# - MONGO_OPLOG_URL=mongodb://<username>:<password>@<mongoDbURL>/local?authSource=admin&replicaSet=rsWekan
#---------------------------------------------------------------
# ==== OPTIONAL: KADIRA PERFORMANCE MONITORING FOR METEOR ====
- # https://github.com/smeijer/kadira
+ # https://github.com/edemaine/kadira-compose
+ # https://github.com/meteor/meteor-apm-agent
# https://blog.meteor.com/kadira-apm-is-now-open-source-490469ffc85f
- # - export KADIRA_OPTIONS_ENDPOINT=http://127.0.0.1:11011
+ #- APM_OPTIONS_ENDPOINT=http://<kadira-ip>:11011
+ #- APM_APP_ID=
+ #- APM_APP_SECRET=
#---------------------------------------------------------------
# ==== OPTIONAL: LOGS AND STATS ====
# https://github.com/wekan/wekan/wiki/Logs
@@ -219,23 +222,19 @@ services:
- WITH_API=true
#-----------------------------------------------------------------
# ==== CORS =====
- # CORS: Set Access-Control-Allow-Origin header. Example: *
+ # CORS: Set Access-Control-Allow-Origin header.
#- CORS=*
#-----------------------------------------------------------------
# ==== MATOMO INTEGRATION ====
# Optional: Integration with Matomo https://matomo.org that is installed to your server
# The address of the server where Matomo is hosted.
- # example: - MATOMO_ADDRESS=https://example.com/matomo
- #- MATOMO_ADDRESS=
+ #- MATOMO_ADDRESS=https://example.com/matomo
# The value of the site ID given in Matomo server for Wekan
- # example: - MATOMO_SITE_ID=12345
- #- MATOMO_SITE_ID=
+ #- MATOMO_SITE_ID=1
# The option do not track which enables users to not be tracked by matomo
- # example: - MATOMO_DO_NOT_TRACK=false
- #- MATOMO_DO_NOT_TRACK=
+ #- MATOMO_DO_NOT_TRACK=true
# The option that allows matomo to retrieve the username:
- # example: MATOMO_WITH_USERNAME=true
- #- MATOMO_WITH_USERNAME=false
+ #- MATOMO_WITH_USERNAME=true
#-----------------------------------------------------------------
# ==== BROWSER POLICY AND TRUSTED IFRAME URL ====
# Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside.
@@ -243,38 +242,79 @@ services:
# and allows all iframing etc. See wekan/server/policy.js
- BROWSER_POLICY_ENABLED=true
# When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside.
- #- TRUSTED_URL=
+ #- TRUSTED_URL=https://intra.example.com
#-----------------------------------------------------------------
# ==== OUTGOING WEBHOOKS ====
# What to send to Outgoing Webhook, or leave out. Example, that includes all that are default: cardId,listId,oldListId,boardId,comment,user,card,commentId .
- # example: WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
- #- WEBHOOKS_ATTRIBUTES=
+ #- WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
#-----------------------------------------------------------------
- # ==== OAUTH2 ONLY WITH OIDC AND DOORKEEPER AS INDENTITY PROVIDER
+ # ==== Debug OIDC OAuth2 etc ====
+ #- DEBUG=true
+ #-----------------------------------------------------------------
+ # ==== OAUTH2 AZURE ====
+ # https://github.com/wekan/wekan/wiki/Azure
+ # 1) Register the application with Azure. Make sure you capture
+ # the application ID as well as generate a secret key.
+ # 2) Configure the environment variables. This differs slightly
+ # by installation type, but make sure you have the following:
+ #- OAUTH2_ENABLED=true
+ # Application GUID captured during app registration:
+ #- OAUTH2_CLIENT_ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
+ # Secret key generated during app registration:
+ #- OAUTH2_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ #- OAUTH2_SERVER_URL=https://login.microsoftonline.com/
+ #- OAUTH2_AUTH_ENDPOINT=/oauth2/v2.0/authorize
+ #- OAUTH2_USERINFO_ENDPOINT=https://graph.microsoft.com/oidc/userinfo
+ #- OAUTH2_TOKEN_ENDPOINT=/oauth2/v2.0/token
+ # The claim name you want to map to the unique ID field:
+ #- OAUTH2_ID_MAP=email
+ # The claim name you want to map to the username field:
+ #- OAUTH2_USERNAME_MAP=email
+ # The claim name you want to map to the full name field:
+ #- OAUTH2_FULLNAME_MAP=name
+ # Tthe claim name you want to map to the email field:
+ #- OAUTH2_EMAIL_MAP=email
+ #-----------------------------------------------------------------
+ # ==== OAUTH2 KEYCLOAK ====
+ # https://github.com/wekan/wekan/wiki/Keycloak <== MAPPING INFO, REQUIRED
+ #- OAUTH2_ENABLED=true
+ #- OAUTH2_CLIENT_ID=<Keycloak create Client ID>
+ #- OAUTH2_SERVER_URL=<Keycloak server name>/auth
+ #- OAUTH2_AUTH_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/auth
+ #- OAUTH2_USERINFO_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/userinfo
+ #- OAUTH2_TOKEN_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/token
+ #- OAUTH2_SECRET=<keycloak client secret>
+ #-----------------------------------------------------------------
+ # ==== OAUTH2 DOORKEEPER ====
# https://github.com/wekan/wekan/issues/1874
# https://github.com/wekan/wekan/wiki/OAuth2
# Enable the OAuth2 connection
- # example: OAUTH2_ENABLED=true
- #- OAUTH2_ENABLED=false
+ #- OAUTH2_ENABLED=true
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
- # OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345
- # example: OAUTH2_CLIENT_ID=abcde12345
- #- OAUTH2_CLIENT_ID=
- # OAuth2 Secret, for example from Rocket.Chat: Example: 54321abcde
- # example: OAUTH2_SECRET=54321abcde
- #- OAUTH2_SECRET=
- # OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com
- # example: OAUTH2_SERVER_URL=https://chat.example.com
- #- OAUTH2_SERVER_URL=
- # OAuth2 Authorization Endpoint. Example: /oauth/authorize
- # example: OAUTH2_AUTH_ENDPOINT=/oauth/authorize
- #- OAUTH2_AUTH_ENDPOINT=
- # OAuth2 Userinfo Endpoint. Example: /oauth/userinfo
- # example: OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
- #- OAUTH2_USERINFO_ENDPOINT=
- # OAuth2 Token Endpoint. Example: /oauth/token
- # example: OAUTH2_TOKEN_ENDPOINT=/oauth/token
- #- OAUTH2_TOKEN_ENDPOINT=
+ # OAuth2 Client ID.
+ #- OAUTH2_CLIENT_ID=abcde12345
+ # OAuth2 Secret.
+ #- OAUTH2_SECRET=54321abcde
+ # OAuth2 Server URL.
+ #- OAUTH2_SERVER_URL=https://chat.example.com
+ # OAuth2 Authorization Endpoint.
+ #- OAUTH2_AUTH_ENDPOINT=/oauth/authorize
+ # OAuth2 Userinfo Endpoint.
+ #- OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
+ # OAuth2 Token Endpoint.
+ #- OAUTH2_TOKEN_ENDPOINT=/oauth/token
+ # OAuth2 ID Mapping
+ #- OAUTH2_ID_MAP=
+ # OAuth2 Username Mapping
+ #- OAUTH2_USERNAME_MAP=
+ # OAuth2 Fullname Mapping
+ #- OAUTH2_FULLNAME_MAP=
+ # OAuth2 Email Mapping
+ #- OAUTH2_EMAIL_MAP=
+ # OAUTH2 ID Token Whitelist Fields.
+ #- OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[]
+ # OAUTH2 Request Permissions.
+ #- OAUTH2_REQUEST_PERMISSIONS=[openid email profile]
#-----------------------------------------------------------------
# ==== LDAP ====
# https://github.com/wekan/wekan/wiki/LDAP
diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json
index cf32ad1e..3a1b171f 100644
--- a/i18n/ar.i18n.json
+++ b/i18n/ar.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/bg.i18n.json b/i18n/bg.i18n.json
index 52a9a2c6..96e0195d 100644
--- a/i18n/bg.i18n.json
+++ b/i18n/bg.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json
index 6f552ce9..b6ffe2db 100644
--- a/i18n/br.i18n.json
+++ b/i18n/br.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json
index cd53a89b..3ec05181 100644
--- a/i18n/ca.i18n.json
+++ b/i18n/ca.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json
index 3348df26..3e5f8b49 100644
--- a/i18n/cs.i18n.json
+++ b/i18n/cs.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Něco se pokazilo",
- "error-ldap-login": "Během přihlašování nastala chyba"
+ "error-ldap-login": "Během přihlašování nastala chyba",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/da.i18n.json b/i18n/da.i18n.json
index a2b6b0aa..656de729 100644
--- a/i18n/da.i18n.json
+++ b/i18n/da.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json
index 22e61fbb..84141731 100644
--- a/i18n/de.i18n.json
+++ b/i18n/de.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Füge benutzerdefiniertes HTML nach <body> Anfang hinzu",
"add-custom-html-before-body-end": "Füge benutzerdefiniertes HTML vor </body>Ende hinzu",
"error-undefined": "Etwas ist schief gelaufen",
- "error-ldap-login": "Es ist ein Fehler beim Anmelden aufgetreten"
+ "error-ldap-login": "Es ist ein Fehler beim Anmelden aufgetreten",
+ "display-authentication-method": "Anzeige Authentifizierungsverfahren",
+ "default-authentication-method": "Standardauthentifizierungsverfahren"
} \ No newline at end of file
diff --git a/i18n/el.i18n.json b/i18n/el.i18n.json
index d678c093..adfd19f2 100644
--- a/i18n/el.i18n.json
+++ b/i18n/el.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json
index 8892e0da..04bb2bac 100644
--- a/i18n/en-GB.i18n.json
+++ b/i18n/en-GB.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json
index 2c2d41da..d4e817ea 100644
--- a/i18n/en.i18n.json
+++ b/i18n/en.i18n.json
@@ -662,5 +662,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
}
diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json
index 8775b4cf..da1e9697 100644
--- a/i18n/eo.i18n.json
+++ b/i18n/eo.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json
index 4984a1c2..95c2f086 100644
--- a/i18n/es-AR.i18n.json
+++ b/i18n/es-AR.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json
index 700560ab..dad03bf6 100644
--- a/i18n/es.i18n.json
+++ b/i18n/es.i18n.json
@@ -363,9 +363,9 @@
"muted-info": "No serás notificado de ningún cambio en este tablero",
"my-boards": "Mis tableros",
"name": "Nombre",
- "no-archived-cards": "No hay tarjetas en el Archivo",
- "no-archived-lists": "No hay listas en el Archivo",
- "no-archived-swimlanes": "No hay carriles en el Archivo",
+ "no-archived-cards": "No hay tarjetas archivadas.",
+ "no-archived-lists": "No hay listas archivadas.",
+ "no-archived-swimlanes": "No hay carriles archivados.",
"no-results": "Sin resultados",
"normal": "Normal",
"normal-desc": "Puedes ver y editar tarjetas. No puedes cambiar la configuración.",
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Añade HTML personalizado después de <body> ",
"add-custom-html-before-body-end": "Añade HTML personalizado después de </body>",
"error-undefined": "Algo no está bien",
- "error-ldap-login": "Ocurrió un error al intentar acceder"
+ "error-ldap-login": "Ocurrió un error al intentar acceder",
+ "display-authentication-method": "Mostrar el método de autenticación",
+ "default-authentication-method": "Método de autenticación por defecto"
} \ No newline at end of file
diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json
index dffa609f..4d34b6ca 100644
--- a/i18n/eu.i18n.json
+++ b/i18n/eu.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json
index cd50066f..c1ef3401 100644
--- a/i18n/fa.i18n.json
+++ b/i18n/fa.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "افزودن کد های HTML بعد از <body> شروع",
"add-custom-html-before-body-end": "افزودن کد های HTML قبل از </body> پایان",
"error-undefined": "یک اشتباه رخ داده شده است",
- "error-ldap-login": "هنگام تلاش برای ورود به یک خطا رخ داد"
+ "error-ldap-login": "هنگام تلاش برای ورود به یک خطا رخ داد",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json
index c8601093..7e2c4d3b 100644
--- a/i18n/fi.i18n.json
+++ b/i18n/fi.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Lisää HTML <body> alun jälkeen",
"add-custom-html-before-body-end": "Lisä HTML ennen </body> loppua",
"error-undefined": "Jotain meni pieleen",
- "error-ldap-login": "Virhe tapahtui yrittäessä kirjautua sisään"
+ "error-ldap-login": "Virhe tapahtui yrittäessä kirjautua sisään",
+ "display-authentication-method": "Näytä kirjautumistapa",
+ "default-authentication-method": "Oletus kirjautumistapa"
} \ No newline at end of file
diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json
index b6b8f904..ff4b2146 100644
--- a/i18n/fr.i18n.json
+++ b/i18n/fr.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Ajouter le HTML personnalisé après le début du <body>",
"add-custom-html-before-body-end": "Ajouter le HTML personnalisé avant la fin du </body>",
"error-undefined": "Une erreur inconnue s'est produite",
- "error-ldap-login": "Une erreur s'est produite lors de la tentative de connexion"
+ "error-ldap-login": "Une erreur s'est produite lors de la tentative de connexion",
+ "display-authentication-method": "Afficher la méthode d'authentification",
+ "default-authentication-method": "Méthode d'authentification par défaut"
} \ No newline at end of file
diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json
index 9ec32447..9c310c78 100644
--- a/i18n/gl.i18n.json
+++ b/i18n/gl.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json
index 88e4bd98..939f2002 100644
--- a/i18n/he.i18n.json
+++ b/i18n/he.i18n.json
@@ -14,7 +14,7 @@
"act-archivedBoard": "__board__ הועבר לארכיון",
"act-archivedCard": "__card__ הועבר לארכיון",
"act-archivedList": "__list__ הועבר לארכיון",
- "act-archivedSwimlane": "__swimlane__ נשמר בארכיון",
+ "act-archivedSwimlane": "__swimlane__ הועבר לארכיון",
"act-importBoard": "הלוח __board__ יובא",
"act-importCard": "הכרטיס __card__ יובא",
"act-importList": "הרשימה __list__ יובאה",
@@ -84,7 +84,7 @@
"archive-board": "העברת הלוח לארכיון",
"archive-card": "העברת הכרטיס לארכיון",
"archive-list": "העברת הרשימה לארכיון",
- "archive-swimlane": "שמור נתיב זרימה לארכיון",
+ "archive-swimlane": "העברת מסלול לארכיון",
"archive-selection": "העברת הבחירה לארכיון",
"archiveBoardPopup-title": "להעביר לוח זה לארכיון?",
"archived-items": "להעביר לארכיון",
@@ -335,10 +335,10 @@
"list-archive-cards-pop": "כל הכרטיסים מרשימה זו יוסרו מהלוח. לצפייה בכרטיסים השמורים בארכיון ולהחזירם ללוח, ניתן ללחוץ על „תפריט” > „פריטים בארכיון”.",
"list-move-cards": "העברת כל הכרטיסים שברשימה זו",
"list-select-cards": "בחירת כל הכרטיסים שברשימה זו",
- "set-color-list": "Set Color",
+ "set-color-list": "הגדרת צבע",
"listActionPopup-title": "פעולות רשימה",
"swimlaneActionPopup-title": "פעולות על מסלול",
- "swimlaneAddPopup-title": "Add a Swimlane below",
+ "swimlaneAddPopup-title": "הוספת מסלול מתחת",
"listImportCardPopup-title": "יבוא כרטיס מ־Trello",
"listMorePopup-title": "עוד",
"link-list": "קישור לרשימה זו",
@@ -365,7 +365,7 @@
"name": "שם",
"no-archived-cards": "אין כרטיסים בארכיון",
"no-archived-lists": "אין רשימות בארכיון",
- "no-archived-swimlanes": "לא שמורים מסלולים בארכיון",
+ "no-archived-swimlanes": "אין מסלולים בארכיון.",
"no-results": "אין תוצאות",
"normal": "רגיל",
"normal-desc": "הרשאה לצפות ולערוך כרטיסים. לא ניתן לשנות הגדרות.",
@@ -520,9 +520,9 @@
"editCardReceivedDatePopup-title": "החלפת מועד הקבלה",
"editCardEndDatePopup-title": "החלפת מועד הסיום",
"setCardColorPopup-title": "הגדרת צבע",
- "setCardActionsColorPopup-title": "Choose a color",
- "setSwimlaneColorPopup-title": "Choose a color",
- "setListColorPopup-title": "Choose a color",
+ "setCardActionsColorPopup-title": "בחירת צבע",
+ "setSwimlaneColorPopup-title": "בחירת צבע",
+ "setListColorPopup-title": "בחירת צבע",
"assigned-by": "הוקצה על ידי",
"requested-by": "התבקש על ידי",
"board-delete-notice": "מחיקה היא לצמיתות. כל הרשימות, הכרטיבים והפעולות שקשורים בלוח הזה ילכו לאיבוד.",
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "הוספת קוד HTML מותאם אישית לאחר ה־<body> הפותח.",
"add-custom-html-before-body-end": "הוספת קוד HTML מותאם אישית לפני ה־</body> הסוגר.",
"error-undefined": "מהו השתבש",
- "error-ldap-login": "אירעה שגיאה בעת ניסיון הכניסה"
+ "error-ldap-login": "אירעה שגיאה בעת ניסיון הכניסה",
+ "display-authentication-method": "הצגת שיטת אימות",
+ "default-authentication-method": "שיטת אימות כבררת מחדל"
} \ No newline at end of file
diff --git a/i18n/hi.i18n.json b/i18n/hi.i18n.json
index 3f96e848..8f5028d6 100644
--- a/i18n/hi.i18n.json
+++ b/i18n/hi.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json
index f5268f34..18b5b0a1 100644
--- a/i18n/hu.i18n.json
+++ b/i18n/hu.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/hy.i18n.json b/i18n/hy.i18n.json
index d5f45f8b..fe53857b 100644
--- a/i18n/hy.i18n.json
+++ b/i18n/hy.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json
index c03e9320..2f363bb9 100644
--- a/i18n/id.i18n.json
+++ b/i18n/id.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/ig.i18n.json b/i18n/ig.i18n.json
index 72268d70..27cee963 100644
--- a/i18n/ig.i18n.json
+++ b/i18n/ig.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json
index cf41adfa..82187722 100644
--- a/i18n/it.i18n.json
+++ b/i18n/it.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json
index 3e445a86..59db5a82 100644
--- a/i18n/ja.i18n.json
+++ b/i18n/ja.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/ka.i18n.json b/i18n/ka.i18n.json
index 11f78552..76ee2ffe 100644
--- a/i18n/ka.i18n.json
+++ b/i18n/ka.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/km.i18n.json b/i18n/km.i18n.json
index 24daa9b3..5f3b2dd4 100644
--- a/i18n/km.i18n.json
+++ b/i18n/km.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json
index 6f07eb99..1f7066cb 100644
--- a/i18n/ko.i18n.json
+++ b/i18n/ko.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/lv.i18n.json b/i18n/lv.i18n.json
index a24397c6..b5c62aae 100644
--- a/i18n/lv.i18n.json
+++ b/i18n/lv.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/mk.i18n.json b/i18n/mk.i18n.json
index 432504e2..5481cc70 100644
--- a/i18n/mk.i18n.json
+++ b/i18n/mk.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/mn.i18n.json b/i18n/mn.i18n.json
index 47af0cca..012dea07 100644
--- a/i18n/mn.i18n.json
+++ b/i18n/mn.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/nb.i18n.json b/i18n/nb.i18n.json
index 318ee700..1427e263 100644
--- a/i18n/nb.i18n.json
+++ b/i18n/nb.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json
index 207ae71c..24370c09 100644
--- a/i18n/nl.i18n.json
+++ b/i18n/nl.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json
index 5b38ade5..99a1af9f 100644
--- a/i18n/pl.i18n.json
+++ b/i18n/pl.i18n.json
@@ -1,6 +1,6 @@
{
"accept": "Akceptuj",
- "act-activity-notify": "Activity Notification",
+ "act-activity-notify": "Powiadomienia aktywności",
"act-addAttachment": "dodano załącznik __attachement__ do __card__",
"act-addSubtask": "dodał podzadanie __checklist__ do __card__",
"act-addChecklist": "dodał listę zadań __checklist__ to __card__",
@@ -78,7 +78,7 @@
"and-n-other-card": "I __count__ inna karta",
"and-n-other-card_plural": "I __count__ inne karty",
"apply": "Zastosuj",
- "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": "Trwa ładowanie, proszę czekać. Odświeżenie strony może spowodować utratę danych. Jeśli strona się nie przeładowuje, upewnij się, że serwer działa poprawnie.",
"archive": "Przenieś do Archiwum",
"archive-all": "Przenieś wszystko do Archiwum",
"archive-board": "Przenieś tablicę do Archiwum",
@@ -169,30 +169,30 @@
"close-board-pop": "Będziesz w stanie przywrócić tablicę poprzez kliknięcie przycisku \"Archiwizuj\" w nagłówku strony domowej.",
"color-black": "czarny",
"color-blue": "niebieski",
- "color-crimson": "crimson",
- "color-darkgreen": "darkgreen",
- "color-gold": "gold",
- "color-gray": "gray",
+ "color-crimson": "karmazynowy",
+ "color-darkgreen": "ciemnozielony",
+ "color-gold": "złoty",
+ "color-gray": "szary",
"color-green": "zielony",
- "color-indigo": "indigo",
+ "color-indigo": "indygo",
"color-lime": "limonkowy",
- "color-magenta": "magenta",
- "color-mistyrose": "mistyrose",
- "color-navy": "navy",
+ "color-magenta": "fuksjowy",
+ "color-mistyrose": "różowy",
+ "color-navy": "granatowy",
"color-orange": "pomarańczowy",
- "color-paleturquoise": "paleturquoise",
- "color-peachpuff": "peachpuff",
+ "color-paleturquoise": "turkusowy",
+ "color-peachpuff": "brzoskwiniowy",
"color-pink": "różowy",
- "color-plum": "plum",
+ "color-plum": "śliwkowy",
"color-purple": "fioletowy",
"color-red": "czerwony",
- "color-saddlebrown": "saddlebrown",
- "color-silver": "silver",
+ "color-saddlebrown": "jasnobrązowy",
+ "color-silver": "srebrny",
"color-sky": "błękitny",
- "color-slateblue": "slateblue",
- "color-white": "white",
+ "color-slateblue": "szaroniebieski",
+ "color-white": "miały",
"color-yellow": "żółty",
- "unset-color": "Unset",
+ "unset-color": "Nieustawiony",
"comment": "Komentarz",
"comment-placeholder": "Dodaj komentarz",
"comment-only": "Tylko komentowanie",
@@ -299,19 +299,19 @@
"import-board": "importuj tablice",
"import-board-c": "Import tablicy",
"import-board-title-trello": "Importuj tablicę z 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": "Importuj tablicę z poprzedniego eksportu",
+ "import-sandstorm-backup-warning": "Nie usuwaj danych, które importujesz ze źródłowej tablicy lub Trello zanim upewnisz się, że wszystko zostało prawidłowo przeniesione przy czym brane jest pod uwagę ponowne uruchomienie strony, ponieważ w przypadku błędu braku tablicy stracisz dane.",
"import-sandstorm-warning": "Zaimportowana tablica usunie wszystkie istniejące dane na aktualnej tablicy oraz zastąpi ją danymi z tej importowanej.",
"from-trello": "Z Trello",
- "from-wekan": "From previous export",
+ "from-wekan": "Z poprzedniego eksportu",
"import-board-instruction-trello": "W twojej tablicy na Trello przejdź do 'Menu', następnie 'Więcej', 'Drukuj i eksportuj', 'Eksportuj jako JSON' i skopiuj wynik",
- "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": "Na Twojej tablicy przejdź do 'Menu', a następnie wybierz 'Eksportuj tablicę' i skopiuj tekst w pobranym pliku.",
"import-board-instruction-about-errors": "W przypadku, gdy otrzymujesz błędy importowania tablicy, czasami importowanie pomimo wszystko działa poprawnie i tablica znajduje się w oknie Wszystkie tablice.",
"import-json-placeholder": "Wklej Twoje dane JSON tutaj",
"import-map-members": "Przypisz członków",
- "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
+ "import-members-map": "Twoje zaimportowane tablice mają kilku członków. Proszę wybierz członków których chcesz zaimportować dla Twoich użytkowników",
"import-show-user-mapping": "Przejrzyj wybranych członków",
- "import-user-select": "Pick your existing user you want to use as this member",
+ "import-user-select": "Wybierz istniejącego użytkownika, który ma stać się członkiem",
"importMapMembersAddPopup-title": "Wybierz użytkownika",
"info": "Wersja",
"initials": "Inicjały",
@@ -335,10 +335,10 @@
"list-archive-cards-pop": "To usunie wszystkie karty z tej listy z tej tablicy. Aby przejrzeć karty w Archiwum i przywrócić na tablicę, kliknij \"Menu\" > \"Archiwizuj\".",
"list-move-cards": "Przenieś wszystkie karty z tej listy",
"list-select-cards": "Zaznacz wszystkie karty z tej listy",
- "set-color-list": "Set Color",
+ "set-color-list": "Ustaw kolor",
"listActionPopup-title": "Lista akcji",
"swimlaneActionPopup-title": "Opcje diagramu czynności",
- "swimlaneAddPopup-title": "Add a Swimlane below",
+ "swimlaneAddPopup-title": "Dodaj diagram czynności poniżej",
"listImportCardPopup-title": "Zaimportuj kartę z Trello",
"listMorePopup-title": "Więcej",
"link-list": "Podepnij do tej listy",
@@ -478,14 +478,14 @@
"send-smtp-test": "Wyślij wiadomość testową do siebie",
"invitation-code": "Kod z zaproszenia",
"email-invite-register-subject": "__inviter__ wysłał Ci zaproszenie",
- "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": "Drogi __user__,\n\n__inviter__ zaprasza Cię do współpracy na naszej tablicy kanban.\n\nAby kontynuować, wejdź w poniższy link:\n__url__\n\nTwój kod zaproszenia to: __icode__\n\nDziękuję.",
+ "email-smtp-test-subject": "Wiadomość testowa SMTP",
"email-smtp-test-text": "Wiadomość testowa została wysłana z powodzeniem.",
"error-invitation-code-not-exist": "Kod zaproszenia nie istnieje",
"error-notAuthorized": "Nie jesteś uprawniony do przeglądania tej strony.",
"outgoing-webhooks": "Wychodzące webhooki",
"outgoingWebhooksPopup-title": "Wychodzące webhooki",
- "boardCardTitlePopup-title": "Card Title Filter",
+ "boardCardTitlePopup-title": "Filtruj poprzez nazwę karty",
"new-outgoing-webhook": "Nowy wychodzący webhook",
"no-name": "(nieznany)",
"Node_version": "Wersja Node",
@@ -498,7 +498,7 @@
"OS_Totalmem": "Dostępna pamięć RAM",
"OS_Type": "Typ systemu",
"OS_Uptime": "Czas działania systemu",
- "days": "days",
+ "days": "dni",
"hours": "godzin",
"minutes": "minut",
"seconds": "sekund",
@@ -519,10 +519,10 @@
"card-end-on": "Kończy się",
"editCardReceivedDatePopup-title": "Zmień datę odebrania",
"editCardEndDatePopup-title": "Zmień datę ukończenia",
- "setCardColorPopup-title": "Set color",
- "setCardActionsColorPopup-title": "Choose a color",
- "setSwimlaneColorPopup-title": "Choose a color",
- "setListColorPopup-title": "Choose a color",
+ "setCardColorPopup-title": "Ustaw kolor",
+ "setCardActionsColorPopup-title": "Wybierz kolor",
+ "setSwimlaneColorPopup-title": "Wybierz kolor",
+ "setListColorPopup-title": "Wybierz kolor",
"assigned-by": "Przypisane przez",
"requested-by": "Zlecone przez",
"board-delete-notice": "Usuwanie jest permanentne. Stracisz wszystkie listy, kart oraz czynności przypisane do tej tablicy.",
@@ -561,14 +561,14 @@
"r-delete-rule": "Usuń regułę",
"r-new-rule-name": "Nowa nazwa reguły",
"r-no-rules": "Brak regułę",
- "r-when-a-card": "When a card",
+ "r-when-a-card": "Gdy karta",
"r-is": "jest",
- "r-is-moved": "is moved",
- "r-added-to": "added to",
+ "r-is-moved": "jest przenoszona",
+ "r-added-to": "dodana do",
"r-removed-from": "Usunięto z",
"r-the-board": "tablicy",
"r-list": "lista",
- "set-filter": "Set Filter",
+ "set-filter": "Ustaw filtr",
"r-moved-to": "Przeniesiono do",
"r-moved-from": "Przeniesiono z",
"r-archived": "Przeniesione z Archiwum",
@@ -576,7 +576,7 @@
"r-a-card": "karta",
"r-when-a-label-is": "Gdy etykieta jest",
"r-when-the-label-is": "Gdy etykieta jest",
- "r-list-name": "list name",
+ "r-list-name": "nazwa listy",
"r-when-a-member": "Gdy członek jest",
"r-when-the-member": "Gdy członek jest",
"r-name": "nazwa",
@@ -601,7 +601,7 @@
"r-label": "etykieta",
"r-member": "członek",
"r-remove-all": "Usuń wszystkich członków tej karty",
- "r-set-color": "Set color to",
+ "r-set-color": "Ustaw kolor na",
"r-checklist": "lista zadań",
"r-check-all": "Zaznacz wszystkie",
"r-uncheck-all": "Odznacz wszystkie",
@@ -626,9 +626,9 @@
"r-d-unarchive": "Przywróć kartę z Archiwum",
"r-d-add-label": "Dodaj etykietę",
"r-d-remove-label": "Usuń etykietę",
- "r-create-card": "Create new card",
- "r-in-list": "in list",
- "r-in-swimlane": "in swimlane",
+ "r-create-card": "Utwórz nową kartę",
+ "r-in-list": "na liście",
+ "r-in-swimlane": "w diagramie zdarzeń",
"r-d-add-member": "Dodaj członka",
"r-d-remove-member": "Usuń członka",
"r-d-remove-all-member": "Usuń wszystkich członków",
@@ -639,14 +639,14 @@
"r-d-check-of-list": "z listy zadań",
"r-d-add-checklist": "Dodaj listę zadań",
"r-d-remove-checklist": "Usuń listę zadań",
- "r-by": "by",
+ "r-by": "przez",
"r-add-checklist": "Dodaj listę zadań",
- "r-with-items": "with items",
- "r-items-list": "item1,item2,item3",
- "r-add-swimlane": "Add swimlane",
- "r-swimlane-name": "swimlane name",
- "r-board-note": "Note: leave a field empty to match every possible value.",
- "r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
+ "r-with-items": "z elementami",
+ "r-items-list": "element1,element2,element3",
+ "r-add-swimlane": "Dodaj diagram zdarzeń",
+ "r-swimlane-name": "Nazwa diagramu",
+ "r-board-note": "Uwaga: pozostaw pole puste, aby każda wartość była brana pod uwagę.",
+ "r-checklist-note": "Uwaga: wartości elementów listy muszą być oddzielone przecinkami.",
"r-when-a-card-is-moved": "Gdy karta jest przeniesiona do innej listy",
"ldap": "LDAP",
"oauth2": "OAuth2",
@@ -656,8 +656,10 @@
"custom-product-name": "Niestandardowa nazwa produktu",
"layout": "Układ strony",
"hide-logo": "Ukryj logo",
- "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
- "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
- "error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "add-custom-html-after-body-start": "Dodaj niestandardowy kod HTML po <body> starcie",
+ "add-custom-html-before-body-end": "Dodaj niestandardowy kod HTML przed </body> końcem",
+ "error-undefined": "Coś poszło nie tak",
+ "error-ldap-login": "Wystąpił błąd w trakcie logowania",
+ "display-authentication-method": "Wyświetl metodę logowania",
+ "default-authentication-method": "Domyślna metoda logowania"
} \ No newline at end of file
diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json
index 07ce1dfc..2fb9c420 100644
--- a/i18n/pt-BR.i18n.json
+++ b/i18n/pt-BR.i18n.json
@@ -192,7 +192,7 @@
"color-slateblue": "azul ardósia",
"color-white": "branco",
"color-yellow": "amarelo",
- "unset-color": "Unset",
+ "unset-color": "Remover",
"comment": "Comentário",
"comment-placeholder": "Escrever Comentário",
"comment-only": "Somente comentários",
@@ -335,10 +335,10 @@
"list-archive-cards-pop": "Isto removerá todos os cartões desta lista para o quadro. Para visualizar cartões arquivados e trazê-los de volta para o quadro, clique em “Menu” > “Arquivo-morto”.",
"list-move-cards": "Mover todos os cartões desta lista",
"list-select-cards": "Selecionar todos os cartões nesta lista",
- "set-color-list": "Set Color",
+ "set-color-list": "Definir Cor",
"listActionPopup-title": "Listar Ações",
"swimlaneActionPopup-title": "Ações de Raia",
- "swimlaneAddPopup-title": "Add a Swimlane below",
+ "swimlaneAddPopup-title": "Adicionar uma Raia abaixo ",
"listImportCardPopup-title": "Importe um cartão do Trello",
"listMorePopup-title": "Mais",
"link-list": "Vincular a esta lista",
@@ -520,9 +520,9 @@
"editCardReceivedDatePopup-title": "Modificar data de recebimento",
"editCardEndDatePopup-title": "Mudar data de fim",
"setCardColorPopup-title": "Definir cor",
- "setCardActionsColorPopup-title": "Choose a color",
- "setSwimlaneColorPopup-title": "Choose a color",
- "setListColorPopup-title": "Choose a color",
+ "setCardActionsColorPopup-title": "Escolha uma cor",
+ "setSwimlaneColorPopup-title": "Escolha uma cor",
+ "setListColorPopup-title": "Escolha uma cor",
"assigned-by": "Atribuído por",
"requested-by": "Solicitado por",
"board-delete-notice": "Excluir é permanente. Você perderá todas as listas, cartões e ações associados nesse quadro.",
@@ -654,10 +654,12 @@
"authentication-method": "Método de autenticação",
"authentication-type": "Tipo de autenticação",
"custom-product-name": "Nome Customizado do Produto",
- "layout": "Leiaute",
+ "layout": "Layout",
"hide-logo": "Esconder Logo",
"add-custom-html-after-body-start": "Adicionar HTML Customizado depois do início do <body>",
"add-custom-html-before-body-end": "Adicionar HTML Customizado antes do fim do </body>",
"error-undefined": "Algo deu errado",
- "error-ldap-login": "Um erro ocorreu enquanto tentava entrar"
+ "error-ldap-login": "Um erro ocorreu enquanto tentava entrar",
+ "display-authentication-method": "Mostrar Método de Autenticação",
+ "default-authentication-method": "Método de Autenticação Padrão"
} \ No newline at end of file
diff --git a/i18n/pt.i18n.json b/i18n/pt.i18n.json
index ce895972..b5870960 100644
--- a/i18n/pt.i18n.json
+++ b/i18n/pt.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json
index ffcc4761..dd3938d4 100644
--- a/i18n/ro.i18n.json
+++ b/i18n/ro.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json
index a588ba2f..16bbb6e7 100644
--- a/i18n/ru.i18n.json
+++ b/i18n/ru.i18n.json
@@ -494,7 +494,7 @@
"OS_Freemem": "Свободная память",
"OS_Loadavg": "Средняя загрузка",
"OS_Platform": "Платформа",
- "OS_Release": "Релиз",
+ "OS_Release": "Версия ядра",
"OS_Totalmem": "Общая память",
"OS_Type": "Тип ОС",
"OS_Uptime": "Время работы",
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Добавить HTML после начала <body> ",
"add-custom-html-before-body-end": "Добавить HTML до завершения </body>",
"error-undefined": "Что-то пошло не так",
- "error-ldap-login": "Ошибка при попытке авторизации"
+ "error-ldap-login": "Ошибка при попытке авторизации",
+ "display-authentication-method": "Показывать способ авторизации",
+ "default-authentication-method": "Способ авторизации по умолчанию"
} \ No newline at end of file
diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json
index c44e59a4..83bdc3a6 100644
--- a/i18n/sr.i18n.json
+++ b/i18n/sr.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json
index 0012072a..c93862bb 100644
--- a/i18n/sv.i18n.json
+++ b/i18n/sv.i18n.json
@@ -82,16 +82,16 @@
"archive": "Flytta till Arkiv",
"archive-all": "Flytta alla till Arkiv",
"archive-board": "Flytta Anslagstavla till Arkiv",
- "archive-card": "Move Card to Archive",
- "archive-list": "Move List to Archive",
+ "archive-card": "Flytta Kort till Arkiv",
+ "archive-list": "Flytta Lista till Arkiv",
"archive-swimlane": "Move Swimlane to Archive",
- "archive-selection": "Move selection to Archive",
+ "archive-selection": "Flytta markerade till Arkiv",
"archiveBoardPopup-title": "Move Board to Archive?",
- "archived-items": "Arkivera",
+ "archived-items": "Arkiv",
"archived-boards": "Boards in Archive",
"restore-board": "Återställ anslagstavla",
"no-archived-boards": "No Boards in Archive.",
- "archives": "Arkivera",
+ "archives": "Arkiv",
"assign-member": "Tilldela medlem",
"attached": "bifogad",
"attachment": "Bilaga",
@@ -118,7 +118,7 @@
"board-view-lists": "Listor",
"bucket-example": "Gilla \"att-göra-innan-jag-dör-lista\" till exempel",
"cancel": "Avbryt",
- "card-archived": "This card is moved to Archive.",
+ "card-archived": "Detta kort är flyttat till Arkiv.",
"board-archived": "Den här anslagstavlan är flyttad till Arkiv.",
"card-comments-title": "Detta kort har %s kommentar.",
"card-delete-notice": "Ta bort är permanent. Du kommer att förlora alla åtgärder i samband med detta kort.",
@@ -170,9 +170,9 @@
"color-black": "svart",
"color-blue": "blå",
"color-crimson": "crimson",
- "color-darkgreen": "darkgreen",
- "color-gold": "gold",
- "color-gray": "gray",
+ "color-darkgreen": "mörkgrön",
+ "color-gold": "guld",
+ "color-gray": "grå",
"color-green": "grön",
"color-indigo": "indigo",
"color-lime": "lime",
@@ -186,11 +186,11 @@
"color-plum": "plum",
"color-purple": "lila",
"color-red": "röd",
- "color-saddlebrown": "saddlebrown",
+ "color-saddlebrown": "sadelbrun",
"color-silver": "silver",
"color-sky": "himmel",
"color-slateblue": "slateblue",
- "color-white": "white",
+ "color-white": "vit",
"color-yellow": "gul",
"unset-color": "Unset",
"comment": "Kommentera",
@@ -288,7 +288,7 @@
"filter-on-desc": "Du filtrerar kort på denna anslagstavla. Klicka här för att redigera filter.",
"filter-to-selection": "Filter till val",
"advanced-filter-label": "Avancerat filter",
- "advanced-filter-description": "Avancerade Filter låter dig skriva en sträng innehållande följande operatorer: == != <= >= && || ( ). Ett mellanslag används som separator mellan operatorerna. Du kan filtrera alla specialfält genom att skriva dess namn och värde. Till exempel: Fält1 == Vårde1. Notera: om fälten eller värden innehåller mellanrum behöver du innesluta dem med enkla citatstecken. Till exempel: 'Fält 1' == 'Värde 1'. För att skippa enkla kontrolltecken (' \\/) kan du använda \\. Till exempel: Fält1 == I\\'m. Du kan även kombinera fler villkor. TIll exempel: F1 == V1 || F1 == V2. Vanligtvis läses operatorerna från vänster till höger. Du kan ändra ordning genom att använda paranteser. TIll exempel: F1 == V1 && ( F2 == V2 || F2 == V3 ). Du kan även söka efter textfält med hjälp av regex: F1 == /Tes.*/i",
+ "advanced-filter-description": "Avancerade filter låter dig skriva en sträng innehållande följande operatorer: == != <= >= && || ( ). Ett mellanslag används som separator mellan operatorerna. Du kan filtrera alla specialfält genom att skriva dess namn och värde. Till exempel: Fält1 == Vårde1. Notera: om fälten eller värden innehåller mellanrum behöver du innesluta dem med enkla citatstecken. Till exempel: 'Fält 1' == 'Värde 1'. För att skippa enkla kontrolltecken (' \\/) kan du använda \\. Till exempel: Fält1 == I\\'m. Du kan även kombinera fler villkor. TIll exempel: F1 == V1 || F1 == V2. Vanligtvis läses operatorerna från vänster till höger. Du kan ändra ordning genom att använda paranteser. TIll exempel: F1 == V1 && ( F2 == V2 || F2 == V3 ). Du kan även söka efter textfält med hjälp av regex: F1 == /Tes.*/i",
"fullname": "Namn",
"header-logo-title": "Gå tillbaka till din anslagstavlor-sida.",
"hide-system-messages": "Göm systemmeddelanden",
@@ -303,7 +303,7 @@
"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": "Importerad anslagstavla raderar all befintlig data på anslagstavla och ersätter den med importerat anslagstavla.",
"from-trello": "Från Trello",
- "from-wekan": "From previous export",
+ "from-wekan": "Från tidigare export",
"import-board-instruction-trello": "I din Trello-anslagstavla, gå till 'Meny', sedan 'Mera', 'Skriv ut och exportera', 'Exportera JSON' och kopiera den resulterande 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-about-errors": "Om du får fel vid import av anslagstavla, ibland importerar fortfarande fungerar, och styrelsen är på alla sidor för anslagstavlor.",
@@ -312,7 +312,7 @@
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Granska medlemskartläggning",
"import-user-select": "Pick your existing user you want to use as this member",
- "importMapMembersAddPopup-title": "Select member",
+ "importMapMembersAddPopup-title": "Välj medlem",
"info": "Version",
"initials": "Initialer ",
"invalid-date": "Ogiltigt datum",
@@ -331,7 +331,7 @@
"leave-board-pop": "Är du säker på att du vill lämna __boardTitle__? Du kommer att tas bort från alla kort på den här anslagstavlan.",
"leaveBoardPopup-title": "Lämna anslagstavla ?",
"link-card": "Länka till detta kort",
- "list-archive-cards": "Move all cards in this list to Archive",
+ "list-archive-cards": "Flytta alla kort i den här listan till Arkiv",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Flytta alla kort i denna lista",
"list-select-cards": "Välj alla kort i denna lista",
@@ -363,8 +363,8 @@
"muted-info": "Du kommer aldrig att meddelas om eventuella ändringar i denna anslagstavla",
"my-boards": "Mina anslagstavlor",
"name": "Namn",
- "no-archived-cards": "No cards in Archive.",
- "no-archived-lists": "No lists in Archive.",
+ "no-archived-cards": "Inga kort i Arkiv.",
+ "no-archived-lists": "Inga listor i Arkiv.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "Inga reslutat",
"normal": "Normal",
@@ -445,7 +445,7 @@
"uploaded-avatar": "Laddade upp en avatar",
"username": "Änvandarnamn",
"view-it": "Visa det",
- "warn-list-archived": "warning: this card is in an list at Archive",
+ "warn-list-archived": "varning: detta kort finns i en lista i Arkiv",
"watch": "Bevaka",
"watching": "Bevakar",
"watching-info": "Du kommer att meddelas om alla ändringar på denna anslagstavla",
@@ -498,7 +498,7 @@
"OS_Totalmem": "OS totalt minne",
"OS_Type": "OS Typ",
"OS_Uptime": "OS drifttid",
- "days": "days",
+ "days": "dagar",
"hours": "timmar",
"minutes": "minuter",
"seconds": "sekunder",
@@ -519,10 +519,10 @@
"card-end-on": "Slutar den",
"editCardReceivedDatePopup-title": "Ändra mottagningsdatum",
"editCardEndDatePopup-title": "Ändra slutdatum",
- "setCardColorPopup-title": "Set color",
- "setCardActionsColorPopup-title": "Choose a color",
- "setSwimlaneColorPopup-title": "Choose a color",
- "setListColorPopup-title": "Choose a color",
+ "setCardColorPopup-title": "Ange färg",
+ "setCardActionsColorPopup-title": "Välj en färg",
+ "setSwimlaneColorPopup-title": "Välj en färg",
+ "setListColorPopup-title": "Välj en färg",
"assigned-by": "Tilldelad av",
"requested-by": "Efterfrågad av",
"board-delete-notice": "Borttagningen är permanent. Du kommer förlora alla listor, kort och händelser kopplade till den här anslagstavlan.",
@@ -559,20 +559,20 @@
"r-add-rule": "Lägg till regel",
"r-view-rule": "Visa regel",
"r-delete-rule": "Ta bort regel",
- "r-new-rule-name": "New rule title",
+ "r-new-rule-name": "Ny titel på regel",
"r-no-rules": "Inga regler",
- "r-when-a-card": "When a card",
+ "r-when-a-card": "När ett kort",
"r-is": "är",
- "r-is-moved": "is moved",
- "r-added-to": "added to",
+ "r-is-moved": "är flyttad",
+ "r-added-to": "tillagd till",
"r-removed-from": "Borttagen från",
"r-the-board": "anslagstavlan",
"r-list": "lista",
"set-filter": "Set Filter",
"r-moved-to": "Flyttad till",
"r-moved-from": "Flyttad från",
- "r-archived": "Moved to Archive",
- "r-unarchived": "Restored from Archive",
+ "r-archived": "Flyttad till Arkiv",
+ "r-unarchived": "Återställd från Arkiv",
"r-a-card": "ett kort",
"r-when-a-label-is": "När en etikett är",
"r-when-the-label-is": "När etiketten är",
@@ -622,8 +622,8 @@
"r-d-send-email-to": "till",
"r-d-send-email-subject": "ämne",
"r-d-send-email-message": "meddelande",
- "r-d-archive": "Move card to Archive",
- "r-d-unarchive": "Restore card from Archive",
+ "r-d-archive": "Flytta kortet till Arkiv",
+ "r-d-unarchive": "Återställ kortet från Arkiv",
"r-d-add-label": "Lägg till etikett",
"r-d-remove-label": "Ta bort etikett",
"r-create-card": "Create new card",
@@ -639,7 +639,7 @@
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Lägg till checklista",
"r-d-remove-checklist": "Ta bort checklista",
- "r-by": "by",
+ "r-by": "av",
"r-add-checklist": "Lägg till checklista",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
@@ -658,6 +658,8 @@
"hide-logo": "Dölj logotypen",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
- "error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-undefined": "Något gick fel",
+ "error-ldap-login": "Ett fel uppstod när du försökte logga in",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/sw.i18n.json b/i18n/sw.i18n.json
index 4931db9b..1ffffddb 100644
--- a/i18n/sw.i18n.json
+++ b/i18n/sw.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json
index cdc21750..ab803752 100644
--- a/i18n/ta.i18n.json
+++ b/i18n/ta.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json
index e767a6cd..a748773e 100644
--- a/i18n/th.i18n.json
+++ b/i18n/th.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json
index a7bb0f3c..5bac9e4f 100644
--- a/i18n/tr.i18n.json
+++ b/i18n/tr.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Bir şeyler yanlış gitti",
- "error-ldap-login": "Giriş yapmaya çalışırken bir hata oluştu"
+ "error-ldap-login": "Giriş yapmaya çalışırken bir hata oluştu",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json
index e9381cd2..a7a85d40 100644
--- a/i18n/uk.i18n.json
+++ b/i18n/uk.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json
index 2572b501..96223df8 100644
--- a/i18n/vi.i18n.json
+++ b/i18n/vi.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json
index b8729e83..71bb3ac3 100644
--- a/i18n/zh-CN.i18n.json
+++ b/i18n/zh-CN.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "添加定制的HTML在开始<body>之前",
"add-custom-html-before-body-end": "添加定制的HTML在结束</body>之后",
"error-undefined": "出了点问题",
- "error-ldap-login": "尝试登陆时出错"
+ "error-ldap-login": "尝试登陆时出错",
+ "display-authentication-method": "显示认证方式",
+ "default-authentication-method": "缺省认证方式"
} \ No newline at end of file
diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json
index 4d7e18d0..29f47c29 100644
--- a/i18n/zh-TW.i18n.json
+++ b/i18n/zh-TW.i18n.json
@@ -659,5 +659,7 @@
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-ldap-login": "An error occurred while trying to login",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
} \ No newline at end of file
diff --git a/models/export.js b/models/export.js
index 50971c88..76f2da06 100644
--- a/models/export.js
+++ b/models/export.js
@@ -31,7 +31,7 @@ if (Meteor.isServer) {
user = Meteor.users.findOne({
'services.resume.loginTokens.hashedToken': hashToken,
});
- } else {
+ } else if (!Meteor.settings.public.sandstorm) {
Authentication.checkUserId(req.userId);
user = Users.findOne({ _id: req.userId, isAdmin: true });
}
diff --git a/models/users.js b/models/users.js
index 56643848..0fdf21a8 100644
--- a/models/users.js
+++ b/models/users.js
@@ -569,7 +569,7 @@ if (Meteor.isServer) {
user.username = user.services.oidc.username;
user.emails = [{ address: email, verified: true }];
const initials = user.services.oidc.fullname.match(/\b[a-zA-Z]/g).join('').toUpperCase();
- user.profile = { initials, fullname: user.services.oidc.fullname };
+ user.profile = { initials, fullname: user.services.oidc.fullname, boardView: 'board-view-lists' };
user.authenticationMethod = 'oauth2';
// see if any existing user has this email address or username, otherwise create new
diff --git a/package.json b/package.json
index b9936b63..02e5ae01 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wekan",
- "version": "v2.13.0",
+ "version": "v2.22.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
diff --git a/releases/virtualbox/start-wekan.sh b/releases/virtualbox/start-wekan.sh
index 2aec8004..d8ac716e 100755
--- a/releases/virtualbox/start-wekan.sh
+++ b/releases/virtualbox/start-wekan.sh
@@ -1,29 +1,33 @@
# If you want to restart even on crash, uncomment while and done lines.
#while true; do
- cd ~/repos/wekan/.build/bundle
- export MONGO_URL='mongodb://127.0.0.1:27017/admin'
+ cd ~/repos/wekan/.build/bundle
+ #---------------------------------------------
+ # Debug OIDC OAuth2 etc.
+ #export export DEBUG=true
+ #---------------------------------------------
+ export MONGO_URL='mongodb://127.0.0.1:27017/admin'
# ROOT_URL EXAMPLES FOR WEBSERVERS: https://github.com/wekan/wekan/wiki/Settings
- # Production: https://example.com/wekan
- # Local: http://localhost:3000
- #export ipaddress=$(ifdata -pa eth0)
- export ROOT_URL='http://localhost'
+ # Production: https://example.com/wekan
+ # Local: http://localhost:3000
+ #export ipaddress=$(ifdata -pa eth0)
+ export ROOT_URL='http://localhost'
#---------------------------------------------
# Working email IS NOT REQUIRED to use Wekan.
# https://github.com/wekan/wekan/wiki/Adding-users
- # https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
- # https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml
- export MAIL_URL='smtp://user:pass@mailserver.example.com:25/'
- export MAIL_FROM='Wekan Support <support@example.com>'
- # This is local port where Wekan Node.js runs, same as below on Caddyfile settings.
- export PORT=80
+ # https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
+ # https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml
+ export MAIL_URL='smtp://user:pass@mailserver.example.com:25/'
+ export MAIL_FROM='Wekan Support <support@example.com>'
+ # This is local port where Wekan Node.js runs, same as below on Caddyfile settings.
+ export PORT=80
#---------------------------------------------
- # Wekan Export Board works when WITH_API='true'.
+ # Wekan Export Board works when WITH_API='true'.
# If you disable Wekan API, Export Board does not work.
- export WITH_API='true'
+ export WITH_API='true'
#---------------------------------------------
# CORS: Set Access-Control-Allow-Origin header. Example: *
- #- CORS=*
+ #export CORS=*
#---------------------------------------------
## Optional: Integration with Matomo https://matomo.org that is installed to your server
## The address of the server where Matomo is hosted:
@@ -39,36 +43,81 @@
# Example: export MATOMO_WITH_USERNAME=true
#export MATOMO_WITH_USERNAME='false'
# Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside.
- # Setting this to false is not recommended, it also disables all other browser policy protections
- # and allows all iframing etc. See wekan/server/policy.js
- # Default value: true
- export BROWSER_POLICY_ENABLED=true
+ # Setting this to false is not recommended, it also disables all other browser policy protections
+ # and allows all iframing etc. See wekan/server/policy.js
+ # Default value: true
+ export BROWSER_POLICY_ENABLED=true
# When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside.
- # Example: export TRUSTED_URL=http://example.com
+ # Example: export TRUSTED_URL=http://example.com
export TRUSTED_URL=''
# What to send to Outgoing Webhook, or leave out. Example, that includes all that are default: cardId,listId,oldListId,boardId,comment,user,card,commentId .
# Example: export WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
- export WEBHOOKS_ATTRIBUTES=''
+ export WEBHOOKS_ATTRIBUTES=''
#---------------------------------------------
+ # ==== OAUTH2 AZURE ====
+ # https://github.com/wekan/wekan/wiki/Azure
+ # 1) Register the application with Azure. Make sure you capture
+ # the application ID as well as generate a secret key.
+ # 2) Configure the environment variables. This differs slightly
+ # by installation type, but make sure you have the following:
+ #export OAUTH2_ENABLED=true
+ # Application GUID captured during app registration:
+ #export OAUTH2_CLIENT_ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
+ # Secret key generated during app registration:
+ #export OAUTH2_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ #export OAUTH2_SERVER_URL=https://login.microsoftonline.com/
+ #export OAUTH2_AUTH_ENDPOINT=/oauth2/v2.0/authorize
+ #export OAUTH2_USERINFO_ENDPOINT=https://graph.microsoft.com/oidc/userinfo
+ #export OAUTH2_TOKEN_ENDPOINT=/oauth2/v2.0/token
+ # The claim name you want to map to the unique ID field:
+ #export OAUTH2_ID_MAP=email
+ # The claim name you want to map to the username field:
+ #export OAUTH2_USERNAME_MAP=email
+ # The claim name you want to map to the full name field:
+ #export OAUTH2_FULLNAME_MAP=name
+ # Tthe claim name you want to map to the email field:
+ #export OAUTH2_EMAIL_MAP=email
+ #-----------------------------------------------------------------
+ # ==== OAUTH2 KEYCLOAK ====
+ # https://github.com/wekan/wekan/wiki/Keycloak <== MAPPING INFO, REQUIRED
+ #export OAUTH2_ENABLED=true
+ #export OAUTH2_CLIENT_ID=<Keycloak create Client ID>
+ #export OAUTH2_SERVER_URL=<Keycloak server name>/auth
+ #export OAUTH2_AUTH_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/auth
+ #export OAUTH2_USERINFO_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/userinfo
+ #export OAUTH2_TOKEN_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/token
+ #export OAUTH2_SECRET=<keycloak client secret>
+ #-----------------------------------------------------------------
+ # ==== OAUTH2 DOORKEEPER ====
+ # https://github.com/wekan/wekan/issues/1874
+ # https://github.com/wekan/wekan/wiki/OAuth2
+ # Enable the OAuth2 connection
+ #export OAUTH2_ENABLED=true
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
- # OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345
- # example: export OAUTH2_CLIENT_ID=abcde12345
- #export OAUTH2_CLIENT_ID=''
- # OAuth2 Secret, for example from Rocket.Chat: Example: 54321abcde
- # example: export OAUTH2_SECRET=54321abcde
- #export OAUTH2_SECRET=''
- # OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com
- # example: export OAUTH2_SERVER_URL=https://chat.example.com
- #export OAUTH2_SERVER_URL=''
- # OAuth2 Authorization Endpoint. Example: /oauth/authorize
- # example: export OAUTH2_AUTH_ENDPOINT=/oauth/authorize
- #export OAUTH2_AUTH_ENDPOINT=''
- # OAuth2 Userinfo Endpoint. Example: /oauth/userinfo
- # example: export OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
- #export OAUTH2_USERINFO_ENDPOINT=''
- # OAuth2 Token Endpoint. Example: /oauth/token
- # example: export OAUTH2_TOKEN_ENDPOINT=/oauth/token
- #export OAUTH2_TOKEN_ENDPOINT=''
+ # OAuth2 Client ID.
+ #export OAUTH2_CLIENT_ID=abcde12345
+ # OAuth2 Secret.
+ #export OAUTH2_SECRET=54321abcde
+ # OAuth2 Server URL.
+ #export OAUTH2_SERVER_URL=https://chat.example.com
+ # OAuth2 Authorization Endpoint.
+ #export OAUTH2_AUTH_ENDPOINT=/oauth/authorize
+ # OAuth2 Userinfo Endpoint.
+ #export OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
+ # OAuth2 Token Endpoint.
+ #export OAUTH2_TOKEN_ENDPOINT=/oauth/token
+ # OAuth2 ID Mapping
+ #export OAUTH2_ID_MAP=
+ # OAuth2 Username Mapping
+ #export OAUTH2_USERNAME_MAP=
+ # OAuth2 Fullname Mapping
+ #export OAUTH2_FULLNAME_MAP=
+ # OAuth2 Email Mapping
+ #export OAUTH2_EMAIL_MAP=
+ # OAUTH2 ID Token Whitelist Fields.
+ #export OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[]
+ # OAUTH2 Request Permissions.
+ #export OAUTH2_REQUEST_PERMISSIONS=[openid profile email]
#---------------------------------------------
# LDAP_ENABLE : Enable or not the connection by the LDAP
# example : export LDAP_ENABLE=true
@@ -192,15 +241,15 @@
#export LDAP_DEFAULT_DOMAIN=
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
# example : LOGOUT_WITH_TIMER=true
- #- LOGOUT_WITH_TIMER=
+ #export LOGOUT_WITH_TIMER=
# LOGOUT_IN : The number of days
# example : LOGOUT_IN=1
- #- LOGOUT_IN=
- #- LOGOUT_ON_HOURS=
+ #export LOGOUT_IN=
+ #export LOGOUT_ON_HOURS=
# LOGOUT_ON_MINUTES : The number of minutes
# example : LOGOUT_ON_MINUTES=55
- #- LOGOUT_ON_MINUTES=
+ #export LOGOUT_ON_MINUTES=
- node main.js & >> ~/repos/wekan.log
- cd ~/repos
+ node main.js & >> ~/repos/wekan.log
+ cd ~/repos
#done
diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp
index 19e81a74..5b0d993d 100644
--- a/sandstorm-pkgdef.capnp
+++ b/sandstorm-pkgdef.capnp
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
- appVersion = 215,
+ appVersion = 224,
# Increment this for every release.
- appMarketingVersion = (defaultText = "2.13.0~2019-02-01"),
+ appMarketingVersion = (defaultText = "2.22.0~2019-02-13"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
diff --git a/server/authentication.js b/server/authentication.js
index 4d3cc53e..76ab6cf1 100644
--- a/server/authentication.js
+++ b/server/authentication.js
@@ -76,8 +76,8 @@ Meteor.startup(() => {
authorizationEndpoint: process.env.OAUTH2_AUTH_ENDPOINT,
userinfoEndpoint: process.env.OAUTH2_USERINFO_ENDPOINT,
tokenEndpoint: process.env.OAUTH2_TOKEN_ENDPOINT,
- idTokenWhitelistFields: [],
- requestPermissions: ['openid'],
+ idTokenWhitelistFields: process.env.OAUTH2_ID_TOKEN_WHITELIST_FIELDS || [],
+ requestPermissions: process.OAUTH2_REQUEST_PERMISSIONS || ['openid'],
},
}
);
diff --git a/snap-src/bin/config b/snap-src/bin/config
index 7eb9a990..e674afa0 100755
--- a/snap-src/bin/config
+++ b/snap-src/bin/config
@@ -3,9 +3,13 @@
# 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 DEFAULT_AUTHENTICATION_METHOD"
+keys="DEBUG 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 OAUTH2_ID_MAP OAUTH2_USERNAME_MAP OAUTH2_FULLNAME_MAP OAUTH2_EMAIL_MAP OAUTH2_ID_TOKEN_WHITELIST_FIELDS OAUTH2_REQUEST_PERMISSIONS 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_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
+DEFAULT_DEBUG="false"
+KEY_DEBUG="debug"
+
DESCRIPTION_MONGODB_BIND_UNIX_SOCKET="mongodb binding unix socket:\n"\
"\t\t\t Default behaviour will preffer binding over unix socket, to disable unix socket binding set value to 'nill' string\n"\
"\t\t\t To bind to instance of mongodb provided through content interface,set value to relative path to the socket inside '$SNAP_DATA/shared' directory"
@@ -114,6 +118,34 @@ DESCRIPTION_OAUTH2_TOKEN_ENDPOINT="OAuth2 token endpoint. Example: /oauth/token"
DEFAULT_OAUTH2_TOKEN_ENDPOINT=""
KEY_OAUTH2_TOKEN_ENDPOINT="oauth2-token-endpoint"
+DESCRIPTION_OAUTH2_ID_MAP="OAuth2 ID Mapping. Example: email"
+DEFAULT_OAUTH2_ID_MAP=""
+KEY_OAUTH2_ID_MAP="oauth2-id-map"
+
+DESCRIPTION_OAUTH2_USERNAME_MAP="OAuth2 Username Mapping. Example: email"
+DEFAULT_OAUTH2_USERNAME_MAP=""
+KEY_OAUTH2_USERNAME_MAP="oauth2-username-map"
+
+DESCRIPTION_OAUTH2_FULLNAME_MAP="OAuth2 Fullname Mapping. Example: name"
+DEFAULT_OAUTH2_FULLNAME_MAP=""
+KEY_OAUTH2_FULLNAME_MAP="oauth2-fullname-map"
+
+DESCRIPTION_OAUTH2_FULLNAME_MAP="OAuth2 Fullname Mapping. Example: name"
+DEFAULT_OAUTH2_FULLNAME_MAP=""
+KEY_OAUTH2_FULLNAME_MAP="oauth2-fullname-map"
+
+DESCRIPTION_OAUTH2_EMAIL_MAP="OAuth2 Email Mapping. Example: email"
+DEFAULT_OAUTH2_EMAIL_MAP=""
+KEY_OAUTH2_EMAIL_MAP="oauth2-email-map"
+
+DESCRIPTION_OAUTH2_ID_TOKEN_WHITELIST_FIELDS="OAuth2 ID Token Whitelist Fields. Example: []"
+DEFAULT_OAUTH2_ID_TOKEN_WHITELIST_FIELDS=""
+KEY_OAUTH2_ID_TOKEN_WHITELIST_FIELDS="oauth2-id-token-whitelist-fields"
+
+DESCRIPTION_OAUTH2_REQUEST_PERMISSIONS="OAuth2 Request Permissions. Example: [openid profile email]"
+DEFAULT_OAUTH2_REQUEST_PERMISSIONS=""
+KEY_OAUTH2_REQUEST_PERMISSIONS="oauth2-request-permissions"
+
DESCRIPTION_LDAP_ENABLE="Enable or not the connection by the LDAP"
DEFAULT_LDAP_ENABLE="false"
KEY_LDAP_ENABLE="ldap-enable"
@@ -290,7 +322,6 @@ 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/mongodb-control b/snap-src/bin/mongodb-control
index a7a98739..d6d795bc 100755
--- a/snap-src/bin/mongodb-control
+++ b/snap-src/bin/mongodb-control
@@ -29,4 +29,4 @@ if [ "x" != "x${MONGODB_PORT}" ]; then
fi
echo "mongodb bind options: $BIND_OPTIONS"
-mongod --dbpath $SNAP_COMMON --logpath $SNAP_COMMON/mongodb.log --logappend --journal $BIND_OPTIONS
+mongod --dbpath $SNAP_COMMON --logpath $SNAP_COMMON/mongodb.log --logappend --journal $BIND_OPTIONS --smallfiles
diff --git a/snap-src/bin/wekan-help b/snap-src/bin/wekan-help
index 9c7a67a2..80cbc7ad 100755
--- a/snap-src/bin/wekan-help
+++ b/snap-src/bin/wekan-help
@@ -8,6 +8,13 @@ if [ "$CADDY_ENABLED" = "true" ]; then
fi
echo -e "Wekan: The open-source kanban.\n"
+echo -e "\n"
+echo -e "Debug OIDC OAuth2 etc."
+echo -e "To enable the Debug of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME debug='true'"
+echo -e "\t-Disable the Debug of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME debug='false'"
+echo -e "\n"
echo -e "Make sure you have connected all interfaces, check more by calling $ snap interfaces ${SNAP_NAME}"
echo -e "\n"
echo -e "${SNAP_NAME} has multiple services, to check status use systemctl"
@@ -29,250 +36,280 @@ echo -e "\t\t-disable mongodb in $SNAP_NAME by calling: $ snap set $SNAP_NAME se
echo -e "\t\t-set mongodb-bind-unix-socket to point to serving mongodb. Use relative path inside shared directory, e.g run/mongodb-27017.sock"
echo -e "\n"
echo -e "To enable the API of wekan:"
-echo -e "\t$ snap set $SNAP_NAME WITH_API='true'"
+echo -e "\t$ snap set $SNAP_NAME with-api='true'"
echo -e "\t-Disable the API:"
-echo -e "\t$ snap set $SNAP_NAME WITH_API='false'"
+echo -e "\t$ snap set $SNAP_NAME with-api='false'"
echo -e "\n"
echo -e "To enable the CORS of wekan, to set Access-Control-Allow-Origin header:"
-echo -e "\t$ snap set $SNAP_NAME CORS='*'"
+echo -e "\t$ snap set $SNAP_NAME cors='*'"
echo -e "\t-Disable the CORS:"
-echo -e "\t$ snap set $SNAP_NAME CORS=''"
+echo -e "\t$ snap set $SNAP_NAME cors=''"
echo -e "\n"
echo -e "Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside."
echo -e "\t\t Setting this to false is not recommended, it also disables all other browser policy protections"
echo -e "\t\t and allows all iframing etc. See wekan/server/policy.js"
-echo -e "To enable the Content Policy of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME CONTENT_POLICY_ENABLED='true'"
-echo -e "\t-Disable the Content Policy of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME CONTENT_POLICY_ENABLED='false'"
+echo -e "To enable the Browser Policy of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME browser-policy-enabled='true'"
+echo -e "\t-Disable the Browser Policy of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME browser-policy-enabled='false'"
echo -e "\n"
echo -e "When browser policy is enabled, HTML code at this URL can have iframe that embeds Wekan inside."
echo -e "To enable the Trusted URL of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME TRUSTED_URL='https://example.com'"
+echo -e "\t$ snap set $SNAP_NAME trusted-url='https://example.com'"
echo -e "\t-Disable the Trusted URL of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME TRUSTED_URL=''"
+echo -e "\t$ snap set $SNAP_NAME trusted-url=''"
echo -e "\n"
echo -e "What to send to Outgoing Webhook, or leave out. Example, that includes all that are default: cardId,listId,oldListId,boardId,comment,user,card,commentId ."
echo -e "To enable the Webhooks Attributes of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME WEBHOOKS_ATTRIBUTES='cardId,listId,oldListId,boardId,comment,user,card,commentId'"
+echo -e "\t$ snap set $SNAP_NAME webhooks-attributes='cardId,listId,oldListId,boardId,comment,user,card,commentId'"
echo -e "\t-Disable the Webhooks Attributes of Wekan to send all default ones:"
-echo -e "\t$ snap set $SNAP_NAME WEBHOOKS_ATTRIBUTES=''"
+echo -e "\t$ snap set $SNAP_NAME webhooks-attributes=''"
echo -e "\n"
-echo -e "OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345"
+echo -e "OAuth2 Client ID."
echo -e "To enable the OAuth2 Client ID of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_CLIENT_ID='54321abcde'"
+echo -e "\t$ snap set $SNAP_NAME oauth2-client-id='54321abcde'"
echo -e "\t-Disable the OAuth2 Client ID of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_CLIENT_ID=''"
+echo -e "\t$ snap set $SNAP_NAME oauth2-client-id=''"
echo -e "\n"
-echo -e "OAuth2 Secret, for example from Rocket.Chat. Example: 54321abcde"
+echo -e "OAuth2 Secret."
echo -e "To enable the OAuth2 Secret of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_SECRET='54321abcde'"
+echo -e "\t$ snap set $SNAP_NAME oauth2-secret='54321abcde'"
echo -e "\t-Disable the OAuth2 Secret of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_SECRET=''"
-echo -e "\n"
-echo -e "OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com"
-echo -e "To enable the OAuth2 Server URL of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_SERVER_URL='https://chat.example.com'"
-echo -e "\t-Disable the OAuth2 Server URL of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_SERVER_URL=''"
+echo -e "\t$ snap set $SNAP_NAME oauth2-secret=''"
echo -e "\n"
-echo -e "OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com"
+echo -e "OAuth2 Server URL."
echo -e "To enable the OAuth2 Server URL of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_SERVER_URL='https://chat.example.com'"
+echo -e "\t$ snap set $SNAP_NAME oauth2-server-url='https://chat.example.com'"
echo -e "\t-Disable the OAuth2 Server URL of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_SERVER_URL=''"
+echo -e "\t$ snap set $SNAP_NAME oauth2-server-url=''"
echo -e "\n"
-echo -e "OAuth2 Authorization Endpoint. Example: /oauth/authorize"
+echo -e "OAuth2 Authorization Endpoint."
echo -e "To enable the OAuth2 Authorization Endpoint of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_AUTH_ENDPOINT='/oauth/authorize'"
+echo -e "\t$ snap set $SNAP_NAME oauth2-auth-endpoint='/oauth/authorize'"
echo -e "\t-Disable the OAuth2 Authorization Endpoint of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_AUTH_ENDPOINT=''"
+echo -e "\t$ snap set $SNAP_NAME oauth2-auth-endpoint=''"
echo -e "\n"
-echo -e "OAuth2 Userinfo Endpoint. Example: /oauth/userinfo"
+echo -e "OAuth2 Userinfo Endpoint."
echo -e "To enable the OAuth2 Userinfo Endpoint of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_USERINFO_ENDPOINT='/oauth/authorize'"
+echo -e "\t$ snap set $SNAP_NAME oauth2-userinfo-endpoint='/oauth/authorize'"
echo -e "\t-Disable the OAuth2 Userinfo Endpoint of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_USERINFO_ENDPOINT=''"
+echo -e "\t$ snap set $SNAP_NAME oauth2-userinfo-endpoint=''"
echo -e "\n"
-echo -e "OAuth2 Token Endpoint. Example: /oauth/token"
+echo -e "OAuth2 Token Endpoint."
echo -e "To enable the OAuth2 Token Endpoint of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_TOKEN_ENDPOINT='/oauth/token'"
+echo -e "\t$ snap set $SNAP_NAME oauth2-token-endpoint='/oauth/token'"
echo -e "\t-Disable the OAuth2 Token Endpoint of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME OAUTH2_TOKEN_ENDPOINT=''"
+echo -e "\t$ snap set $SNAP_NAME oauth2-token-endpoint=''"
+echo -e "\n"
+echo -e "OAuth2 ID Mapping."
+echo -e "To enable the OAuth2 ID Mapping of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-id-map='username.uid'"
+echo -e "\t-Disable the OAuth2 ID Mapping of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-id-map=''"
+echo -e "\n"
+echo -e "OAuth2 Username Mapping."
+echo -e "To enable the OAuth2 Username Mapping of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-username-map='username'"
+echo -e "\t-Disable the OAuth2 Username Mapping of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-username-map=''"
+echo -e "\n"
+echo -e "OAuth2 Fullname Mapping."
+echo -e "To enable the OAuth2 Fullname Mapping of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-fullname-map='fullname'"
+echo -e "\t-Disable the OAuth2 Fullname Mapping of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-fullname-map=''"
+echo -e "\n"
+echo -e "OAuth2 Email Mapping."
+echo -e "To enable the OAuth2 Email Mapping of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-email-map='email'"
+echo -e "\t-Disable the OAuth2 Email Mapping of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-email-map=''"
+echo -e "\n"
+echo -e "OAuth2 ID Token Whitelist Fields."
+echo -e "To enable the OAuth2 ID Token Whitelist Fields of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-id-token-whitelist-fields='[]'"
+echo -e "\t-Disable the OAuth2 ID Token Whitelist Fields of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-id-token-whitelist-fields=''"
+echo -e "\n"
+echo -e "OAuth2 Request Permissions."
+echo -e "To enable the OAuth2 Request Permissions of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-request-permissions='[openid profile email]'"
+echo -e "\t-Disable the OAuth2 Request Permissions of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME oauth2-request-permissions=''"
echo -e "\n"
echo -e "Ldap Enable."
echo -e "To enable the ldap of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_ENABLE='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-enable='true'"
echo -e "\t-Disable the ldap of Wekan:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_ENABLE='false'"
+echo -e "\t$ snap set $SNAP_NAME ldap-enable='false'"
echo -e "\n"
echo -e "Ldap Port."
echo -e "The port of the ldap server:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_PORT='12345'"
+echo -e "\t$ snap set $SNAP_NAME ldap-port='12345'"
echo -e "\n"
echo -e "Ldap Host."
echo -e "The host server for the LDAP server:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_HOST='localhost'"
+echo -e "\t$ snap set $SNAP_NAME ldap-host='localhost'"
echo -e "\n"
echo -e "Ldap Base Dn."
echo -e "The base DN for the LDAP Tree:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_BASEDN='ou=user,dc=example,dc=org'"
+echo -e "\t$ snap set $SNAP_NAME ldap-basedn='ou=user,dc=example,dc=org'"
echo -e "\n"
echo -e "Ldap Login Fallback."
echo -e "Fallback on the default authentication method:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_LOGIN_FALLBACK='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-login-fallback='true'"
echo -e "\n"
echo -e "Ldap Reconnect."
echo -e "Reconnect to the server if the connection is lost:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_RECONNECT='false'"
+echo -e "\t$ snap set $SNAP_NAME ldap-reconnect='false'"
echo -e "\n"
echo -e "Ldap Timeout."
echo -e "Overall timeout, in milliseconds:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_TIMEOUT='12345'"
+echo -e "\t$ snap set $SNAP_NAME ldap-timeout='12345'"
echo -e "\n"
echo -e "Ldap Idle Timeout."
echo -e "Specifies the timeout for idle LDAP connections in milliseconds:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_IDLE_TIMEOUT='12345'"
+echo -e "\t$ snap set $SNAP_NAME ldap-idle-timeout='12345'"
echo -e "\n"
echo -e "Ldap Connect Timeout."
echo -e "Connection timeout, in milliseconds:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_CONNECT_TIMEOUT='12345'"
+echo -e "\t$ snap set $SNAP_NAME ldap-connect-timeout='12345'"
echo -e "\n"
echo -e "Ldap Authentication."
echo -e "If the LDAP needs a user account to search:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_AUTHENTIFICATION='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-authentication='true'"
echo -e "\n"
echo -e "Ldap Authentication User Dn."
echo -e "The search user Dn:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_AUTHENTIFICATION_USERDN='cn=admin,dc=example,dc=org'"
+echo -e "\t$ snap set $SNAP_NAME ldap-authentication-userdn='cn=admin,dc=example,dc=org'"
echo -e "\n"
echo -e "Ldap Authentication Password."
echo -e "The password for the search user:"
-echo -e "\t$ snap set $SNAP_NAME AUTHENTIFICATION_PASSWORD='admin'"
+echo -e "\t$ snap set $SNAP_NAME ldap-authentication-password='admin'"
echo -e "\n"
echo -e "Ldap Log Enabled."
echo -e "Enable logs for the module:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_LOG_ENABLED='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-log-enabled='true'"
echo -e "\n"
echo -e "Ldap Background Sync."
echo -e "If the sync of the users should be done in the background:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_BACKGROUND_SYNC='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-background-sync='true'"
echo -e "\n"
echo -e "Ldap Background Sync Interval."
echo -e "At which interval does the background task sync in milliseconds:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_BACKGROUND_SYNC_INTERVAL='12345'"
+echo -e "\t$ snap set $SNAP_NAME ldap-background-sync-interval='12345'"
echo -e "\n"
echo -e "Ldap Background Sync Keep Existant Users Updated."
-echo -e "\t$ snap set $SNAP_NAME LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-background-sync-keep-existant-users-updated='true'"
echo -e "\n"
echo -e "Ldap Background Sync Import New Users."
-echo -e "\t$ snap set $SNAP_NAME LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-background-sync-import-new-users='true'"
echo -e "\n"
echo -e "Ldap Encryption."
echo -e "Allow LDAPS:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_ENCRYPTION='ssl'"
+echo -e "\t$ snap set $SNAP_NAME ldap-encryption='ssl'"
echo -e "\n"
echo -e "Ldap Ca Cert."
echo -e "The certification for the LDAPS server:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_CA_CERT=-----BEGIN CERTIFICATE-----MIIE+zCCA+OgAwIBAgIkAhwR/6TVLmdRY6hHxvUFWc0+Enmu/Hu6cj+G2FIdAgIC...-----END CERTIFICATE-----"
+echo -e "\t$ snap set $SNAP_NAME ldap-ca-cert=-----BEGIN CERTIFICATE-----MIIE+zCCA+OgAwIBAgIkAhwR/6TVLmdRY6hHxvUFWc0+Enmu/Hu6cj+G2FIdAgIC...-----END CERTIFICATE-----"
echo -e "\n"
echo -e "Ldap Reject Unauthorized."
echo -e "Reject Unauthorized Certificate:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_REJECT_UNAUTHORIZED='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-reject-unauthorized='true'"
echo -e "\n"
echo -e "Ldap User Search Filter."
echo -e "Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_USER_SEARCH_FILTER=''"
+echo -e "\t$ snap set $SNAP_NAME ldap-user-search-filter=''"
echo -e "\n"
echo -e "Ldap User Search Scope."
echo -e "base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree). Example: one"
-echo -e "\t$ snap set $SNAP_NAME LDAP_USER_SEARCH_SCOPE=one"
+echo -e "\t$ snap set $SNAP_NAME ldap-user-search-scope=one"
echo -e "\n"
echo -e "Ldap User Search Field."
echo -e "Which field is used to find the user:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_USER_SEARCH_FIELD='uid'"
+echo -e "\t$ snap set $SNAP_NAME ldap-user-search-field='uid'"
echo -e "\n"
echo -e "Ldap Search Page Size."
echo -e "Used for pagination (0=unlimited):"
-echo -e "\t$ snap set $SNAP_NAME LDAP_SEARCH_PAGE_SIZE='12345'"
+echo -e "\t$ snap set $SNAP_NAME ldap-search-page-size='12345'"
echo -e "\n"
echo -e "Ldap Search Size Limit."
echo -e "The limit number of entries (0=unlimited):"
-echo -e "\t$ snap set $SNAP_NAME LDAP_SEARCH_SIZE_LIMIT='12345'"
+echo -e "\t$ snap set $SNAP_NAME ldap-search-size-limit='12345'"
echo -e "\n"
echo -e "Ldap Group Filter Enable."
echo -e "Enable group filtering:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_GROUP_FILTER_ENABLE='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-group-filter-enable='true'"
echo -e "\n"
echo -e "Ldap Group Filter ObjectClass."
echo -e "The object class for filtering:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_GROUP_FILTER_OBJECTCLASS='group'"
+echo -e "\t$ snap set $SNAP_NAME ldap-group-filter-objectclass='group'"
echo -e "\n"
echo -e "Ldap Group Filter Id Attribute."
-echo -e "\t$ snap set $SNAP_NAME LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE=''"
+echo -e "\t$ snap set $SNAP_NAME ldap-group-filter-group-id-attribute=''"
echo -e "\n"
echo -e "Ldap Group Filter Member Attribute."
-echo -e "\t$ snap set $SNAP_NAME LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE=''"
+echo -e "\t$ snap set $SNAP_NAME ldap-group-filter-group-member-attribute=''"
echo -e "\n"
echo -e "Ldap Group Filter Member Format."
-echo -e "\t$ snap set $SNAP_NAME LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT=''"
+echo -e "\t$ snap set $SNAP_NAME ldap-group-filter-group-member-format=''"
echo -e "\n"
echo -e "Ldap Group Filter Group Name."
-echo -e "\t$ snap set $SNAP_NAME LDAP_GROUP_FILTER_GROUP_NAME=''"
+echo -e "\t$ snap set $SNAP_NAME ldap-group-filter-group-name=''"
echo -e "\n"
echo -e "Ldap Unique Identifier Field."
echo -e "This field is sometimes class GUID (Globally Unique Identifier):"
-echo -e "\t$ snap set $SNAP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD=guid"
+echo -e "\t$ snap set $SNAP_NAME ldap-unique-identifier-field=guid"
echo -e "\n"
echo -e "Ldap Utf8 Names Slugify."
echo -e "Convert the username to utf8:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_UTF8_NAMES_SLUGIFY='false'"
+echo -e "\t$ snap set $SNAP_NAME ldap-utf8-names-slugify='false'"
echo -e "\n"
echo -e "Ldap Username Field."
echo -e "Which field contains the ldap username:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_USERNAME_FIELD='username'"
+echo -e "\t$ snap set $SNAP_NAME ldap-username-field='username'"
echo -e "\n"
echo -e "Ldap Fullname Field."
echo -e "Which field contains the ldap fullname:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_FULLNAME_FIELD='fullname'"
+echo -e "\t$ snap set $SNAP_NAME ldap-fullname-field='fullname'"
echo -e "\n"
echo -e "Ldap Merge Existing Users."
-echo -e "\t$ snap set $SNAP_NAME LDAP_MERGE_EXISTING_USERS='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-merge-existing-users='true'"
echo -e "\n"
echo -e "Ldap Sync User Data."
echo -e "Enable synchronization of user data:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_SYNC_USER_DATA='true'"
+echo -e "\t$ snap set $SNAP_NAME ldap-sync-user-data='true'"
echo -e "\n"
echo -e "Ldap Sync User Data Fieldmap."
echo -e "A field map for the matching:"
-echo -e "\t$ snap set $SNAP_NAME LDAP_SYNC_USER_DATA_FIELDMAP={\"cn\":\"name\", \"mail\":\"email\"}"
+echo -e "\t$ snap set $SNAP_NAME ldap-sync-user-data-fieldmap={\"cn\":\"name\", \"mail\":\"email\"}"
echo -e "\n"
echo -e "Ldap Sync Group Roles."
-echo -e "\t$ snap set $SNAP_NAME LDAP_SYNC_GROUP_ROLES=''"
+echo -e "\t$ snap set $SNAP_NAME ldap-sync-group-roles=''"
echo -e "\n"
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 "\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 "\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 "\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 "\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 "\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 "\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"
diff --git a/start-wekan.bat b/start-wekan.bat
index fee3e18a..9d6305b6 100644
--- a/start-wekan.bat
+++ b/start-wekan.bat
@@ -1,3 +1,10 @@
+REM ------------------------------------------------------------
+
+REM # Debug OIDC OAuth2 etc.
+REM SET DEBUG=true
+
+REM ------------------------------------------------------------
+
SET MONGO_URL=mongodb://127.0.0.1:27017/wekan
SET ROOT_URL=http://127.0.0.1:2000/
SET MAIL_URL=smtp://user:pass@mailserver.example.com:25/
@@ -67,6 +74,11 @@ REM # OAuth2 Token Endpoint. Example: /oauth/token
REM # example: OAUTH2_TOKEN_ENDPOINT=/oauth/token
REM SET OAUTH2_TOKEN_ENDPOINT=
+REM # OAUTH2 ID Token Whitelist Fields.
+REM SET OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[]
+REM # OAUTH2 Request Permissions.
+REM SET OAUTH2_REQUEST_PERMISSIONS=[openid email profile]
+
REM ------------------------------------------------------------
REM # LDAP_ENABLE : Enable or not the connection by the LDAP
@@ -245,4 +257,4 @@ REM SET LOGOUT_ON_MINUTES=
cd .build\bundle
node main.js
-cd ..\.. \ No newline at end of file
+cd ..\..
diff --git a/start-wekan.sh b/start-wekan.sh
index a7587e40..bbfbff2b 100755
--- a/start-wekan.sh
+++ b/start-wekan.sh
@@ -20,6 +20,10 @@ function wekan_repo_check(){
#while true; do
wekan_repo_check
cd .build/bundle
+ #---------------------------------------------
+ # Debug OIDC OAuth2 etc.
+ #export DEBUG=true
+ #---------------------------------------------
export MONGO_URL='mongodb://127.0.0.1:27019/wekan'
#---------------------------------------------
# Production: https://example.com/wekan
@@ -41,7 +45,7 @@ function wekan_repo_check(){
export WITH_API='true'
#---------------------------------------------
# CORS: Set Access-Control-Allow-Origin header. Example: *
- #- CORS=*
+ #export CORS=*
#---------------------------------------------
## Optional: Integration with Matomo https://matomo.org that is installed to your server
## The address of the server where Matomo is hosted:
@@ -68,25 +72,70 @@ function wekan_repo_check(){
# Example: export WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
export WEBHOOKS_ATTRIBUTES=''
#---------------------------------------------
+ # ==== OAUTH2 AZURE ====
+ # https://github.com/wekan/wekan/wiki/Azure
+ # 1) Register the application with Azure. Make sure you capture
+ # the application ID as well as generate a secret key.
+ # 2) Configure the environment variables. This differs slightly
+ # by installation type, but make sure you have the following:
+ #export OAUTH2_ENABLED=true
+ # Application GUID captured during app registration:
+ #export OAUTH2_CLIENT_ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
+ # Secret key generated during app registration:
+ #export OAUTH2_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ #export OAUTH2_SERVER_URL=https://login.microsoftonline.com/
+ #export OAUTH2_AUTH_ENDPOINT=/oauth2/v2.0/authorize
+ #export OAUTH2_USERINFO_ENDPOINT=https://graph.microsoft.com/oidc/userinfo
+ #export OAUTH2_TOKEN_ENDPOINT=/oauth2/v2.0/token
+ # The claim name you want to map to the unique ID field:
+ #export OAUTH2_ID_MAP=email
+ # The claim name you want to map to the username field:
+ #export OAUTH2_USERNAME_MAP=email
+ # The claim name you want to map to the full name field:
+ #export OAUTH2_FULLNAME_MAP=name
+ # The claim name you want to map to the email field:
+ #export OAUTH2_EMAIL_MAP=email
+ # OAUTH2 ID Token Whitelist Fields.
+ #export OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[]
+ # OAUTH2 Request Permissions.
+ #export OAUTH2_REQUEST_PERMISSIONS=[openid profile email]
+ #-----------------------------------------------------------------
+ # ==== OAUTH2 KEYCLOAK ====
+ # https://github.com/wekan/wekan/wiki/Keycloak <== MAPPING INFO, REQUIRED
+ #export OAUTH2_ENABLED=true
+ #export OAUTH2_CLIENT_ID=<Keycloak create Client ID>
+ #export OAUTH2_SERVER_URL=<Keycloak server name>/auth
+ #export OAUTH2_AUTH_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/auth
+ #export OAUTH2_USERINFO_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/userinfo
+ #export OAUTH2_TOKEN_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/token
+ #export OAUTH2_SECRET=<keycloak client secret>
+ #-----------------------------------------------------------------
+ # ==== OAUTH2 DOORKEEPER ====
+ # https://github.com/wekan/wekan/issues/1874
+ # https://github.com/wekan/wekan/wiki/OAuth2
+ # Enable the OAuth2 connection
+ #export OAUTH2_ENABLED=true
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
- # OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345
- # example: export OAUTH2_CLIENT_ID=abcde12345
- #export OAUTH2_CLIENT_ID=''
- # OAuth2 Secret, for example from Rocket.Chat: Example: 54321abcde
- # example: export OAUTH2_SECRET=54321abcde
- #export OAUTH2_SECRET=''
- # OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com
- # example: export OAUTH2_SERVER_URL=https://chat.example.com
- #export OAUTH2_SERVER_URL=''
- # OAuth2 Authorization Endpoint. Example: /oauth/authorize
- # example: export OAUTH2_AUTH_ENDPOINT=/oauth/authorize
- #export OAUTH2_AUTH_ENDPOINT=''
- # OAuth2 Userinfo Endpoint. Example: /oauth/userinfo
- # example: export OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
- #export OAUTH2_USERINFO_ENDPOINT=''
- # OAuth2 Token Endpoint. Example: /oauth/token
- # example: export OAUTH2_TOKEN_ENDPOINT=/oauth/token
- #export OAUTH2_TOKEN_ENDPOINT=''
+ # OAuth2 Client ID.
+ #export OAUTH2_CLIENT_ID=abcde12345
+ # OAuth2 Secret.
+ #export OAUTH2_SECRET=54321abcde
+ # OAuth2 Server URL.
+ #export OAUTH2_SERVER_URL=https://chat.example.com
+ # OAuth2 Authorization Endpoint.
+ #export OAUTH2_AUTH_ENDPOINT=/oauth/authorize
+ # OAuth2 Userinfo Endpoint.
+ #export OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
+ # OAuth2 Token Endpoint.
+ #export OAUTH2_TOKEN_ENDPOINT=/oauth/token
+ # OAuth2 ID Mapping
+ #export OAUTH2_ID_MAP=
+ # OAuth2 Username Mapping
+ #export OAUTH2_USERNAME_MAP=
+ # OAuth2 Fullname Mapping
+ #export OAUTH2_FULLNAME_MAP=
+ # OAuth2 Email Mapping
+ #export OAUTH2_EMAIL_MAP=
#---------------------------------------------
# LDAP_ENABLE : Enable or not the connection by the LDAP
# example : export LDAP_ENABLE=true
@@ -210,14 +259,14 @@ function wekan_repo_check(){
#export LDAP_DEFAULT_DOMAIN=
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
# example : LOGOUT_WITH_TIMER=true
- #- LOGOUT_WITH_TIMER=
+ #export LOGOUT_WITH_TIMER=
# LOGOUT_IN : The number of days
# example : LOGOUT_IN=1
- #- LOGOUT_IN=
- #- LOGOUT_ON_HOURS=
+ #export LOGOUT_IN=
+ #export LOGOUT_ON_HOURS=
# LOGOUT_ON_MINUTES : The number of minutes
# example : LOGOUT_ON_MINUTES=55
- #- LOGOUT_ON_MINUTES=
+ #export LOGOUT_ON_MINUTES=
node main.js
# & >> ../../wekan.log