Bläddra i källkod

Merge branch 'edge' into meteor-1.8

Lauri Ojansivu 6 år sedan
förälder
incheckning
0155c7d8ce

+ 30 - 5
CHANGELOG.md

@@ -1,16 +1,41 @@
+# v2.43 2019-03-08 Wekan release
+
+This release adds the following new features, thanks to xet7:
+
+- [Hide Subtask boards from All Boards](https://github.com/wekan/wekan/issues/1990).
+- [Order All Boards by Starred, Color, Title and Description](https://github.com/wekan/wekan/commit/856872815292590e0c4eff2848ea1b857a318dc4).
+- [HTTP header automatic login](https://github.com/wekan/wekan/commit/ff825d6123ecfd033ccb08ce97c11cefee676104)
+  for [3rd party authentication server method](https://github.com/wekan/wekan/issues/2019) like siteminder, and any webserver that
+  handles authentication and based on it adds HTTP headers to be used for login. Please test.
+
+and adds the following partial fix, thanks to andresmanelli:
+
+- [Add migration to fix circular references](https://github.com/wekan/wekan/commit/a338e937e508568d1f6a15c5464126d30ef69a7d).
+  This [runs only once](https://github.com/wekan/wekan/issues/2209#issuecomment-470445989),
+  so later there will be another fix to make it run every time.
+
+and reverts the following change of v2.42, because they did not fix anything, thanks to xet7:
+
+- [Revert: Tried to fix snap mongodb-control not starting database](https://github.com/wekan/wekan/commit/4055f451fdadfbfdef9a10be29a0eb6aed91182c).
+
+Thanks to above GitHub users for their contributions, and translators for their translations.  
+
 # v2.42 2019-03-07 Wekan release
 # v2.42 2019-03-07 Wekan release
 
 
-This release fixes the following bugs:
+This release tried to fix the following bugs:
 
 
-- [Fix snap mongodb-control not starting database](https://github.com/wekan/wekan/commit/2c5628b5fbcc25427021d0b22e74577a71149c21).
-  Thanks to xet7 and qurqar[m] at IRC #wekan.
+- [Tried to fix snap mongodb-control not starting database](https://github.com/wekan/wekan/commit/2c5628b5fbcc25427021d0b22e74577a71149c21).
+  Reverted in v2.43, because it did not fix anything.
+
+Thanks to xet7 and qurqar[m] at IRC #wekan.
 
 
 # v2.41 2019-03-07 Wekan release
 # v2.41 2019-03-07 Wekan release
 
 
-This release fixes the following bugs:
+This release tried to fix the following bugs:
 
 
-- [Fix: Card was selected as parent card (circular reference) and now board can be not opened anymore](https://github.com/wekan/wekan/issues/2202)
+- [Partial Fix: Card was selected as parent card (circular reference) and now board can be not opened anymore](https://github.com/wekan/wekan/issues/2202)
   with [Avoid setting same card as parentCard. Avoid listing templates board in copy/move/more menus](https://github.com/wekan/wekan/commit/745f39ed20169f56b99c0339f2043f8c4ed43873).
   with [Avoid setting same card as parentCard. Avoid listing templates board in copy/move/more menus](https://github.com/wekan/wekan/commit/745f39ed20169f56b99c0339f2043f8c4ed43873).
+  This does not fully work yet, it will be fixed later.
   Thanks to andresmanelli.
   Thanks to andresmanelli.
 
 
 Thanks to above GitHub users for their contributions, and translators for their translations.
 Thanks to above GitHub users for their contributions, and translators for their translations.

+ 8 - 0
Dockerfile

@@ -77,6 +77,10 @@ ARG LDAP_SYNC_GROUP_ROLES
 ARG LDAP_DEFAULT_DOMAIN
 ARG LDAP_DEFAULT_DOMAIN
 ARG LDAP_SYNC_ADMIN_STATUS
 ARG LDAP_SYNC_ADMIN_STATUS
 ARG LDAP_SYNC_ADMIN_GROUPS
 ARG LDAP_SYNC_ADMIN_GROUPS
+ARG HEADER_LOGIN_ID
+ARG HEADER_LOGIN_FIRSTNAME
+ARG HEADER_LOGIN_LASTNAME
+ARG HEADER_LOGIN_EMAIL
 ARG LOGOUT_WITH_TIMER
 ARG LOGOUT_WITH_TIMER
 ARG LOGOUT_IN
 ARG LOGOUT_IN
 ARG LOGOUT_ON_HOURS
 ARG LOGOUT_ON_HOURS
@@ -163,6 +167,10 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
     LDAP_DEFAULT_DOMAIN="" \
     LDAP_DEFAULT_DOMAIN="" \
     LDAP_SYNC_ADMIN_STATUS="" \
     LDAP_SYNC_ADMIN_STATUS="" \
     LDAP_SYNC_ADMIN_GROUPS="" \
     LDAP_SYNC_ADMIN_GROUPS="" \
+    HEADER_LOGIN_ID="" \
+    HEADER_LOGIN_FIRSTNAME="" \
+    HEADER_LOGIN_LASTNAME="" \
+    HEADER_LOGIN_EMAIL="" \
     LOGOUT_WITH_TIMER=false \
     LOGOUT_WITH_TIMER=false \
     LOGOUT_IN="" \
     LOGOUT_IN="" \
     LOGOUT_ON_HOURS="" \
     LOGOUT_ON_HOURS="" \

+ 1 - 1
Stackerfile.yml

@@ -1,5 +1,5 @@
 appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
 appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
-appVersion: "v2.42.0"
+appVersion: "v2.43.0"
 files:
 files:
   userUploads:
   userUploads:
     - README.md
     - README.md

+ 2 - 1
client/components/boards/boardsList.js

@@ -25,8 +25,9 @@ BlazeComponent.extendComponent({
       archived: false,
       archived: false,
       'members.userId': Meteor.userId(),
       'members.userId': Meteor.userId(),
       type: 'board',
       type: 'board',
+      subtasksDefaultListId: null,
     }, {
     }, {
-      sort: ['title'],
+      sort: { stars: -1, color: 1, title: 1, description: 1 },
     });
     });
   },
   },
 
 

+ 14 - 5
client/components/main/layouts.js

@@ -101,8 +101,14 @@ Template.defaultLayout.events({
 });
 });
 
 
 async function authentication(event, instance) {
 async function authentication(event, instance) {
-  const match = $('#at-field-username_and_email').val();
-  const password = $('#at-field-password').val();
+
+  // If header login id is set, use it for login.
+  // Header username = Email address
+  // Header password = Login ID
+  // Not user currently: req.headers[process.env.HEADER_LOGIN_FIRSTNAME]
+  //                and  req.headers[process.env.HEADER_LOGIN_LASTNAME]
+  const match = req.headers[process.env.HEADER_LOGIN_EMAIL] || $('#at-field-username_and_email').val();
+  const password = req.headers[process.env.HEADER_LOGIN_ID] || $('#at-field-password').val();
 
 
   if (!match || !password) return;
   if (!match || !password) return;
 
 
@@ -110,9 +116,12 @@ async function authentication(event, instance) {
 
 
   if (result === 'password') return;
   if (result === 'password') return;
 
 
-  // Stop submit #at-pwd-form
-  event.preventDefault();
-  event.stopImmediatePropagation();
+  // If header login id is not set, don't try to login automatically.
+  if (!process.env.HEADER_LOGIN_ID) {
+    // Stop submit #at-pwd-form
+    event.preventDefault();
+    event.stopImmediatePropagation();
+  }
 
 
   switch (result) {
   switch (result) {
   case 'ldap':
   case 'ldap':

+ 7 - 0
docker-compose.yml

@@ -508,6 +508,13 @@ services:
       # Comma separated list of admin group names to sync.
       # Comma separated list of admin group names to sync.
       #- LDAP_SYNC_ADMIN_GROUPS=group1,group2
       #- LDAP_SYNC_ADMIN_GROUPS=group1,group2
       #---------------------------------------------------------------------
       #---------------------------------------------------------------------
+      # Login to LDAP automatically with HTTP header.
+      # In below example for siteminder, at right side of = is header name.
+      #- HEADER_LOGIN_ID=BNPPUID
+      #- HEADER_LOGIN_FIRSTNAME=BNPPFIRSTNAME
+      #- HEADER_LOGIN_LASTNAME=BNPPLASTNAME
+      #- HEADER_LOGIN_EMAIL=BNPPEMAILADDRESS
+      #---------------------------------------------------------------------
       # ==== LOGOUT TIMER, probably does not work yet ====
       # ==== LOGOUT TIMER, probably does not work yet ====
       # LOGOUT_WITH_TIMER : Enables or not the option logout with timer
       # LOGOUT_WITH_TIMER : Enables or not the option logout with timer
       # example : LOGOUT_WITH_TIMER=true
       # example : LOGOUT_WITH_TIMER=true

+ 22 - 22
i18n/ru.i18n.json

@@ -1,37 +1,37 @@
 {
 {
     "accept": "Принять",
     "accept": "Принять",
     "act-activity-notify": "Уведомление о действиях участников",
     "act-activity-notify": "Уведомление о действиях участников",
-    "act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-    "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
+    "act-addAttachment": "прикрепил вложение __attachment__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-deleteAttachment": "удалил вложение __attachment__ из карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-addSubtask": "добавил подзадачу __subtask__ для карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-addLabel": "Добавлена метка __label__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-removeLabel": "Снята метка __label__ с карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-addChecklist": "добавил контрольный список __checklist__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-addChecklistItem": "добавил пункт __checklistItem__ в контрольный список __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-removeChecklist": "удалил контрольный список __checklist__ из карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-removeChecklistItem": "удалил пункт __checklistItem__ из контрольного списка __checkList__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-checkedItem": "отметил __checklistItem__ в контрольном списке __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-uncheckedItem": "снял __checklistItem__ в контрольном списке __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-completeChecklist": "завершил контрольный список __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-uncompleteChecklist": "вновь открыл контрольный список __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-addComment": "написал в карточке __card__: __comment__ в списке __list__ на дорожке __swimlane__ доски __board__",
     "act-createBoard": "создал доску __board__",
     "act-createBoard": "создал доску __board__",
-    "act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
-    "act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+    "act-createCard": "создал карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+    "act-createCustomField": "создал поле __customField__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__\n",
     "act-createList": "добавил список __list__ на доску __board__",
     "act-createList": "добавил список __list__ на доску __board__",
     "act-addBoardMember": "добавил участника __member__ на доску __board__",
     "act-addBoardMember": "добавил участника __member__ на доску __board__",
     "act-archivedBoard": "Доска __board__ перемещена в Архив",
     "act-archivedBoard": "Доска __board__ перемещена в Архив",
     "act-archivedCard": "Карточка __card__ из списка __list__ с дорожки __swimlane__ доски __board__ перемещена в Архив",
     "act-archivedCard": "Карточка __card__ из списка __list__ с дорожки __swimlane__ доски __board__ перемещена в Архив",
-    "act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
+    "act-archivedList": "Список __list__ на дорожке __swimlane__ доски __board__ перемещен в Архив",
     "act-archivedSwimlane": "Дорожка __swimlane__ на доске __board__ перемещена в Архив",
     "act-archivedSwimlane": "Дорожка __swimlane__ на доске __board__ перемещена в Архив",
     "act-importBoard": "импортировал доску __board__",
     "act-importBoard": "импортировал доску __board__",
-    "act-importCard": "imported card  __card__ to list __list__ at swimlane __swimlane__ at board __board__",
+    "act-importCard": "импортировал карточку __card__ в список __list__ на дорожку __swimlane__ доски __board__",
     "act-importList": "импортировал список __list__ на дорожку __swimlane__ доски __board__",
     "act-importList": "импортировал список __list__ на дорожку __swimlane__ доски __board__",
-    "act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+    "act-joinMember": "добавил участника __member__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
     "act-moveCard": "переместил карточку __card__ из списка __oldList__ с дорожки __oldSwimlane__ доски __oldBoard__ в список __list__ на дорожку __swimlane__ доски __board__",
     "act-moveCard": "переместил карточку __card__ из списка __oldList__ с дорожки __oldSwimlane__ доски __oldBoard__ в список __list__ на дорожку __swimlane__ доски __board__",
     "act-removeBoardMember": "удалил участника __member__ с доски __board__",
     "act-removeBoardMember": "удалил участника __member__ с доски __board__",
     "act-restoredCard": "восстановил карточку __card__ в список __list__ на дорожку __swimlane__ доски __board__",
     "act-restoredCard": "восстановил карточку __card__ в список __list__ на дорожку __swimlane__ доски __board__",
-    "act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+    "act-unjoinMember": "удалил участника __member__ из карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
     "act-withBoardTitle": "__board__",
     "act-withBoardTitle": "__board__",
     "act-withCardTitle": "[__board__] __card__",
     "act-withCardTitle": "[__board__] __card__",
     "actions": "Действия",
     "actions": "Действия",
@@ -56,14 +56,14 @@
     "activity-unchecked-item": "снял %s в контрольном списке %s в %s",
     "activity-unchecked-item": "снял %s в контрольном списке %s в %s",
     "activity-checklist-added": "добавил контрольный список в %s",
     "activity-checklist-added": "добавил контрольный список в %s",
     "activity-checklist-removed": "удалил контрольный список из %s",
     "activity-checklist-removed": "удалил контрольный список из %s",
-    "activity-checklist-completed": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+    "activity-checklist-completed": "завершил контрольный список __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
     "activity-checklist-uncompleted": "вновь открыл контрольный список %s в %s",
     "activity-checklist-uncompleted": "вновь открыл контрольный список %s в %s",
     "activity-checklist-item-added": "добавил пункт в контрольный список '%s' в карточке %s",
     "activity-checklist-item-added": "добавил пункт в контрольный список '%s' в карточке %s",
     "activity-checklist-item-removed": "удалил пункт из контрольного списка '%s' в карточке %s",
     "activity-checklist-item-removed": "удалил пункт из контрольного списка '%s' в карточке %s",
     "add": "Создать",
     "add": "Создать",
     "activity-checked-item-card": "отметил %s в контрольном списке %s",
     "activity-checked-item-card": "отметил %s в контрольном списке %s",
     "activity-unchecked-item-card": "снял %s в контрольном списке %s",
     "activity-unchecked-item-card": "снял %s в контрольном списке %s",
-    "activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+    "activity-checklist-completed-card": "завершил контрольный список __checklist__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
     "activity-checklist-uncompleted-card": "вновь открыл контрольный список %s",
     "activity-checklist-uncompleted-card": "вновь открыл контрольный список %s",
     "add-attachment": "Добавить вложение",
     "add-attachment": "Добавить вложение",
     "add-board": "Добавить доску",
     "add-board": "Добавить доску",

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "wekan",
   "name": "wekan",
-  "version": "v2.42.0",
+  "version": "v2.43.0",
   "description": "Open-Source kanban",
   "description": "Open-Source kanban",
   "private": true,
   "private": true,
   "scripts": {
   "scripts": {

+ 8 - 0
releases/virtualbox/start-wekan.sh

@@ -251,6 +251,14 @@
         #export LDAP_SYNC_ADMIN_STATUS=true
         #export LDAP_SYNC_ADMIN_STATUS=true
         # Comma separated list of admin group names.
         # Comma separated list of admin group names.
         #export LDAP_SYNC_ADMIN_GROUPS=group1,group2
         #export LDAP_SYNC_ADMIN_GROUPS=group1,group2
+        #---------------------------------------------------------------------
+        # Login to LDAP automatically with HTTP header.
+        # In below example for siteminder, at right side of = is header name.
+        #export HEADER_LOGIN_ID=BNPPUID
+        #export HEADER_LOGIN_FIRSTNAME=BNPPFIRSTNAME
+        #export HEADER_LOGIN_LASTNAME=BNPPLASTNAME
+        #export HEADER_LOGIN_EMAIL=BNPPEMAILADDRESS
+        #---------------------------------------------------------------------
         # LOGOUT_WITH_TIMER : Enables or not the option logout with timer
         # LOGOUT_WITH_TIMER : Enables or not the option logout with timer
         # example : LOGOUT_WITH_TIMER=true
         # example : LOGOUT_WITH_TIMER=true
         #export LOGOUT_WITH_TIMER=
         #export LOGOUT_WITH_TIMER=

+ 2 - 2
sandstorm-pkgdef.capnp

@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
     appTitle = (defaultText = "Wekan"),
     appTitle = (defaultText = "Wekan"),
     # The name of the app as it is displayed to the user.
     # The name of the app as it is displayed to the user.
 
 
-    appVersion = 244,
+    appVersion = 245,
     # Increment this for every release.
     # Increment this for every release.
 
 
-    appMarketingVersion = (defaultText = "2.42.0~2019-03-07"),
+    appMarketingVersion = (defaultText = "2.43.0~2019-03-08"),
     # Human-readable presentation of the app version.
     # Human-readable presentation of the app version.
 
 
     minUpgradableAppVersion = 0,
     minUpgradableAppVersion = 0,

+ 8 - 0
server/migrations.js

@@ -517,3 +517,11 @@ Migrations.add('add-templates', () => {
     });
     });
   });
   });
 });
 });
+
+Migrations.add('fix-circular-reference', () => {
+  Cards.find().forEach((card) => {
+    if (card.parentId === card._id) {
+      Cards.update(card._id, {$set: {parentId: ''}}, noValidateMulti);
+    }
+  });
+});

+ 17 - 1
snap-src/bin/config

@@ -3,7 +3,7 @@
 # All supported keys are defined here together with descriptions and default values
 # All supported keys are defined here together with descriptions and default values
 
 
 # list of supported keys
 # list of supported keys
-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 EMAIL_NOTIFICATION_TIMEOUT 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 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 LDAP_EMAIL_MATCH_ENABLE LDAP_EMAIL_MATCH_REQUIRE LDAP_EMAIL_MATCH_VERIFIED LDAP_EMAIL_FIELD LDAP_SYNC_ADMIN_STATUS LDAP_SYNC_ADMIN_GROUPS 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 EMAIL_NOTIFICATION_TIMEOUT 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 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 LDAP_EMAIL_MATCH_ENABLE LDAP_EMAIL_MATCH_REQUIRE LDAP_EMAIL_MATCH_VERIFIED LDAP_EMAIL_FIELD LDAP_SYNC_ADMIN_STATUS LDAP_SYNC_ADMIN_GROUPS HEADER_LOGIN_ID HEADER_LOGIN_FIRSTNAME HEADER_LOGIN_LASTNAME HEADER_LOGIN_EMAIL LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD"
 
 
 # default values
 # default values
 DESCRIPTION_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
 DESCRIPTION_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
@@ -326,6 +326,22 @@ DESCRIPTION_LDAP_DEFAULT_DOMAIN="The default domain of the ldap it is used to cr
 DEFAULT_LDAP_DEFAULT_DOMAIN=""
 DEFAULT_LDAP_DEFAULT_DOMAIN=""
 KEY_LDAP_DEFAULT_DOMAIN="ldap-default-domain"
 KEY_LDAP_DEFAULT_DOMAIN="ldap-default-domain"
 
 
+DESCRIPTION_HEADER_LOGIN_ID="Header login ID. Example for siteminder: BNPPUID"
+DEFAULT_HEADER_LOGIN_ID=""
+KEY_HEADER_LOGIN_ID="header-login-id"
+
+DESCRIPTION_HEADER_LOGIN_FIRSTNAME="Header login firstname. Example for siteminder: BNPPFIRSTNAME"
+DEFAULT_HEADER_LOGIN_FIRSTNAME="Header login firstname. Example for siteminder: BNPPFIRSTNAME"
+KEY_HEADER_LOGIN_FIRSTNAME="header-login-firstname"
+
+DESCRIPTION_HEADER_LOGIN_LASTNAME="Header login lastname. Example for siteminder: BNPPLASTNAME"
+DEFAULT_HEADER_LOGIN_LASTNAME="Header login firstname. Example for siteminder: BNPPLASTNAME"
+KEY_HEADER_LOGIN_LASTNAME="header-login-lastname"
+
+DESCRIPTION_HEADER_LOGIN_EMAIL="Header login email. Example for siteminder: BNPPEMAILADDRESS"
+DEFAULT_HEADER_LOGIN_EMAIL="Header login email. Example for siteminder: BNPPEMAILADDRESS"
+KEY_HEADER_LOGIN_EMAIL="header-login-email"
+
 DESCRIPTION_LOGOUT_WITH_TIMER="Enables or not the option logout with timer"
 DESCRIPTION_LOGOUT_WITH_TIMER="Enables or not the option logout with timer"
 DEFAULT_LOGOUT_WITH_TIMER="false"
 DEFAULT_LOGOUT_WITH_TIMER="false"
 KEY_LOGOUT_WITH_TIMER="logout-with-timer"
 KEY_LOGOUT_WITH_TIMER="logout-with-timer"

+ 1 - 1
snap-src/bin/mongodb-control

@@ -29,4 +29,4 @@ if [ "x" != "x${MONGODB_PORT}" ]; then
 fi
 fi
 echo "mongodb bind options: $BIND_OPTIONS"
 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

+ 7 - 0
snap-src/bin/wekan-help

@@ -307,6 +307,13 @@ echo -e "Logout with timer."
 echo -e "Enable or not the option that allows to disconnect an user after a given time:"
 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 "\n"
+echo -e "Login to LDAP automatically with HTTP header."
+echo -e "In below example for siteminder, at right side of = is header name."
+echo -e "\t$ snap set $SNAP_NAME header-login-id='BNPPUID'"
+echo -e "\t$ snap set $SNAP_NAME header-login-firstname='BNPPFIRSTNAME'"
+echo -e "\t$ snap set $SNAP_NAME header-login-lastname='BNPPLASTNAME'"
+echo -e "\t$ snap set $SNAP_NAME header-login-email='BNPPEMAILADDRESS'"
+echo -e "\n"
 echo -e "Logout in."
 echo -e "Logout in."
 echo -e "Logout in how many days:"
 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'"

+ 7 - 0
start-wekan.bat

@@ -254,6 +254,13 @@ REM SET LDAP_SYNC_ADMIN_STATUS=true
 REM # Comma separated list of admin group names to sync.
 REM # Comma separated list of admin group names to sync.
 REM SET LDAP_SYNC_ADMIN_GROUPS=group1,group2
 REM SET LDAP_SYNC_ADMIN_GROUPS=group1,group2
 
 
+REM # Login to LDAP automatically with HTTP header.
+REM # In below example for siteminder, at right side of = is header name.
+REM SET HEADER_LOGIN_ID=BNPPUID
+REM SET HEADER_LOGIN_FIRSTNAME=BNPPFIRSTNAME
+REM SET HEADER_LOGIN_LASTNAME=BNPPLASTNAME
+REM SET HEADER_LOGIN_EMAIL=BNPPEMAILADDRESS
+
 REM ------------------------------------------------
 REM ------------------------------------------------
 
 
 REM # LOGOUT_WITH_TIMER : Enables or not the option logout with timer
 REM # LOGOUT_WITH_TIMER : Enables or not the option logout with timer

+ 8 - 0
start-wekan.sh

@@ -269,6 +269,14 @@ function wekan_repo_check(){
       #export LDAP_SYNC_ADMIN_STATUS=true
       #export LDAP_SYNC_ADMIN_STATUS=true
       # Comma separated list of admin group names to sync.
       # Comma separated list of admin group names to sync.
       #export LDAP_SYNC_ADMIN_GROUPS=group1,group2
       #export LDAP_SYNC_ADMIN_GROUPS=group1,group2
+      #---------------------------------------------------------------------
+      # Login to LDAP automatically with HTTP header.
+      # In below example for siteminder, at right side of = is header name.
+      #export HEADER_LOGIN_ID=BNPPUID
+      #export HEADER_LOGIN_FIRSTNAME=BNPPFIRSTNAME
+      #export HEADER_LOGIN_LASTNAME=BNPPLASTNAME
+      #export HEADER_LOGIN_EMAIL=BNPPEMAILADDRESS
+      #---------------------------------------------------------------------
       # LOGOUT_WITH_TIMER : Enables or not the option logout with timer
       # LOGOUT_WITH_TIMER : Enables or not the option logout with timer
       # example : LOGOUT_WITH_TIMER=true
       # example : LOGOUT_WITH_TIMER=true
       #export LOGOUT_WITH_TIMER=
       #export LOGOUT_WITH_TIMER=