Compare commits

...
92 Commits
Author SHA1 Message Date
Lauri Ojansivu 4bf0914f1e v2.23 2019-02-17 18:13:54 +02:00
Lauri Ojansivu 96519296e1 Update translations (sv). 2019-02-15 18:47:21 +02:00
Lauri Ojansivu 03d06685b0 - [Fix authentication dropdown](https://github.com/wekan/wekan/pull/2191).
Thanks to Akuket.
2019-02-15 18:45:41 +02:00
Lauri Ojansivu 7d57c56b17 Merge pull request #2191 from Akuket/feature-improve-authentication
Fix authentication dropdown
2019-02-15 18:41:38 +02:00
guillaume 4ce766853c Fix authentication dropdown 2019-02-15 17:06:05 +01:00
Lauri Ojansivu dc7bbd848c v2.22 2019-02-13 03:14:18 +02:00
Lauri Ojansivu 81744e6523 - 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.
2019-02-13 03:07:31 +02:00
Lauri Ojansivu b66f471e53 - Add configurable settings OAUTH2_ID_TOKEN_WHITELIST_FIELDS
and OAUTH2_REQUEST_PERMISSIONS.

Thanks to xet7.

Related #1874
2019-02-13 03:01:10 +02:00
Lauri Ojansivu 202b8a92af - Add Kadira integration. Thanks to GavinLilly.
Closes #2152
2019-02-13 02:24:21 +02:00
Lauri Ojansivu 1e98f6b781 Merge branch 'edge' into devel 2019-02-13 02:15:19 +02:00
Lauri Ojansivu f53e8fbd21 Merge pull request #2187 from GavinLilly/kadira-integration
Kadira integration
2019-02-13 02:13:46 +02:00
Gavin Lilly 8e95871534 Adding wekan-ldap back in to build in the Dockerfile 2019-02-13 00:01:47 +00:00
Gavin Lilly 595a2d2baa Cleaning up docker-compose for merge 2019-02-13 00:00:34 +00:00
Gavin Lilly 227772bc33 Added back wekan-ldap after it's fixed in a separate change 2019-02-12 23:56:40 +00:00
Lauri Ojansivu 2ca98e477d - Fix2: Remove overlap of side bar button with card/list menu button on mobile browser
Thanks to xet7 !

Closes #2183
2019-02-13 01:04:30 +02:00
Lauri Ojansivu 677bfc3f6b - Fix: Remove overlap of side bar button with card/list menu button on mobile browser
Thanks to xet7 !

Closes #2183
2019-02-13 00:01:38 +02:00
Lauri Ojansivu c7721b048d - Fix indenting textline. 2019-02-12 23:46:25 +02:00
Lauri Ojansivu 1417f091fe Update translations. 2019-02-12 23:38:24 +02:00
Lauri Ojansivu d22964bcfd v2.21 2019-02-12 03:24:32 +02:00
Lauri Ojansivu 59314ab17d - Add OIDC claim mapping parameters to docker-compose.yml/Snap/Source.
Thanks to xet7 !
2019-02-12 03:09:30 +02:00
Gavin Lilly 5c083d99e2 Moved to meteor-apm-agent and removed Wekan LDAP to test if working 2019-02-11 23:16:37 +00:00
Gavin Lilly d3abb0756e Pulled Wekan-LDAP locally for debug 2019-02-11 20:12:53 +00:00
Lauri Ojansivu 4de9848e34 Merge pull request #2182 from danpatdav/oidc
Add parameters for OIDC claim mapping
2019-02-11 20:30:01 +02:00
Daniel Davis bdbbb12f96 Added parameters for OIDC claim mapping
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.
2019-02-11 10:48:20 -06:00
Gavin Lilly c1ea3f49ca Merge branch 'devel' of github.com:wekan/wekan into devel 2019-02-11 16:43:57 +00:00
Gavin Lilly 905c45f225 Replaced Kadira by meteor-apm-agent 2019-02-11 16:43:52 +00:00
Daniel Davis 352e5c6cb0 Bump salleman-oidc to 1.0.12 2019-02-11 10:41:24 -06:00
Lauri Ojansivu 2d291c8f5e v2.20 2019-02-11 16:45:11 +02:00
Lauri Ojansivu 86630fa1e0 Update changelog. 2019-02-11 16:38:23 +02:00
Lauri Ojansivu 8e02170dd1 - Add option DEBUG=true for docker-compose.yml/Snap/Source.
Thanks to xet7 !
2019-02-11 16:32:24 +02:00
Lauri Ojansivu 9edf95ec93 Merge pull request #2181 from danpatdav/debug-oidc
Added debug flag and bumped salleman package version
2019-02-11 16:11:15 +02:00
Lauri Ojansivu 2add875a38 Update translations. 2019-02-11 16:09:39 +02:00
Daniel Davis b20309f7aa Syntax 2019-02-11 07:46:24 -06:00
Gavin Lilly 8996df5c09 Added Kadira using meteor add method 2019-02-09 23:37:01 +00:00
Gavin Lilly 7b5f02b4c8 Added Kadira packages and env settings in Docker Compose 2019-02-09 23:22:22 +00:00
Lauri Ojansivu fc0287a829 Update translations. 2019-02-09 21:22:36 +02:00
Lauri Ojansivu ed8bca5394 Update translations (es). 2019-02-09 00:04:51 +02:00
Lauri Ojansivu 9458f4011d v2.19 2019-02-09 00:02:49 +02:00
Lauri Ojansivu f1bd36a3b8 - Remove oplog. Need to think how to do it properly.
Thanks to xet7 !
2019-02-08 23:58:13 +02:00
Lauri Ojansivu f060e02fc0 v2.18 2019-02-08 20:56:45 +02:00
Lauri Ojansivu 0fa2e5d3a0 Add commit link to changelog. 2019-02-08 20:52:28 +02:00
Lauri Ojansivu 6d0055ecb5 Add issue link to changelog. 2019-02-08 20:49:39 +02:00
Lauri Ojansivu 2d3ce9c290 Add commit link to changelog. 2019-02-08 20:48:05 +02:00
Lauri Ojansivu 796b276d02 Update changelog. 2019-02-08 20:37:30 +02:00
Lauri Ojansivu ed98b5c807 Update changelog. 2019-02-08 20:09:42 +02:00
Lauri Ojansivu f1da7dcb0c Merge pull request #2174 from bentiss/fix-sw-reordering
Fix swimlanes sorting
2019-02-08 19:49:50 +02:00
Lauri Ojansivu 35a539eee2 Update translations. 2019-02-08 19:48:12 +02:00
Lauri Ojansivu 79ffb7d502 - Add oplog to snap mongodb.
Thanks to xet7 !
2019-02-08 19:43:21 +02:00
Benjamin Tissoires a2e6f621a2 Fix swimlanes sorting
Since 7cc185ac "Properly fix horizontal rendering on Chrome and Firefox"

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 in 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
2019-02-08 17:37:20 +01:00
Lauri Ojansivu 96e97143f2 Update translations. 2019-02-08 13:06:35 +02:00
Lauri Ojansivu 4126a1a808 Translate also Admin Panel/Layout/Display Authentication Method and Default Authentication Method. Thanks to Akuket and xet7 ! 2019-02-08 12:46:07 +02:00
Lauri Ojansivu 3ce902123f Lint also async. Thanks to Akuket ! 2019-02-08 12:44:48 +02:00
Lauri Ojansivu 7125357a44 Merge remote-tracking branch 'upstream/feature-improve-authentication' into feature-improve-authentication 2019-02-08 12:33:39 +02:00
guillaume ec453b89b8 Fix lints 2019-02-07 11:38:04 +01:00
Daniel Davis 303404acc6 Bumped salleman packages to 1.0.11
1.0.11 includes new debugging code
2019-02-06 10:18:05 -06:00
Daniel Davis f11d42e72d Add a debug argument
Implementing this for OIDC debugging, but I think it will be broadly useful for runtime debugging.
2019-02-06 10:12:32 -06:00
Lauri Ojansivu 329c8d64a8 v2.17 2019-02-04 21:47:50 +02:00
Lauri Ojansivu 698ce8f0e6 Update translations (sv). 2019-02-04 21:07:36 +02:00
Lauri Ojansivu b06e11ba09 Merge pull request #2164 from gil0109/edge
Fix trailing spaces for OIDC fix
2019-02-04 20:23:41 +02:00
Karim Gillani d689a7408b Fix trailing spaces 2019-02-04 09:36:21 -08:00
Lauri Ojansivu c899218fb9 Merge pull request #2162 from gil0109/edge
OIDC BoardView Fix
2019-02-04 19:30:24 +02:00
Karim Gillani c42f2a05d2 OIDC BoardView Fix 2019-02-04 08:24:10 -08:00
Lauri Ojansivu 70ed552e1a Update translations. 2019-02-03 15:45:00 +02:00
Lauri Ojansivu 9a07649b8a v2.16 2019-02-03 05:18:50 +02:00
Lauri Ojansivu 9a6ac544dd - Fix Sandstorm open card on public board, part 2.
Thanks to ChronikEwok !
2019-02-03 05:12:50 +02:00
Lauri Ojansivu 06a1e26655 Add missing text. 2019-02-03 03:06:54 +02:00
Lauri Ojansivu 626e7c2c61 v2.15 2019-02-03 02:31:51 +02:00
Lauri Ojansivu a7aeb491ba Update changelog. 2019-02-03 02:25:14 +02:00
Lauri Ojansivu 7ba8f72d7b - [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 ChronikEwok !

Closes #1623
2019-02-03 02:18:35 +02:00
Lauri Ojansivu d0f74d7a99 Add missing text. 2019-02-02 21:55:50 +02:00
Lauri Ojansivu 7f33fa5368 v2.14 2019-02-02 21:00:16 +02:00
Lauri Ojansivu 0ab97266f6 - [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 xet7 !
2019-02-02 20:57:47 +02:00
Lauri Ojansivu 32f896f19d - [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.

Closes #2157,
closes #1279
2019-02-02 20:52:09 +02:00
Lauri Ojansivu de9965213a - Fix lint errors.
Thanks to xet7 !
2019-02-01 21:26:04 +02:00
guillaume c2118f4830 Improve authentication 2019-02-01 19:00:44 +01:00
Lauri Ojansivu 6f0e0748e1 v2.13 2019-02-01 17:15:15 +02:00
Lauri Ojansivu 8e5fc13ba4 Update changelog with latest changes from bentiss. 2019-02-01 17:09:05 +02:00
Lauri Ojansivu 7a35099fb9 - When writing to minicard, press Shift-Enter on minicard to go to next line below,
to continue writing on same minicard 2nd line.

Thanks to bentiss!
2019-02-01 17:03:59 +02:00
Lauri Ojansivu d08bee6817 Merge branch 'bentiss-infinite-scrolling' into edge 2019-02-01 16:54:41 +02:00
Lauri Ojansivu 4fc96904d6 Merge branch 'infinite-scrolling' of https://github.com/bentiss/wekan into bentiss-infinite-scrolling 2019-02-01 16:05:46 +02:00
Benjamin Tissoires 66bc1f28dd Use infinite-scrolling on lists
This allows to reduce the loading time of a big board.

Note that there is an infinite scroll implementation in the mixins,
but this doesn't fit well as the cards in the list can have arbitrary
height.

The idea to rely on the visibility of a spinner is based on
http://www.meteorpedia.com/read/Infinite_Scrolling
2019-02-01 14:58:02 +01:00
Benjamin Tissoires 30d082e709 Use infinite-scrolling on lists
This allows to reduce the loading time of a big board.

Note that there is an infinite scroll implementation in the mixins,
but this doesn't fit well as the cards in the list can have arbitrary
height.

The idea to rely on the visibility of a spinner is based on
http://www.meteorpedia.com/read/Infinite_Scrolling
2019-02-01 13:53:45 +01:00
Lauri Ojansivu 1b11123797 v2.12 2019-01-31 19:32:27 +02:00
Lauri Ojansivu 654c2add0d - [Bumped the salleman oidc packages versions to include an upstream bug fix](https://github.com/wekan/wekan/commit/361faa6646556de68ad78dc90d9eb9f78956ce0f).
Thanks to danpatdav !
2019-01-31 19:19:47 +02:00
Lauri Ojansivu 6d179d6d3d Merge pull request #2149 from danpatdav/salleman-1.0.10
Bumped the salleman oidc packages versions to include an upstream bug…
2019-01-31 19:10:03 +02:00
Daniel Davis 361faa6646 Bumped the salleman oidc packages versions to include an upstream bug fix 2019-01-31 11:45:55 -05:00
Lauri Ojansivu 7fc22ba0b7 v2.11 2019-01-31 14:27:36 +02:00
Lauri Ojansivu 9c82e6ab68 Update translations. 2019-01-31 14:23:57 +02:00
Lauri Ojansivu 78c18d4ffe Update changelog. 2019-01-31 14:23:23 +02:00
Lauri Ojansivu 978dafc62b - Fix: Bug: Not logged in public board page has calendar.
Thanks to xet7 !

Closes #2061
2019-01-31 14:19:14 +02:00
Lauri Ojansivu 8919d8fb7d Fix typo. 2019-01-30 18:52:14 +02:00
Lauri Ojansivu cdb7dd9175 Fix typo. 2019-01-30 18:49:38 +02:00
83 changed files with 1279 additions and 494 deletions

No files matched your search

+1 -1
View File
@@ -6,7 +6,7 @@
"browser": true
},
"parserOptions": {
"ecmaVersion": 6,
"ecmaVersion": 2017,
"sourceType": "module",
"ecmaFeatures": {
"experimentalObjectRestSpread": true
+1
View File
@@ -90,3 +90,4 @@ wekan:wekan-ldap
wekan:accounts-cas
wekan-scrollbar
mquandalle:perfect-scrollbar
mdg:meteor-apm-agent
+3 -2
View File
@@ -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
@@ -143,8 +144,8 @@ reload@1.1.11
retry@1.0.9
routepolicy@1.0.12
rzymek:fullcalendar@3.8.0
salleman:accounts-oidc@1.0.9
salleman:oidc@1.0.9
salleman:accounts-oidc@1.0.10
salleman:oidc@1.0.12
service-configuration@1.0.11
session@1.1.7
sha@1.0.9
+168 -2
View File
@@ -1,13 +1,179 @@
# v2.23 2019-02-17 Wekan relase
This release fixes the following bugs:
- [Fix authentication dropdown](https://github.com/wekan/wekan/pull/2191).
Thanks to Akuket.
Thanks to above GitHub users for their contributions, and translators for their translations.
# 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:
- [Use infinite-scrolling on lists](https://github.com/wekan/wekan/pull/2144).
This allows to reduce the loading time of a big board.
Note that there is an infinite scroll implementation in the mixins,
but this doesn't fit well as the cards in the list can have arbitrary
height.
The idea to rely on the visibility of a spinner is based on
http://www.meteorpedia.com/read/Infinite_Scrolling
- [When writing to minicard, press Shift-Enter on minicard to go to next line
below](https://github.com/wekan/wekan/commit/7a35099fb9778d5f3656a57c74af426cfb20fba3),
to continue writing on same minicard 2nd line.
Thanks to GitHub user bentiss for contributions.
# v2.12 2019-01-31 Wekan release
This release fixes the following bugs:
- [Bumped the salleman oidc packages versions to include an upstream bug fix](https://github.com/wekan/wekan/commit/361faa6646556de68ad78dc90d9eb9f78956ce0f).
Thanks to GitHub user danpatdav for contributions.
# v2.11 2019-01-31 Wekan release
This release fixes the following bugs:
- [Fix: Bug: Not logged in public board page has calendar](https://github.com/wekan/wekan/issues/2061). Thanks to xet7.
Thanks to above GitHub users and translators for contributions.
# v2.10 2019-01-30 Wekan release
This release adds the following new features:
- Translations: Add Macedonian. [Copied Bulgarian to Macedonian](https://github.com/wekan/wekan/commit/6e4a6515e00fe68b8615d850cfb3cb290418e176)
so that required changes will be faster to add. Thanks to translators and therampagerado.
so that required changes will be faster to add. Thanks to translators and therampagerado;
and fixes the following bugs:
- Revert [Sandstorm API changes](https://github.com/wekan/wekan/commit/be03a191c4321c2f80116c0ee1ae6c826d882535
- Revert [Sandstorm API changes](https://github.com/wekan/wekan/commit/be03a191c4321c2f80116c0ee1ae6c826d882535)
that were done at [Wekan v2.05](https://github.com/wekan/wekan/blob/devel/CHANGELOG.md#v205-2019-01-27-wekan-release)
to fix #2143. Thanks to pantraining and xet7.
+14
View File
@@ -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="" \
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v2.10.0"
appVersion: "v2.23.0"
files:
userUploads:
- README.md
+5 -4
View File
@@ -29,7 +29,8 @@ template(name="boardBody")
+calendarView
template(name="calendarView")
.calendar-view.swimlane
if currentCard
+cardDetails(currentCard)
+fullcalendar(calendarOptions)
if isViewCalendar
.calendar-view.swimlane
if currentCard
+cardDetails(currentCard)
+fullcalendar(calendarOptions)
+78 -5
View File
@@ -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
@@ -134,7 +202,7 @@ BlazeComponent.extendComponent({
isViewCalendar() {
const currentUser = Meteor.user();
if (!currentUser) return true;
if (!currentUser) return false;
return (currentUser.profile.boardView === 'board-view-cal');
},
@@ -264,4 +332,9 @@ BlazeComponent.extendComponent({
},
};
},
isViewCalendar() {
const currentUser = Meteor.user();
if (!currentUser) return false;
return (currentUser.profile.boardView === 'board-view-cal');
},
}).register('calendarView');
+7
View File
@@ -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
@@ -211,6 +215,9 @@
max-height: 250px
overflow: hidden
.sk-spinner-list
margin-top: unset !important
list-header-color(background, color...)
border-bottom: 6px solid background
+11 -1
View File
@@ -4,7 +4,7 @@ template(name="listBody")
if cards.count
+inlinedForm(autoclose=false position="top")
+addCardForm(listId=_id position="top")
each (cards (idOrNull ../../_id))
each (cardsWithLimit (idOrNull ../../_id))
a.minicard-wrapper.js-minicard(href=absoluteUrl
class="{{#if cardIsSelected}}is-selected{{/if}}"
class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")
@@ -12,6 +12,16 @@ template(name="listBody")
.materialCheckBox.multi-selection-checkbox.js-toggle-multi-selection(
class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")
+minicard(this)
if (showSpinner (idOrNull ../../_id))
.sk-spinner.sk-spinner-wave.sk-spinner-list(
class=currentBoard.colorClass
id="showMoreResults")
.sk-rect1
.sk-rect2
.sk-rect3
.sk-rect4
.sk-rect5
if canSeeAddCard
+inlinedForm(autoclose=false position="bottom")
+addCardForm(listId=_id position="bottom")
+82 -1
View File
@@ -1,6 +1,34 @@
const subManager = new SubsManager();
const InfiniteScrollIter = 10;
BlazeComponent.extendComponent({
onCreated() {
// for infinite scrolling
this.cardlimit = new ReactiveVar(InfiniteScrollIter);
},
onRendered() {
const domElement = this.find('.js-perfect-scrollbar');
this.$(domElement).on('scroll', () => this.updateList(domElement));
$(window).on(`resize.${this.data().listId}`, () => this.updateList(domElement));
// we add a Mutation Observer to allow propagations of cardlimit
// when the spinner stays in the current view (infinite scrolling)
this.mutationObserver = new MutationObserver(() => this.updateList(domElement));
this.mutationObserver.observe(domElement, {
childList: true,
});
this.updateList(domElement);
},
onDestroyed() {
$(window).off(`resize.${this.data().listId}`);
this.mutationObserver.disconnect();
},
mixins() {
return [Mixins.PerfectScrollbar];
},
@@ -60,6 +88,13 @@ BlazeComponent.extendComponent({
type: 'cardType-card',
});
// if the displayed card count is less than the total cards in the list,
// we need to increment the displayed card count to prevent the spinner
// to appear
const cardCount = this.data().cards(this.idOrNull(swimlaneId)).count();
if (this.cardlimit.get() < cardCount) {
this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter);
}
// In case the filter is active we need to add the newly inserted card in
// the list of exceptions -- cards that are not filtered. Otherwise the
@@ -119,6 +154,52 @@ BlazeComponent.extendComponent({
return undefined;
},
cardsWithLimit(swimlaneId) {
const limit = this.cardlimit.get();
const selector = {
listId: this.currentData()._id,
archived: false,
};
if (swimlaneId)
selector.swimlaneId = swimlaneId;
return Cards.find(Filter.mongoSelector(selector), {
sort: ['sort'],
limit,
});
},
spinnerInView(container) {
const parentViewHeight = container.clientHeight;
const bottomViewPosition = container.scrollTop + parentViewHeight;
const spinner = this.find('.sk-spinner-list');
const threshold = spinner.offsetTop;
return bottomViewPosition > threshold;
},
showSpinner(swimlaneId) {
const list = Template.currentData();
return list.cards(swimlaneId).count() > this.cardlimit.get();
},
updateList(container) {
// first, if the spinner is not rendered, we have reached the end of
// the list of cards, so skip and disable firing the events
const target = this.find('.sk-spinner-list');
if (!target) {
this.$(container).off('scroll');
$(window).off(`resize.${this.data().listId}`);
return;
}
if (this.spinnerInView(container)) {
this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter);
Ps.update(container);
}
},
canSeeAddCard() {
return !this.reachedWipLimit() && Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
@@ -179,7 +260,7 @@ BlazeComponent.extendComponent({
pressKey(evt) {
// Pressing Enter should submit the card
if (evt.keyCode === 13) {
if (evt.keyCode === 13 && !evt.shiftKey) {
evt.preventDefault();
const $form = $(evt.currentTarget).closest('form');
// XXX For some reason $form.submit() does not work (it's probably a bug
+2 -4
View File
@@ -23,10 +23,8 @@ template(name="userFormsLayout")
br
section.auth-dialog
+Template.dynamic(template=content)
+connectionMethod
if isCas
.at-form
button#cas(class='at-btn submit' type='submit') {{casSignInLabel}}
if currentSetting.displayAuthenticationMethod
+connectionMethod(authenticationMethod=currentSetting.defaultAuthenticationMethod)
div.at-form-lang
select.select-lang.js-userform-set-language
each languages
+72 -60
View File
@@ -20,13 +20,19 @@ const validator = {
},
};
Template.userFormsLayout.onCreated(() => {
Meteor.subscribe('setting');
Template.userFormsLayout.onCreated(function() {
const instance = this;
instance.currentSetting = new ReactiveVar();
Meteor.subscribe('setting', {
onReady() {
instance.currentSetting.set(Settings.findOne());
return this.stop();
},
});
});
Template.userFormsLayout.onRendered(() => {
AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator);
const i18nTag = navigator.language;
@@ -37,12 +43,10 @@ Template.userFormsLayout.onRendered(() => {
});
Template.userFormsLayout.helpers({
currentSetting() {
return Settings.findOne();
return Template.instance().currentSetting.get();
},
afterBodyStart() {
return currentSetting.customHTMLafterBodyStart;
},
@@ -75,17 +79,6 @@ Template.userFormsLayout.helpers({
const curLang = T9n.getLanguage() || 'en';
return t9nTag === curLang;
},
/*
isCas() {
return Meteor.settings.public &&
Meteor.settings.public.cas &&
Meteor.settings.public.cas.loginUrl;
},
casSignInLabel() {
return TAPi18n.__('casSignIn', {}, T9n.getLanguage() || 'en');
},
*/
});
Template.userFormsLayout.events({
@@ -94,49 +87,9 @@ Template.userFormsLayout.events({
T9n.setLanguage(i18nTagToT9n(i18nTag));
evt.preventDefault();
},
'click button#cas'() {
Meteor.loginWithCas(function() {
if (FlowRouter.getRouteName() === 'atSignIn') {
FlowRouter.go('/');
}
});
},
'click #at-btn'(event) {
/* All authentication method can be managed/called here.
!! DON'T FORGET to correctly fill the fields of the user during its creation if necessary authenticationMethod : String !!
*/
const authenticationMethodSelected = $('.select-authentication').val();
// Local account
if (authenticationMethodSelected === 'password') {
return;
}
// Stop submit #at-pwd-form
event.preventDefault();
event.stopImmediatePropagation();
const email = $('#at-field-username_and_email').val();
const password = $('#at-field-password').val();
// Ldap account
if (authenticationMethodSelected === 'ldap') {
// Check if the user can use the ldap connection
Meteor.subscribe('user-authenticationMethod', email, {
onReady() {
const user = Users.findOne();
if (user === undefined || user.authenticationMethod === 'ldap') {
// Use the ldap connection package
Meteor.loginWithLDAP(email, password, function(error) {
if (!error) {
// Connection
return FlowRouter.go('/');
}
return error;
});
}
return this.stop();
},
});
'click #at-btn'(event, instance) {
if (FlowRouter.getRouteName() === 'atSignIn') {
authentication(event, instance);
}
},
});
@@ -146,3 +99,62 @@ Template.defaultLayout.events({
Modal.close();
},
});
async function authentication(event, instance) {
const match = $('#at-field-username_and_email').val();
const password = $('#at-field-password').val();
if (!match || !password) return;
const result = await getAuthenticationMethod(instance.currentSetting.get(), match);
if (result === 'password') return;
// Stop submit #at-pwd-form
event.preventDefault();
event.stopImmediatePropagation();
switch (result) {
case 'ldap':
Meteor.loginWithLDAP(match, password, function() {
FlowRouter.go('/');
});
break;
case 'cas':
Meteor.loginWithCas(function() {
FlowRouter.go('/');
});
break;
default:
break;
}
}
function getAuthenticationMethod({displayAuthenticationMethod, defaultAuthenticationMethod}, match) {
if (displayAuthenticationMethod) {
return $('.select-authentication').val();
}
return getUserAuthenticationMethod(defaultAuthenticationMethod, match);
}
function getUserAuthenticationMethod(defaultAuthenticationMethod, match) {
return new Promise((resolve) => {
try {
Meteor.subscribe('user-authenticationMethod', match, {
onReady() {
const user = Users.findOne();
const authenticationMethod = user
? user.authenticationMethod
: defaultAuthenticationMethod;
resolve(authenticationMethod);
},
});
} catch(error) {
resolve(defaultAuthenticationMethod);
}
});
}
@@ -2,5 +2,8 @@ template(name='connectionMethod')
div.at-form-authentication
label {{_ 'authentication-method'}}
select.select-authentication
each authentications
option(value="{{value}}") {{_ value}}
each authentications
if isSelected value
option(value="{{value}}" selected) {{_ value}}
else
option(value="{{value}}") {{_ value}}
@@ -31,4 +31,7 @@ Template.connectionMethod.helpers({
authentications() {
return Template.instance().authenticationMethods.get();
},
isSelected(match) {
return Template.instance().data.authenticationMethod === match;
},
});
@@ -141,6 +141,16 @@ template(name='layoutSettings')
span {{_ 'yes'}}
input.form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
span {{_ 'no'}}
li.layout-form
.title {{_ 'display-authentication-method'}}
.form-group.flex
input.form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="true" checked="{{#if currentSetting.displayAuthenticationMethod}}checked{{/if}}")
span {{_ 'yes'}}
input.form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="false" checked="{{#unless currentSetting.displayAuthenticationMethod}}checked{{/unless}}")
span {{_ 'no'}}
li.layout-form
.title {{_ 'default-authentication-method'}}
+selectAuthenticationMethod(authenticationMethod=currentSetting.defaultAuthenticationMethod)
li.layout-form
.title {{_ 'custom-product-name'}}
.form-group
@@ -153,3 +163,12 @@ template(name='layoutSettings')
textarea#customHTMLbeforeBodyEnd.form-control= currentSetting.customHTMLbeforeBodyEnd
li
button.js-save-layout.primary {{_ 'save'}}
template(name='selectAuthenticationMethod')
select#defaultAuthenticationMethod
each authentications
if isSelected value
option(value="{{value}}" selected) {{_ value}}
else
option(value="{{value}}") {{_ value}}
+35 -5
View File
@@ -62,6 +62,9 @@ BlazeComponent.extendComponent({
toggleHideLogo() {
$('#hide-logo').toggleClass('is-checked');
},
toggleDisplayAuthenticationMethod() {
$('#display-authentication-method').toggleClass('is-checked');
},
switchMenu(event) {
const target = $(event.target);
if (!target.hasClass('active')) {
@@ -140,17 +143,20 @@ BlazeComponent.extendComponent({
const productName = $('#product-name').val().trim();
const hideLogoChange = ($('input[name=hideLogo]:checked').val() === 'true');
const displayAuthenticationMethod = ($('input[name=displayAuthenticationMethod]:checked').val() === 'true');
const defaultAuthenticationMethod = $('#defaultAuthenticationMethod').val();
const customHTMLafterBodyStart = $('#customHTMLafterBodyStart').val().trim();
const customHTMLbeforeBodyEnd = $('#customHTMLbeforeBodyEnd').val().trim();
try {
Settings.update(Settings.findOne()._id, {
$set: {
productName,
hideLogo: hideLogoChange,
customHTMLafterBodyStart,
customHTMLbeforeBodyEnd,
displayAuthenticationMethod,
defaultAuthenticationMethod,
},
});
} catch (e) {
@@ -165,17 +171,14 @@ BlazeComponent.extendComponent({
sendSMTPTestEmail() {
Meteor.call('sendSMTPTestEmail', (err, ret) => {
if (!err && ret) { /* eslint-disable no-console */
if (!err && ret) {
const message = `${TAPi18n.__(ret.message)}: ${ret.email}`;
console.log(message);
alert(message);
} else {
const reason = err.reason || '';
const message = `${TAPi18n.__(err.error)}\n${reason}`;
console.log(message, err);
alert(message);
}
/* eslint-enable no-console */
});
},
@@ -190,6 +193,7 @@ BlazeComponent.extendComponent({
'click button.js-send-smtp-test-email': this.sendSMTPTestEmail,
'click a.js-toggle-hide-logo': this.toggleHideLogo,
'click button.js-save-layout': this.saveLayout,
'click a.js-toggle-display-authentication-method': this.toggleDisplayAuthenticationMethod,
}];
},
}).register('setting');
@@ -262,3 +266,29 @@ BlazeComponent.extendComponent({
}];
},
}).register('announcementSettings');
Template.selectAuthenticationMethod.onCreated(function() {
this.authenticationMethods = new ReactiveVar([]);
Meteor.call('getAuthenticationsEnabled', (_, result) => {
if (result) {
// TODO : add a management of different languages
// (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')})
this.authenticationMethods.set([
{value: 'password'},
// Gets only the authentication methods availables
...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})),
]);
}
});
});
Template.selectAuthenticationMethod.helpers({
authentications() {
return Template.instance().authenticationMethods.get();
},
isSelected(match) {
return Template.instance().data.authenticationMethod === match;
},
});
+11 -7
View File
@@ -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) {
@@ -53,6 +53,9 @@
.list-group
height: 100%
.moving-swimlane
display: none
swimlane-color(background, color...)
background: background !important
if color
+75 -35
View File
@@ -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
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+6 -4
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+11 -9
View File
@@ -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": "שיטת אימות כבררת מחדל"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+56 -54
View File
@@ -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"
}
+10 -8
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+4 -2
View File
@@ -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": "Способ авторизации по умолчанию"
}
+3 -1
View File
@@ -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"
}
+53 -51
View File
@@ -78,20 +78,20 @@
"and-n-other-card": "Och __count__ annat kort",
"and-n-other-card_plural": "Och __count__ andra kort",
"apply": "Tillämpa",
"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": "Läser in, vänligen vänta. Uppdatering av sidan kommer att orsaka förlust av data. Om inläsningen inte fungerar, kontrollera att servern inte har stoppats.",
"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",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Arkivera",
"archived-boards": "Boards in Archive",
"archive-selection": "Flytta markerade till Arkiv",
"archiveBoardPopup-title": "Flytta Anslagstavla till Arkiv?",
"archived-items": "Arkiv",
"archived-boards": "Anslagstavlor i Arkiv",
"restore-board": "Återställ anslagstavla",
"no-archived-boards": "No Boards in Archive.",
"archives": "Arkivera",
"no-archived-boards": "Inga anslagstavlor i Arkiv.",
"archives": "Arkiv",
"assign-member": "Tilldela medlem",
"attached": "bifogad",
"attachment": "Bilaga",
@@ -118,12 +118,12 @@
"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.",
"card-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsflöde och du kommer inte att kunna öppna kortet igen. Det går inte att ångra.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "Du kan flytta ett kort för att Arkiv för att ta bort det från anslagstavlan och bevara aktiviteten.",
"card-due": "Förfaller",
"card-due-on": "Förfaller på",
"card-spent": "Spenderad tid",
@@ -166,13 +166,13 @@
"clipboard": "Urklipp eller dra och släpp",
"close": "Stäng",
"close-board": "Stäng anslagstavla",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"close-board-pop": "Du kommer att kunna återställa anslagstavlan genom att klicka på knappen \"Arkiv\" från hemrubriken.",
"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",
@@ -299,20 +299,20 @@
"import-board": "importera anslagstavla",
"import-board-c": "Importera anslagstavla",
"import-board-title-trello": "Importera anslagstavla från Trello",
"import-board-title-wekan": "Import board from previous export",
"import-board-title-wekan": "Importera anslagstavla från tidigare 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-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-wekan": "På din anslagstavla, gå till \"Meny\", sedan \"Exportera anslagstavla\" och kopiera texten i den hämtade filen.",
"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.",
"import-json-placeholder": "Klistra in giltigt JSON data här",
"import-map-members": "Kartlägg medlemmar",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-members-map": "Din importerade anslagstavla har några medlemmar. Vänligen kartlägg medlemmarna du vill importera till dina användare",
"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,11 +331,11 @@
"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-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-archive-cards": "Flytta alla kort i den här listan till Arkiv",
"list-archive-cards-pop": "Detta kommer att ta bort alla kort i denna lista från anslagstavlan. För att visa kort i Arkiv och få dem tillbaka till anslagstavlan, klicka på \"Meny\" > \"Arkiv\".",
"list-move-cards": "Flytta alla kort i denna lista",
"list-select-cards": "Välj alla kort i denna lista",
"set-color-list": "Set Color",
"set-color-list": "Ange färg",
"listActionPopup-title": "Liståtgärder",
"swimlaneActionPopup-title": "Simbana-åtgärder",
"swimlaneAddPopup-title": "Add a Swimlane below",
@@ -343,7 +343,7 @@
"listMorePopup-title": "Mera",
"link-list": "Länk till den här listan",
"list-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsmatningen och du kommer inte att kunna återställa listan. Det går inte att ångra.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "Du kan flytta en lista till Arkiv för att ta bort den från anslagstavlan och bevara aktiviteten.",
"lists": "Listor",
"swimlanes": "Simbanor ",
"log-out": "Logga ut",
@@ -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,30 +559,30 @@
"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",
"set-filter": "Ställ in 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",
"r-list-name": "list name",
"r-list-name": "listnamn",
"r-when-a-member": "När en medlem är",
"r-when-the-member": "När medlemmen",
"r-name": "namn",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-when-a-attach": "När en bilaga",
"r-when-a-checklist": "När en checklista är",
"r-when-the-checklist": "När checklistan",
"r-completed": "Avslutad",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
@@ -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": "Visa autentiseringsmetod",
"default-authentication-method": "Standard autentiseringsmetod"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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"
}
+3 -1
View File
@@ -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": "缺省认证方式"
}
+33 -31
View File
@@ -147,8 +147,8 @@
"cards-count": "卡片",
"casSignIn": "以 CAS 登入",
"cardType-card": "卡片",
"cardType-linkedCard": "Linked Card",
"cardType-linkedBoard": "Linked Board",
"cardType-linkedCard": "已連結卡片",
"cardType-linkedBoard": "已連結看板",
"change": "變更",
"change-avatar": "更換大頭貼",
"change-password": "變更密碼",
@@ -161,50 +161,50 @@
"changeSettingsPopup-title": "更改設定",
"subtasks": "子任務",
"checklists": "待辦清單",
"click-to-star": "點此來標記該看板",
"click-to-unstar": "點此來去除該看板的標記",
"click-to-star": "點擊以添加標記於此看板。",
"click-to-unstar": "點擊以移除標記於此看板。",
"clipboard": "剪貼簿貼上或者拖曳檔案",
"close": "關閉",
"close-board": "關閉看板",
"close-board-pop": "您可以通過點擊主頁眉中的「封存」按鈕來恢復看板。",
"color-black": "黑色",
"color-blue": "藍色",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-crimson": "艷紅",
"color-darkgreen": "暗綠",
"color-gold": "金色",
"color-gray": "灰色",
"color-green": "綠色",
"color-indigo": "indigo",
"color-indigo": "紫藍",
"color-lime": "綠黃",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-magenta": "洋紅",
"color-mistyrose": "玫瑰粉",
"color-navy": "藏青",
"color-orange": "橙色",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-paleturquoise": "淡藍綠",
"color-peachpuff": "桃色",
"color-pink": "粉紅",
"color-plum": "plum",
"color-plum": "梅色",
"color-purple": "紫色",
"color-red": "紅色",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-saddlebrown": "馬鞍棕",
"color-silver": "銀色",
"color-sky": "天藍",
"color-slateblue": "slateblue",
"color-white": "white",
"color-slateblue": "青藍",
"color-white": "白色",
"color-yellow": "黃色",
"unset-color": "Unset",
"unset-color": "未設置",
"comment": "評論",
"comment-placeholder": "撰寫評論",
"comment-only": "只能發表評論",
"comment-only-desc": "只能在卡片上發表評論",
"no-comments": "沒有評論",
"no-comments-desc": "Can not see comments and activities.",
"no-comments-desc": "無法檢視評論和活動。",
"computer": "從本機上傳",
"confirm-subtask-delete-dialog": "你確定要刪除子任務嗎?",
"confirm-checklist-delete-dialog": "你確定要刪除待辦清單嗎?",
"copy-card-link-to-clipboard": "將卡片連結複製到剪貼簿",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"linkCardPopup-title": "連結卡片",
"searchCardPopup-title": "搜尋卡片",
"copyCardPopup-title": "複製卡片",
"copyChecklistToManyCardsPopup-title": "複製待辦清單的樣板到多個卡片",
"copyChecklistToManyCardsPopup-instructions": "使用此 JSON 格式來表示目標卡片的標題和描述",
@@ -216,14 +216,14 @@
"createCustomField": "建立欄位",
"createCustomFieldPopup-title": "建立欄位",
"current": "目前",
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
"custom-field-checkbox": "Checkbox",
"custom-field-delete-pop": "此操作將會從所有卡片中移除自訂欄位以及銷毀歷史紀錄,並且無法撤消。",
"custom-field-checkbox": "複選框",
"custom-field-date": "日期",
"custom-field-dropdown": "Dropdown List",
"custom-field-dropdown-none": "(none)",
"custom-field-dropdown-options": "下拉式選單",
"custom-field-dropdown": "下拉式選單",
"custom-field-dropdown-none": "(無)",
"custom-field-dropdown-options": "清單選項",
"custom-field-dropdown-options-placeholder": "按下 Enter 新增更多選項",
"custom-field-dropdown-unknown": "(unknown)",
"custom-field-dropdown-unknown": "(未知)",
"custom-field-number": "數字",
"custom-field-text": "文字",
"custom-fields": "自訂欄位",
@@ -255,7 +255,7 @@
"email-enrollAccount-subject": "您在 __siteName__ 的帳號已經建立",
"email-enrollAccount-text": "親愛的 __user__,\n\n點選下面的連結,即刻開始使用這項服務。\n\n__url__\n\n謝謝。",
"email-fail": "郵件寄送失敗",
"email-fail-text": "Error trying to send email",
"email-fail-text": "嘗試發送郵件時出現錯誤",
"email-invalid": "電子郵件地址錯誤",
"email-invite": "寄送郵件邀請",
"email-invite-subject": "__inviter__ 向您發出邀請",
@@ -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"
}
+1 -1
View File
@@ -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 });
}
+10 -1
View File
@@ -40,6 +40,14 @@ Settings.attachSchema(new SimpleSchema({
type: String,
optional: true,
},
displayAuthenticationMethod: {
type: Boolean,
optional: true,
},
defaultAuthenticationMethod: {
type: String,
optional: false,
},
hideLogo: {
type: Boolean,
optional: true,
@@ -85,7 +93,8 @@ if (Meteor.isServer) {
const from = `Boards Support <support@${domain}>`;
const defaultSetting = {disableRegistration: false, mailServer: {
username: '', password: '', host: '', port: '', enableTLS: false, from,
}, createdAt: now, modifiedAt: now};
}, createdAt: now, modifiedAt: now, displayAuthenticationMethod: true,
defaultAuthenticationMethod: 'password'};
Settings.insert(defaultSetting);
}
const newSetting = Settings.findOne();
+1 -1
View File
@@ -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
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v2.10.0",
"version": "v2.23.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+94 -45
View File
@@ -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
+2 -2
View File
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
appVersion = 212,
appVersion = 225,
# Increment this for every release.
appMarketingVersion = (defaultText = "2.10.0~2019-01-30"),
appMarketingVersion = (defaultText = "2.23.0~2019-02-17"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
+2 -2
View File
@@ -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'],
},
}
);
+24
View File
@@ -398,3 +398,27 @@ Migrations.add('add-custom-html-before-body-end', () => {
},
}, noValidateMulti);
});
Migrations.add('add-displayAuthenticationMethod', () => {
Settings.update({
displayAuthenticationMethod: {
$exists: false,
},
}, {
$set: {
displayAuthenticationMethod: true,
},
}, noValidateMulti);
});
Migrations.add('add-defaultAuthenticationMethod', () => {
Settings.update({
defaultAuthenticationMethod: {
$exists: false,
},
}, {
$set: {
defaultAuthenticationMethod: 'password',
},
}, noValidateMulti);
});
+11 -1
View File
@@ -1,5 +1,15 @@
Meteor.publish('setting', () => {
return Settings.find({}, {fields:{disableRegistration: 1, productName: 1, hideLogo: 1, customHTMLafterBodyStart: 1, customHTMLbeforeBodyEnd: 1}});
return Settings.find({}, {
fields:{
disableRegistration: 1,
productName: 1,
hideLogo: 1,
customHTMLafterBodyStart: 1,
customHTMLbeforeBodyEnd: 1,
displayAuthenticationMethod: 1,
defaultAuthenticationMethod: 1,
},
});
});
Meteor.publish('mailServer', function () {
+33 -2
View File
@@ -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"
+1 -1
View File
@@ -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
+119 -82
View File
@@ -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 "\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 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 "\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"
+13 -1
View File
@@ -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 ..\..
cd ..\..
+72 -23
View File
@@ -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