mirror of
https://github.com/wekan/wekan.git
synced 2025-04-22 04:57:07 -04:00
Merge branch 'master' of https://github.com/wekan/wekan
This commit is contained in:
commit
506cb696d3
93 changed files with 1671 additions and 107 deletions
|
@ -39,7 +39,7 @@ host = https://www.transifex.com
|
|||
# tap:i18n requires us to use `-` separator in the language identifiers whereas
|
||||
# Transifex uses a `_` separator, without an option to customize it on one side
|
||||
# or the other, so we need to do a Manual mapping.
|
||||
lang_map = ar_EG:ar-EG, bg_BG:bg, de_CH:de-CH, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
|
||||
lang_map = ar_EG:ar-EG, bg_BG:bg, de_CH:de-CH, en_IT:en-IT, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
|
||||
|
||||
[wekan.application]
|
||||
file_filter = i18n/<lang>.i18n.json
|
||||
|
|
41
CHANGELOG.md
41
CHANGELOG.md
|
@ -3,6 +3,47 @@
|
|||
Note: With Docker, please don't use latest tag. Only use release tags.
|
||||
See https://github.com/wekan/wekan/issues/3874
|
||||
|
||||
# Upcoming Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fixed Wekan JSON import fails](https://github.com/wekan/wekan/commit/0fa8fc8b506831a60649d100ce93c96f8f7b76f5).
|
||||
Thanks to BartoszBroda and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.40 2021-07-25 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fixed Delete of Planning Poker doesn't work](https://github.com/wekan/wekan/commit/18b6381d790848062752b211d48c84a2de268bd0).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.39 2021-07-24 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [LDAP AD Simple Auth](https://github.com/wekan/wekan/pull/3909).
|
||||
Thanks to indika-dev.
|
||||
- [LDAP AD Simple Auth: Added settings for all remaining Wekan Standalone (non-Sandstorm)
|
||||
platforms](https://github.com/wekan/wekan/commit/fe40f35d6d9b6293f3bdbf5bc0f3e8e708c59518)
|
||||
and Docs to https://github.com/wekan/wekan/wiki/LDAP-AD-Simple-Auth .
|
||||
Thanks to xet7.
|
||||
- [Convert Checklist Item to Card](https://github.com/wekan/wekan/pull/3910).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Organizations and Teams are taken into account when displaying board at
|
||||
`All Boards` page](https://github.com/wekan/wekan/pull/3912).
|
||||
Thanks to Emile840.
|
||||
|
||||
and adds the following new translations:
|
||||
|
||||
- [English (Italy)](https://github.com/wekan/wekan/commit/ae73029dda63db361925e378202e6f8c137cf5bd).
|
||||
Thanks to translators.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.38 2021-07-18 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
|
|
@ -64,6 +64,9 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
|
|||
LDAP_ENABLE=false \
|
||||
LDAP_PORT=389 \
|
||||
LDAP_HOST="" \
|
||||
LDAP_AD_SIMPLE_AUTH="" \
|
||||
LDAP_USER_AUTHENTICATION=false \
|
||||
LDAP_USER_AUTHENTICATION_FIELD=uid \
|
||||
LDAP_BASEDN="" \
|
||||
LDAP_LOGIN_FALLBACK=false \
|
||||
LDAP_RECONNECT=true \
|
||||
|
@ -81,8 +84,6 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
|
|||
LDAP_ENCRYPTION=false \
|
||||
LDAP_CA_CERT="" \
|
||||
LDAP_REJECT_UNAUTHORIZED=false \
|
||||
LDAP_USER_AUTHENTICATION=false \
|
||||
LDAP_USER_AUTHENTICATION_FIELD=uid \
|
||||
LDAP_USER_SEARCH_FILTER="" \
|
||||
LDAP_USER_SEARCH_SCOPE="" \
|
||||
LDAP_USER_SEARCH_FIELD="" \
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v5.38.0"
|
||||
appVersion: "v5.40.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
|
|
@ -87,16 +87,52 @@ BlazeComponent.extendComponent({
|
|||
|
||||
boards() {
|
||||
const query = {
|
||||
archived: false,
|
||||
//type: { $in: ['board','template-container'] },
|
||||
type: 'board',
|
||||
//archived: false,
|
||||
////type: { $in: ['board','template-container'] },
|
||||
//type: 'board',
|
||||
$and: [
|
||||
{ archived: false },
|
||||
{ type: 'board' },
|
||||
{ $or:[] }
|
||||
]
|
||||
};
|
||||
if (FlowRouter.getRouteName() === 'home')
|
||||
query['members.userId'] = Meteor.userId();
|
||||
if (FlowRouter.getRouteName() === 'home'){
|
||||
query.$and[2].$or.push({'members.userId': Meteor.userId()});
|
||||
|
||||
const currUser = Users.findOne(Meteor.userId());
|
||||
|
||||
// const currUser = Users.findOne(Meteor.userId(), {
|
||||
// fields: {
|
||||
// orgs: 1,
|
||||
// teams: 1,
|
||||
// },
|
||||
// });
|
||||
|
||||
let orgIdsUserBelongs = currUser.teams !== 'undefined' ? currUser.orgIdsUserBelongs() : '';
|
||||
if(orgIdsUserBelongs && orgIdsUserBelongs != ''){
|
||||
let orgsIds = orgIdsUserBelongs.split(',');
|
||||
// for(let i = 0; i < orgsIds.length; i++){
|
||||
// query.$and[2].$or.push({'orgs.orgId': orgsIds[i]});
|
||||
// }
|
||||
|
||||
//query.$and[2].$or.push({'orgs': {$elemMatch : {orgId: orgsIds[0]}}});
|
||||
query.$and[2].$or.push({'orgs.orgId': {$in : orgsIds}});
|
||||
}
|
||||
|
||||
let teamIdsUserBelongs = currUser.teams !== 'undefined' ? currUser.teamIdsUserBelongs() : '';
|
||||
if(teamIdsUserBelongs && teamIdsUserBelongs != ''){
|
||||
let teamsIds = teamIdsUserBelongs.split(',');
|
||||
// for(let i = 0; i < teamsIds.length; i++){
|
||||
// query.$or[2].$or.push({'teams.teamId': teamsIds[i]});
|
||||
// }
|
||||
//query.$and[2].$or.push({'teams': { $elemMatch : {teamId: teamsIds[0]}}});
|
||||
query.$and[2].$or.push({'teams.teamId': {$in : teamsIds}});
|
||||
}
|
||||
}
|
||||
else query.permission = 'public';
|
||||
|
||||
return Boards.find(query, {
|
||||
sort: { sort: 1 /* boards default sorting */ },
|
||||
//sort: { sort: 1 /* boards default sorting */ },
|
||||
});
|
||||
},
|
||||
isStarred() {
|
||||
|
|
|
@ -627,6 +627,7 @@ Template.cardDetailsActionsPopup.events({
|
|||
'click .js-spent-time': Popup.open('editCardSpentTime'),
|
||||
'click .js-move-card': Popup.open('moveCard'),
|
||||
'click .js-copy-card': Popup.open('copyCard'),
|
||||
'click .js-convert-checklist-item-to-card': Popup.open('convertChecklistItemToCard'),
|
||||
'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
|
||||
'click .js-set-card-color': Popup.open('setCardColor'),
|
||||
'click .js-move-card-to-top'(event) {
|
||||
|
@ -791,6 +792,34 @@ Template.copyCardPopup.events({
|
|||
},
|
||||
});
|
||||
|
||||
Template.convertChecklistItemToCardPopup.events({
|
||||
'click .js-done'() {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const lSelect = $('.js-select-lists')[0];
|
||||
const listId = lSelect.options[lSelect.selectedIndex].value;
|
||||
const slSelect = $('.js-select-swimlanes')[0];
|
||||
const swimlaneId = slSelect.options[slSelect.selectedIndex].value;
|
||||
const bSelect = $('.js-select-boards')[0];
|
||||
const boardId = bSelect.options[bSelect.selectedIndex].value;
|
||||
const textarea = $('#copy-card-title');
|
||||
const title = textarea.val().trim();
|
||||
|
||||
if (title) {
|
||||
const _id = Cards.insert({
|
||||
title: title,
|
||||
listId: listId,
|
||||
boardId: boardId,
|
||||
swimlaneId: swimlaneId,
|
||||
sort: 0,
|
||||
});
|
||||
Filter.addException(_id);
|
||||
|
||||
Popup.close();
|
||||
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Template.copyChecklistToManyCardsPopup.events({
|
||||
'click .js-done'() {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
|
@ -1297,7 +1326,6 @@ BlazeComponent.extendComponent({
|
|||
Popup.close();
|
||||
},
|
||||
'click .js-remove-poker': Popup.afterConfirm('deletePoker', (event) => {
|
||||
event.preventDefault();
|
||||
this.currentCard.unsetPoker();
|
||||
Popup.close();
|
||||
}),
|
||||
|
|
|
@ -80,6 +80,9 @@ template(name="editChecklistItemForm")
|
|||
span(title=createdAt) {{ moment createdAt }}
|
||||
if canModifyCard
|
||||
a.js-delete-checklist-item {{_ "delete"}}...
|
||||
a.js-convert-checklist-item-to-card
|
||||
i.fa.fa-copy
|
||||
| {{_ 'convertChecklistItemToCardPopup-title'}}
|
||||
|
||||
template(name="checklistItems")
|
||||
.checklist-items.js-checklist-items
|
||||
|
@ -110,3 +113,32 @@ template(name='checklistItemDetail')
|
|||
.item-title(class="{{#if item.isFinished }}is-checked{{/if}}")
|
||||
+viewer
|
||||
= item.title
|
||||
|
||||
template(name="convertChecklistItemToCardPopup")
|
||||
label(for='convert-checklist-item-to-card-title') {{_ 'title'}}:
|
||||
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
|
||||
= item.title
|
||||
+boardsSwimlanesAndLists
|
||||
|
||||
template(name="boardsSwimlanesAndLists")
|
||||
unless currentUser.isWorker
|
||||
label {{_ 'boards'}}:
|
||||
select.js-select-boards(autofocus)
|
||||
each boards
|
||||
if $eq _id currentBoard._id
|
||||
option(value="{{_id}}" selected) {{_ 'current'}}
|
||||
else
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
label {{_ 'swimlanes'}}:
|
||||
select.js-select-swimlanes
|
||||
each swimlanes
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
label {{_ 'lists'}}:
|
||||
select.js-select-lists
|
||||
each aBoardLists
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm.js-done {{_ 'done'}}
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
import Cards from '/models/cards';
|
||||
import Boards from '/models/boards';
|
||||
|
||||
const subManager = new SubsManager();
|
||||
const { calculateIndexData, capitalize } = Utils;
|
||||
|
||||
function initSorting(items) {
|
||||
|
@ -206,6 +210,7 @@ BlazeComponent.extendComponent({
|
|||
'submit .js-edit-checklist-title': this.editChecklist,
|
||||
'submit .js-add-checklist-item': this.addChecklistItem,
|
||||
'submit .js-edit-checklist-item': this.editChecklistItem,
|
||||
'click .js-convert-checklist-item-to-card': Popup.open('convertChecklistItemToCard'),
|
||||
'click .js-delete-checklist-item': this.deleteItem,
|
||||
'click .confirm-checklist-delete': this.deleteChecklist,
|
||||
'focus .js-add-checklist-item': this.focusChecklistItem,
|
||||
|
@ -215,6 +220,47 @@ BlazeComponent.extendComponent({
|
|||
},
|
||||
}).register('checklists');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
subManager.subscribe('board', Session.get('currentBoard'), false);
|
||||
this.selectedBoardId = new ReactiveVar(Session.get('currentBoard'));
|
||||
},
|
||||
|
||||
boards() {
|
||||
return Boards.find(
|
||||
{
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
_id: { $ne: Meteor.user().getTemplatesBoardId() },
|
||||
},
|
||||
{
|
||||
sort: { sort: 1 /* boards default sorting */ },
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
swimlanes() {
|
||||
const board = Boards.findOne(this.selectedBoardId.get());
|
||||
return board.swimlanes();
|
||||
},
|
||||
|
||||
aBoardLists() {
|
||||
const board = Boards.findOne(this.selectedBoardId.get());
|
||||
return board.lists();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'change .js-select-boards'(event) {
|
||||
this.selectedBoardId.set($(event.currentTarget).val());
|
||||
subManager.subscribe('board', this.selectedBoardId.get(), false);
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('boardsSwimlanesAndLists');
|
||||
|
||||
Template.checklists.helpers({
|
||||
hideCheckedItems() {
|
||||
const currentUser = Meteor.user();
|
||||
|
|
|
@ -159,7 +159,8 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
|
|||
padding-top: 2px
|
||||
padding-right: 10px;
|
||||
|
||||
.js-delete-checklist-item
|
||||
.js-delete-checklist-item,
|
||||
.js-convert-checklist-item-to-card
|
||||
margin: 0 0 0.5em 1.33em
|
||||
@extends .delete-text
|
||||
padding: 12px 0 0 0
|
||||
|
|
|
@ -92,6 +92,8 @@ Template.userFormsLayout.helpers({
|
|||
name = 'Latviešu';
|
||||
} else if (lang.name === 'latviešu valoda') {
|
||||
name = 'Latviešu';
|
||||
} else if (lang.name === 'en-IT') {
|
||||
name = 'English (Italy)';
|
||||
} else if (lang.name === 'Español') {
|
||||
name = 'español';
|
||||
} else if (lang.name === 'es_419') {
|
||||
|
|
|
@ -186,6 +186,8 @@ Template.changeLanguagePopup.helpers({
|
|||
name = 'Latviešu';
|
||||
} else if (lang.name === 'latviešu valoda') {
|
||||
name = 'Latviešu';
|
||||
} else if (lang.name === 'en-IT') {
|
||||
name = 'English (Italy)';
|
||||
} else if (lang.name === 'Español') {
|
||||
name = 'español';
|
||||
} else if (lang.name === 'es_419') {
|
||||
|
|
|
@ -440,9 +440,47 @@ services:
|
|||
# The host server for the LDAP server
|
||||
#- LDAP_HOST=localhost
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP AD Simple Auth ====
|
||||
#
|
||||
# Set to true, if you want to connect with Active Directory by Simple Authentication.
|
||||
# When using AD Simple Auth, LDAP_BASEDN is not needed.
|
||||
#
|
||||
# Example:
|
||||
#- LDAP_AD_SIMPLE_AUTH=true
|
||||
#
|
||||
# === LDAP User Authentication ===
|
||||
#
|
||||
# a) Option to login to the LDAP server with the user's own username and password, instead of
|
||||
# an administrator key. Default: false (use administrator key).
|
||||
#
|
||||
# b) When using AD Simple Auth, set to true, when login user is used for binding,
|
||||
# and LDAP_BASEDN is not needed.
|
||||
#
|
||||
# Example:
|
||||
#- LDAP_USER_AUTHENTICATION=true
|
||||
#
|
||||
# Which field is used to find the user for the user authentication. Default: uid.
|
||||
#- LDAP_USER_AUTHENTICATION_FIELD=uid
|
||||
#
|
||||
# === LDAP Default Domain ===
|
||||
#
|
||||
# a) In case AD SimpleAuth is configured, the default domain is appended to the given
|
||||
# loginname for creating the correct username for the bind request to AD.
|
||||
#
|
||||
# b) 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
|
||||
#
|
||||
# Example :
|
||||
#- LDAP_DEFAULT_DOMAIN=mydomain.com
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP BASEDN Auth ====
|
||||
#
|
||||
# The base DN for the LDAP Tree
|
||||
#- LDAP_BASEDN=ou=user,dc=example,dc=org
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# Fallback on the default authentication method
|
||||
#- LDAP_LOGIN_FALLBACK=false
|
||||
#
|
||||
|
@ -493,12 +531,6 @@ services:
|
|||
# Reject Unauthorized Certificate
|
||||
#- LDAP_REJECT_UNAUTHORIZED=false
|
||||
#
|
||||
# Option to login to the LDAP server with the user's own username and password, instead of an administrator key. Default: false (use administrator key).
|
||||
#- LDAP_USER_AUTHENTICATION=true
|
||||
#
|
||||
# Which field is used to find the user for the user authentication. Default: uid.
|
||||
#- LDAP_USER_AUTHENTICATION_FIELD=uid
|
||||
#
|
||||
# Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
|
||||
#- LDAP_USER_SEARCH_FILTER=
|
||||
#
|
||||
|
@ -564,9 +596,8 @@ services:
|
|||
#
|
||||
#- LDAP_SYNC_GROUP_ROLES=
|
||||
#
|
||||
# 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
|
||||
# example :
|
||||
#- LDAP_DEFAULT_DOMAIN=mydomain.com
|
||||
# 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 is defined in setting LDAP_DEFAULT_DOMAIN above.
|
||||
#
|
||||
# Enable/Disable syncing of admin status based on ldap groups:
|
||||
#- LDAP_SYNC_ADMIN_STATUS=true
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "إضافة مهمة فرعية",
|
||||
"add-checklist": "إضافة قائمة تدقيق",
|
||||
"add-checklist-item": "إضافة عنصر إلى قائمة التحقق",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "إضافة غلاف",
|
||||
"add-label": "إضافة ملصق",
|
||||
"add-list": "إضافة قائمة",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Добави подзадача",
|
||||
"add-checklist": "Добави списък със задачи",
|
||||
"add-checklist-item": "Добави точка към списъка със задачи",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Добави корица",
|
||||
"add-label": "Добави етикет",
|
||||
"add-list": "Добави списък",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Ouzphenn ur golo",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Afegir Subtasca",
|
||||
"add-checklist": "Afegeix checklist",
|
||||
"add-checklist-item": "Afegeix un ítem al checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Afegeix coberta",
|
||||
"add-label": "Afegeix etiqueta",
|
||||
"add-list": "Afegeix llista",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Přidat Podúkol",
|
||||
"add-checklist": "Přidat zaškrtávací seznam",
|
||||
"add-checklist-item": "Přidat položku do zaškrtávacího seznamu",
|
||||
"convertChecklistItemToCardPopup-title": "Převést na kartu",
|
||||
"add-cover": "Přidat obal",
|
||||
"add-label": "Přidat štítek",
|
||||
"add-list": "Přidat sloupec",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Tilføj delopgave",
|
||||
"add-checklist": "Tilføj tjekliste",
|
||||
"add-checklist-item": "Tilføj et element til tjeklisten",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Tilføj omslag",
|
||||
"add-label": "Tilføj etikette",
|
||||
"add-list": "Tilføj liste",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Teilaufgabe hinzufügen",
|
||||
"add-checklist": "Checkliste hinzufügen",
|
||||
"add-checklist-item": "Element zu Checkliste hinzufügen",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Cover hinzufügen",
|
||||
"add-label": "Label hinzufügen",
|
||||
"add-list": "Liste hinzufügen",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Teilaufgabe hinzufügen",
|
||||
"add-checklist": "Checkliste hinzufügen",
|
||||
"add-checklist-item": "Element zu Checkliste hinzufügen",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Cover hinzufügen",
|
||||
"add-label": "Label hinzufügen",
|
||||
"add-list": "Liste hinzufügen",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Προσθήκη Υποεργασίας",
|
||||
"add-checklist": "Προσθήκη Λίστας ελέγχου",
|
||||
"add-checklist-item": "Προσθήκη ενός στοιχείου στη λίστα ελέγχου - checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Προσθήκη Ετικέτας",
|
||||
"add-list": "Προσθήκη Λίστας",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
1063
i18n/en-IT.i18n.json
Normal file
1063
i18n/en-IT.i18n.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Agregar Subtarea",
|
||||
"add-checklist": "Agregar Lista de Tareas",
|
||||
"add-checklist-item": "Agregar ítem a lista de tareas",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Agregar Portadas",
|
||||
"add-label": "Agregar Etiqueta",
|
||||
"add-list": "Agregar Lista",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Añadir subtarea",
|
||||
"add-checklist": "Añadir una lista de verificación",
|
||||
"add-checklist-item": "Añadir un elemento a la lista de verificación",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Añadir portada",
|
||||
"add-label": "Añadir una etiqueta",
|
||||
"add-list": "Añadir una lista",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Agregar subtarea",
|
||||
"add-checklist": "Agregar lista de comprobación",
|
||||
"add-checklist-item": "Agregar un elemento a la lista de comprobación",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Agregar portada",
|
||||
"add-label": "Agregar una etiqueta",
|
||||
"add-list": "Agregar una lista",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Añadir subtarea",
|
||||
"add-checklist": "Añadir una lista de verificación",
|
||||
"add-checklist-item": "Añadir un elemento a la lista de verificación",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Añadir portada",
|
||||
"add-label": "Añadir una etiqueta",
|
||||
"add-list": "Añadir una lista",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Gehitu egiaztaketa zerrenda",
|
||||
"add-checklist-item": "Gehitu elementu bat egiaztaketa zerrendara",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Gehitu azala",
|
||||
"add-label": "Gehitu etiketa",
|
||||
"add-list": "Gehitu zerrenda",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "افزودن زیر وظیفه",
|
||||
"add-checklist": "افزودن چکلیست",
|
||||
"add-checklist-item": "افزودن مورد به چکلیست",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "افزودن کاور",
|
||||
"add-label": "افزودن لیبل",
|
||||
"add-list": "افزودن لیست",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Lisää alitehtävä",
|
||||
"add-checklist": "Lisää tarkistuslista",
|
||||
"add-checklist-item": "Lisää kohta tarkistuslistaan",
|
||||
"convertChecklistItemToCardPopup-title": "Muuta kortiksi",
|
||||
"add-cover": "Lisää kansi",
|
||||
"add-label": "Lisää nimilappu",
|
||||
"add-list": "Lisää lista",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Ajouter une sous-tâche",
|
||||
"add-checklist": "Ajouter une checklist",
|
||||
"add-checklist-item": "Ajouter un élément à la checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Ajouter la couverture",
|
||||
"add-label": "Ajouter une étiquette",
|
||||
"add-list": "Ajouter une liste",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Engadir etiqueta",
|
||||
"add-list": "Engadir lista",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "הוסף תת משימה",
|
||||
"add-checklist": "הוספת רשימת מטלות",
|
||||
"add-checklist-item": "הוספת פריט לרשימת משימות",
|
||||
"convertChecklistItemToCardPopup-title": "המרה לכרטיס",
|
||||
"add-cover": "הוספת כיסוי",
|
||||
"add-label": "הוספת תווית",
|
||||
"add-list": "הוספת רשימה",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "उप कार्य जोड़ें",
|
||||
"add-checklist": "चिह्नांकन-सूची जोड़ें",
|
||||
"add-checklist-item": "चिह्नांकन-सूची विषय कोई तक जोड़ें",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "आवरण जोड़ें",
|
||||
"add-label": "नामपत्र जोड़ें",
|
||||
"add-list": "सूची जोड़ें",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Dodaj podzadatak",
|
||||
"add-checklist": "Dodaj listu provjere",
|
||||
"add-checklist-item": "Dodaj stavku listi provjere",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Dodaj naslovnicu",
|
||||
"add-label": "Dodaj oznaku",
|
||||
"add-list": "Dodaj listu",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Alfeladat hozzáadása",
|
||||
"add-checklist": "Ellenőrzőlista hozzáadása",
|
||||
"add-checklist-item": "Elem hozzáadása az ellenőrzőlistához",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Borító hozzáadása",
|
||||
"add-label": "Címke hozzáadása",
|
||||
"add-list": "Lista hozzáadása",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Tambahkan hal ke daftar periksa",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Tambahkan Sampul",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
"activity-endDate": "ha modificato la data di fine a %s di %s ",
|
||||
"add-attachment": "Aggiungi allegato",
|
||||
"add-board": "Aggiungi bacheca",
|
||||
"add-template": "Add Template",
|
||||
"add-template": "Aggiungi Template",
|
||||
"add-card": "Aggiungi scheda",
|
||||
"add-card-to-top-of-list": "Aggiungi Scheda in cima alla Lista",
|
||||
"add-card-to-bottom-of-list": "Aggiungi Scheda in fondo alla Lista",
|
||||
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Aggiungi sotto-compito",
|
||||
"add-checklist": "Aggiungi Checklist",
|
||||
"add-checklist-item": "Aggiungi un elemento alla checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Aggiungi copertina",
|
||||
"add-label": "Aggiungi etichetta",
|
||||
"add-list": "Aggiungi lista",
|
||||
|
@ -120,8 +121,8 @@
|
|||
"archives": "Archivio",
|
||||
"template": "Template",
|
||||
"templates": "Template",
|
||||
"template-container": "Template Container",
|
||||
"add-template-container": "Add Template Container",
|
||||
"template-container": "Contenitore dei Template",
|
||||
"add-template-container": "Aggiungi contenitore di Template",
|
||||
"assign-member": "Assegna a un membro",
|
||||
"attached": "allegato",
|
||||
"attachment": "Allegato",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "サブタスクを追加",
|
||||
"add-checklist": "チェックリストを追加",
|
||||
"add-checklist-item": "チェックリストに項目を追加",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "カバーの追加",
|
||||
"add-label": "ラベルを追加",
|
||||
"add-list": "リストを追加",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "ქვესაქმიანობის დამატება",
|
||||
"add-checklist": "კატალოგის დამატება",
|
||||
"add-checklist-item": "დაამატეთ საგანი ჩამონათვალს",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "გარეკანის დამატება",
|
||||
"add-label": "ნიშნის დამატება",
|
||||
"add-list": "ჩამონათვალის დამატება",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "체크리스트 추가",
|
||||
"add-checklist-item": "체크리스트에 항목 추가",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "커버 추가",
|
||||
"add-label": "라벨 추가",
|
||||
"add-list": "리스트 추가",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Pievienot apakšuzdevumu",
|
||||
"add-checklist": "Pievienot kontrolsarakstu",
|
||||
"add-checklist-item": "Pievienot elementu",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Pievienot vāku",
|
||||
"add-label": "Pievienot birku",
|
||||
"add-list": "Pievienot sarakstu",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Додади подзадача",
|
||||
"add-checklist": "Додади список на задачи",
|
||||
"add-checklist-item": "Додади точка во списокот со задачи",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Додади корица",
|
||||
"add-label": "Додади етикета",
|
||||
"add-list": "Додади листа",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Чеклист нэмэх",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Шошго нэмэх",
|
||||
"add-list": "Жагсаалт нэмэх",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Legg til Underoppgave",
|
||||
"add-checklist": "Legg til Sjekkliste",
|
||||
"add-checklist-item": "Nytt punkt på sjekklisten",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Nytt omslag",
|
||||
"add-label": "Legg til Etikett",
|
||||
"add-list": "Legg til Liste",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Subtaak Toevoegen",
|
||||
"add-checklist": "Checklist toevoegen",
|
||||
"add-checklist-item": "Voeg item toe aan checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Converteer naar Kaart",
|
||||
"add-cover": "Cover Toevoegen",
|
||||
"add-label": "Label Toevoegen",
|
||||
"add-list": "Lijst Toevoegen",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Apondre una jos-tasca",
|
||||
"add-checklist": "Apondre una checklist",
|
||||
"add-checklist-item": "Apondre un element a la checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Apondre una cobèrta",
|
||||
"add-label": "Apondre una etiqueta",
|
||||
"add-list": "Apondre una tièra",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Dodaj podzadanie",
|
||||
"add-checklist": "Dodaj czeklistę",
|
||||
"add-checklist-item": "Dodaj element do czeklisty",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Dodaj okładkę",
|
||||
"add-label": "Dodaj etykietę",
|
||||
"add-list": "Dodaj listę",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Adicionar subtarefa",
|
||||
"add-checklist": "Adicionar lista de verificação",
|
||||
"add-checklist-item": "Adicionar um item à lista de verificação",
|
||||
"convertChecklistItemToCardPopup-title": "Converter para Cartão",
|
||||
"add-cover": "Adicionar Capa",
|
||||
"add-label": "Adicionar Etiqueta",
|
||||
"add-list": "Adicionar Lista",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Adicionar Sub-tarefa",
|
||||
"add-checklist": "Adicionar Lista de Verificação",
|
||||
"add-checklist-item": "Adicionar um item à lista de verificação",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Adicionar Capa",
|
||||
"add-label": "Adicionar Etiqueta",
|
||||
"add-list": "Adicionar Lista",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Adaugă Decor",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Добавить подзадачу",
|
||||
"add-checklist": "Добавить контрольный список",
|
||||
"add-checklist-item": "Добавить пункт в контрольный список",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Прикрепить",
|
||||
"add-label": "Добавить метку",
|
||||
"add-list": "Добавить простой список",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Pridať Podúlohu",
|
||||
"add-checklist": "Pridať Checklist",
|
||||
"add-checklist-item": "Pridať novú položku do Checklistu",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Pridať obal",
|
||||
"add-label": "Pridať značku",
|
||||
"add-list": "Pridať zoznam",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Dodaj podopravilo",
|
||||
"add-checklist": "Dodaj kontrolni seznam",
|
||||
"add-checklist-item": "Dodaj postavko na kontrolni seznam",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Dodaj ovitek",
|
||||
"add-label": "Dodaj oznako",
|
||||
"add-list": "Dodaj seznam",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Dodaj podzadatak",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Dodaj novu stavku u listu",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Dodaj zaglavlje",
|
||||
"add-label": "Dodaj oznaku",
|
||||
"add-list": "Dodaj Listu",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Lägg till deluppgift",
|
||||
"add-checklist": "Lägg till checklista",
|
||||
"add-checklist-item": "Lägg till objekt i checklista",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Lägg till omslag",
|
||||
"add-label": "Lägg till etikett",
|
||||
"add-list": "Lägg till lista",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "เพิ่มรายการตรวจสอบ",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "เพิ่มหน้าปก",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Alt Görev Ekle",
|
||||
"add-checklist": "Yapılacak Listesi Ekle",
|
||||
"add-checklist-item": "Yapılacak listesine yeni bir öğe ekle",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Kapak resmi ekle",
|
||||
"add-label": "Etiket Ekle",
|
||||
"add-list": "Liste Ekle",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Додати підзадачу",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Додати елемент в список",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Додати обкладинку",
|
||||
"add-label": "Додати мітку",
|
||||
"add-list": "Додати список",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Thêm Nhiệm vụ phụ",
|
||||
"add-checklist": "Thêm Danh Sách Kiểm Tra",
|
||||
"add-checklist-item": "Thêm Một Mục Vào Danh Sách Kiểm Tra",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Thêm Bìa",
|
||||
"add-label": "Thêm Nhãn",
|
||||
"add-list": "Thêm Danh Sách",
|
||||
|
|
|
@ -81,14 +81,15 @@
|
|||
"activity-endDate": "已将结束日期从 %s 修改为 %s",
|
||||
"add-attachment": "添加附件",
|
||||
"add-board": "添加看板",
|
||||
"add-template": "Add Template",
|
||||
"add-template": "新增模板",
|
||||
"add-card": "添加卡片",
|
||||
"add-card-to-top-of-list": "Add Card to Top of List",
|
||||
"add-card-to-bottom-of-list": "Add Card to Bottom of List",
|
||||
"add-card-to-top-of-list": "新增卡片到列表顶部",
|
||||
"add-card-to-bottom-of-list": "新增卡片到列表底部",
|
||||
"add-swimlane": "添加泳道图",
|
||||
"add-subtask": "添加子任务",
|
||||
"add-checklist": "添加待办清单",
|
||||
"add-checklist-item": "扩充清单",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "添加封面",
|
||||
"add-label": "添加标签",
|
||||
"add-list": "添加列表",
|
||||
|
@ -120,8 +121,8 @@
|
|||
"archives": "归档",
|
||||
"template": "模板",
|
||||
"templates": "模板",
|
||||
"template-container": "Template Container",
|
||||
"add-template-container": "Add Template Container",
|
||||
"template-container": "模板容器",
|
||||
"add-template-container": "新增模板容器",
|
||||
"assign-member": "指派成员",
|
||||
"attached": "附加",
|
||||
"attachment": "附件",
|
||||
|
@ -136,7 +137,7 @@
|
|||
"board-not-found": "看板不存在",
|
||||
"board-private-info": "该看板将被设为 <strong>私有</strong>.",
|
||||
"board-public-info": "该看板将被设为 <strong>公开</strong>.",
|
||||
"board-drag-drop-reorder-or-click-open": "Drag and drop to reorder board icons. Click board icon to open board.",
|
||||
"board-drag-drop-reorder-or-click-open": "对看板图标进行拖拽排序。点击看板图标打开看板。",
|
||||
"boardChangeColorPopup-title": "修改看板背景",
|
||||
"boardChangeTitlePopup-title": "重命名看板",
|
||||
"boardChangeVisibilityPopup-title": "更改可视级别",
|
||||
|
@ -184,10 +185,10 @@
|
|||
"vote-against": "反对",
|
||||
"deleteVotePopup-title": "删除投票?",
|
||||
"vote-delete-pop": "永久删除。此操作会将所有数据删除掉。",
|
||||
"cardStartPlanningPokerPopup-title": "Start a Planning Poker",
|
||||
"card-edit-planning-poker": "Edit Planning Poker",
|
||||
"editPokerEndDatePopup-title": "Change Planning Poker vote end date",
|
||||
"poker-question": "Planning Poker",
|
||||
"cardStartPlanningPokerPopup-title": "开始一次计划扑克",
|
||||
"card-edit-planning-poker": "编辑计划扑克",
|
||||
"editPokerEndDatePopup-title": "更改计划扑克投票截止日期",
|
||||
"poker-question": "计划扑克",
|
||||
"poker-one": "1",
|
||||
"poker-two": "2",
|
||||
"poker-three": "3",
|
||||
|
@ -197,14 +198,14 @@
|
|||
"poker-twenty": "20",
|
||||
"poker-forty": "40",
|
||||
"poker-oneHundred": "100",
|
||||
"poker-unsure": "?",
|
||||
"poker-finish": "Finish",
|
||||
"poker-result-votes": "Votes",
|
||||
"poker-result-who": "Who",
|
||||
"poker-unsure": "?",
|
||||
"poker-finish": "完成",
|
||||
"poker-result-votes": "投票",
|
||||
"poker-result-who": "何人",
|
||||
"poker-replay": "Replay",
|
||||
"set-estimation": "Set Estimation",
|
||||
"deletePokerPopup-title": "Delete planning poker?",
|
||||
"poker-delete-pop": "Deleting is permanent. You will lose all actions associated with this planning poker.",
|
||||
"deletePokerPopup-title": "删除计划扑克?",
|
||||
"poker-delete-pop": "永久删除。对该计划扑克的所有操作记录将会丢失。",
|
||||
"cardDeletePopup-title": "彻底删除卡片?",
|
||||
"cardDetailsActionsPopup-title": "卡片操作",
|
||||
"cardLabelsPopup-title": "标签",
|
||||
|
@ -236,7 +237,7 @@
|
|||
"close": "关闭",
|
||||
"close-board": "关闭看板",
|
||||
"close-board-pop": "您可以通过主页头部的“归档”按钮,来恢复看板。",
|
||||
"close-card": "Close Card",
|
||||
"close-card": "关闭卡片",
|
||||
"color-black": "黑色",
|
||||
"color-blue": "蓝色",
|
||||
"color-crimson": "深红",
|
||||
|
@ -361,11 +362,11 @@
|
|||
"export-board-excel": "看板导出为Excel",
|
||||
"user-can-not-export-excel": "用户无法导出Excel",
|
||||
"export-board-html": "看板导出为HTML",
|
||||
"export-card": "Export card",
|
||||
"export-card-pdf": "Export card to PDF",
|
||||
"user-can-not-export-card-to-pdf": "User can not export card to PDF",
|
||||
"export-card": "导出卡片",
|
||||
"export-card-pdf": "卡片导出为PDF",
|
||||
"user-can-not-export-card-to-pdf": "用户无法将卡片导出为PDF",
|
||||
"exportBoardPopup-title": "导出看板",
|
||||
"exportCardPopup-title": "Export card",
|
||||
"exportCardPopup-title": "导出卡片",
|
||||
"sort": "排序",
|
||||
"sort-desc": "点此来将列表排序",
|
||||
"list-sort-by": "按此来将列表排序:",
|
||||
|
@ -454,8 +455,8 @@
|
|||
"set-color-list": "设置颜色",
|
||||
"listActionPopup-title": "列表操作",
|
||||
"settingsUserPopup-title": "用户设置",
|
||||
"settingsTeamPopup-title": "Team Settings",
|
||||
"settingsOrgPopup-title": "Organization Settings",
|
||||
"settingsTeamPopup-title": "团队设置",
|
||||
"settingsOrgPopup-title": "组织设置",
|
||||
"swimlaneActionPopup-title": "泳道图操作",
|
||||
"swimlaneAddPopup-title": "在下面添加一个泳道",
|
||||
"listImportCardPopup-title": "导入 Trello 卡片",
|
||||
|
@ -671,7 +672,7 @@
|
|||
"setListColorPopup-title": "选择一种颜色",
|
||||
"assigned-by": "指派人",
|
||||
"requested-by": "需求人",
|
||||
"card-sorting-by-number": "Card sorting by number",
|
||||
"card-sorting-by-number": "根据编号对卡片排序",
|
||||
"board-delete-notice": "删除时永久操作,将会丢失此看板上的所有列表、卡片和动作。",
|
||||
"delete-board-confirm-popup": "所有列表、卡片、标签和活动都回被删除,将无法恢复看板内容。不支持撤销。",
|
||||
"boardDeletePopup-title": "删除看板?",
|
||||
|
@ -853,8 +854,8 @@
|
|||
"act-duenow": "__card__ 的当前到期提醒(__timeValue__) 现在到期",
|
||||
"act-atUserComment": "[__board__] __list__/__card__ 提到了您",
|
||||
"delete-user-confirm-popup": "确实要删除此帐户吗?此操作无法撤销。",
|
||||
"delete-team-confirm-popup": "Are you sure you want to delete this team? There is no undo.",
|
||||
"delete-org-confirm-popup": "Are you sure you want to delete this organization? There is no undo.",
|
||||
"delete-team-confirm-popup": "请确认是否删除此团队?此操作无法撤销。",
|
||||
"delete-org-confirm-popup": "请确认是否删除此组织?此操作无法撤销。",
|
||||
"accounts-allowUserDelete": "允许用户自行删除其帐户",
|
||||
"hide-minicard-label-text": "隐藏迷你卡片标签文本",
|
||||
"show-desktop-drag-handles": "显示桌面拖放手柄",
|
||||
|
@ -1045,7 +1046,7 @@
|
|||
"rulesReportTitle": "规则报告",
|
||||
"copy-swimlane": "复制泳道",
|
||||
"copySwimlanePopup-title": "复制泳道",
|
||||
"display-card-creator": "Display Card Creator",
|
||||
"display-card-creator": "显示卡片创建者",
|
||||
"wait-spinner": "Wait Spinner",
|
||||
"Bounce": "Bounce Wait Spinner",
|
||||
"Cube": "Cube Wait Spinner",
|
||||
|
@ -1055,8 +1056,8 @@
|
|||
"Rotateplane": "Rotateplane Wait Spinner",
|
||||
"Scaleout": "Scaleout Wait Spinner",
|
||||
"Wave": "Wave Wait Spinner",
|
||||
"maximize-card": "Maximize Card",
|
||||
"minimize-card": "Minimize Card",
|
||||
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
|
||||
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
|
||||
"maximize-card": "最大化卡片",
|
||||
"minimize-card": "最小化卡片",
|
||||
"delete-org-warning-message": "无法删除该组织,至少还有一个用户属于该组织。",
|
||||
"delete-team-warning-message": "无法删除该团队,至少还有一个用户属于该团队。"
|
||||
}
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"add-subtask": "新增子任務",
|
||||
"add-checklist": "新增待辦清單",
|
||||
"add-checklist-item": "新增項目",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "新增封面",
|
||||
"add-label": "新增標籤",
|
||||
"add-list": "新增清單",
|
||||
|
|
|
@ -271,17 +271,21 @@ export class WekanCreator {
|
|||
});
|
||||
});
|
||||
}
|
||||
boardToImport.labels.forEach(label => {
|
||||
const labelToCreate = {
|
||||
_id: Random.id(6),
|
||||
color: label.color,
|
||||
name: label.name,
|
||||
};
|
||||
// We need to remember them by Wekan ID, as this is the only ref we have
|
||||
// when importing cards.
|
||||
this.labels[label._id] = labelToCreate._id;
|
||||
boardToCreate.labels.push(labelToCreate);
|
||||
});
|
||||
|
||||
if (boardToImport.labels) {
|
||||
boardToImport.labels.forEach(label => {
|
||||
const labelToCreate = {
|
||||
_id: Random.id(6),
|
||||
color: label.color,
|
||||
name: label.name,
|
||||
};
|
||||
// We need to remember them by Wekan ID, as this is the only ref we have
|
||||
// when importing cards.
|
||||
this.labels[label._id] = labelToCreate._id;
|
||||
boardToCreate.labels.push(labelToCreate);
|
||||
});
|
||||
}
|
||||
|
||||
const boardId = Boards.direct.insert(boardToCreate);
|
||||
Boards.direct.update(boardId, {
|
||||
$set: {
|
||||
|
|
2
package-lock.json
generated
2
package-lock.json
generated
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "wekan",
|
||||
"version": "v5.38.0",
|
||||
"version": "v5.40.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "wekan",
|
||||
"version": "v5.38.0",
|
||||
"version": "v5.40.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"repository": {
|
||||
|
|
|
@ -40,6 +40,8 @@ export default class LDAP {
|
|||
group_filter_group_member_attribute: this.constructor.settings_get('LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE'),
|
||||
group_filter_group_member_format : this.constructor.settings_get('LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT'),
|
||||
group_filter_group_name : this.constructor.settings_get('LDAP_GROUP_FILTER_GROUP_NAME'),
|
||||
AD_Simple_Auth : this.constructor.settings_get('LDAP_AD_SIMPLE_AUTH'),
|
||||
Default_Domain : this.constructor.settings_get('LDAP_DEFAULT_DOMAIN'),
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -224,10 +226,17 @@ export default class LDAP {
|
|||
return;
|
||||
}
|
||||
|
||||
/* if SimpleAuth is configured, the BaseDN is not needed */
|
||||
if (!this.options.BaseDN && !this.options.AD_Simple_Auth) throw new Error('BaseDN is not provided');
|
||||
|
||||
if (!this.options.BaseDN) throw new Error('BaseDN is not provided');
|
||||
var userDn = "";
|
||||
if (this.options.AD_Simple_Auth === true || this.options.AD_Simple_Auth === 'true') {
|
||||
userDn = `${username}@${this.options.Default_Domain}`;
|
||||
} else {
|
||||
userDn = `${this.options.User_Authentication_Field}=${username},${this.options.BaseDN}`;
|
||||
}
|
||||
|
||||
const userDn = `${this.options.User_Authentication_Field}=${username},${this.options.BaseDN}`;
|
||||
log_info('Binding with User', userDn);
|
||||
|
||||
this.bindSync(userDn, password);
|
||||
this.domainBinded = true;
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<meta charset="utf-8">
|
||||
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title>Wekan REST API v5.38</title>
|
||||
<title>Wekan REST API v5.40</title>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
|
@ -1555,7 +1555,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
|||
<ul class="toc-list-h1">
|
||||
|
||||
<li>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.38">Wekan REST API v5.38</a>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.40">Wekan REST API v5.40</a>
|
||||
|
||||
</li>
|
||||
|
||||
|
@ -2128,7 +2128,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
|||
<div class="page-wrapper">
|
||||
<div class="dark-box"></div>
|
||||
<div class="content">
|
||||
<h1 id="wekan-rest-api">Wekan REST API v5.38</h1>
|
||||
<h1 id="wekan-rest-api">Wekan REST API v5.40</h1>
|
||||
<blockquote>
|
||||
<p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
|
||||
</blockquote>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
swagger: '2.0'
|
||||
info:
|
||||
title: Wekan REST API
|
||||
version: v5.38
|
||||
version: v5.40
|
||||
description: |
|
||||
The REST API allows you to control and extend Wekan with ease.
|
||||
|
||||
|
|
|
@ -45,6 +45,9 @@ tx pull -f -l nl
|
|||
echo "Esperanto:"
|
||||
tx pull -f -l eo
|
||||
|
||||
echo "English (Italy):"
|
||||
tx pull -f -l en_IT
|
||||
|
||||
echo "English (United Kingdom):"
|
||||
tx pull -f -l en_GB
|
||||
|
||||
|
|
|
@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
|||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 538,
|
||||
appVersion = 540,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "5.38.0~2021-07-18"),
|
||||
appMarketingVersion = (defaultText = "5.40.0~2021-07-25"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
|
|
@ -13,6 +13,17 @@ Meteor.publish('boards', function() {
|
|||
const { starredBoards = [] } = (Users.findOne(userId) || {}).profile || {};
|
||||
check(starredBoards, [String]);
|
||||
|
||||
let currUser = Users.findOne(userId);
|
||||
let orgIdsUserBelongs = currUser!== 'undefined' && currUser.teams !== 'undefined' ? currUser.orgIdsUserBelongs() : '';
|
||||
let teamIdsUserBelongs = currUser!== 'undefined' && currUser.teams !== 'undefined' ? currUser.teamIdsUserBelongs() : '';
|
||||
let orgsIds = [];
|
||||
let teamsIds = [];
|
||||
if(orgIdsUserBelongs && orgIdsUserBelongs != ''){
|
||||
orgsIds = orgIdsUserBelongs.split(',');
|
||||
}
|
||||
if(teamIdsUserBelongs && teamIdsUserBelongs != ''){
|
||||
teamsIds = teamIdsUserBelongs.split(',');
|
||||
}
|
||||
return Boards.find(
|
||||
{
|
||||
archived: false,
|
||||
|
@ -22,6 +33,8 @@ Meteor.publish('boards', function() {
|
|||
permission: 'public',
|
||||
},
|
||||
{ members: { $elemMatch: { userId, isActive: true } } },
|
||||
{'orgs.orgId': {$in : orgsIds}},
|
||||
{'teams.teamId': {$in : teamsIds}},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -82,11 +95,22 @@ Meteor.publishRelations('board', function(boardId, isArchived) {
|
|||
check(isArchived, Boolean);
|
||||
const thisUserId = this.userId;
|
||||
const $or = [{ permission: 'public' }];
|
||||
let currUser = (!Match.test(thisUserId, String) || !thisUserId) ? 'undefined' : Users.findOne(thisUserId);
|
||||
let orgIdsUserBelongs = currUser!== 'undefined' && currUser.teams !== 'undefined' ? currUser.orgIdsUserBelongs() : '';
|
||||
let teamIdsUserBelongs = currUser!== 'undefined' && currUser.teams !== 'undefined' ? currUser.teamIdsUserBelongs() : '';
|
||||
let orgsIds = [];
|
||||
let teamsIds = [];
|
||||
if(orgIdsUserBelongs && orgIdsUserBelongs != ''){
|
||||
orgsIds = orgIdsUserBelongs.split(',');
|
||||
}
|
||||
if(teamIdsUserBelongs && teamIdsUserBelongs != ''){
|
||||
teamsIds = teamIdsUserBelongs.split(',');
|
||||
}
|
||||
|
||||
if (thisUserId) {
|
||||
$or.push({
|
||||
members: { $elemMatch: { userId: thisUserId, isActive: true } },
|
||||
});
|
||||
$or.push({members: { $elemMatch: { userId: thisUserId, isActive: true } }});
|
||||
$or.push({'orgs.orgId': {$in : orgsIds}});
|
||||
$or.push({'teams.teamId': {$in : teamsIds}});
|
||||
}
|
||||
|
||||
this.cursor(
|
||||
|
|
|
@ -23,6 +23,8 @@ Meteor.publish('user-admin', function() {
|
|||
return Meteor.users.find(this.userId, {
|
||||
fields: {
|
||||
isAdmin: 1,
|
||||
teams: 1,
|
||||
orgs: 1,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
@ -34,6 +36,8 @@ Meteor.publish('user-authenticationMethod', function(match) {
|
|||
{
|
||||
fields: {
|
||||
authenticationMethod: 1,
|
||||
teams: 1,
|
||||
orgs: 1,
|
||||
},
|
||||
},
|
||||
);
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# All supported keys are defined here together with descriptions and default values
|
||||
|
||||
# list of supported keys
|
||||
keys="DEBUG MONGO_LOG_DESTINATION MONGO_URL MONGODB_BIND_UNIX_SOCKET MONGO_URL MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API RICHER_CARD_COMMENT_EDITOR CARD_OPENED_WEBHOOK_ENABLED ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW MAX_IMAGE_PIXEL IMAGE_COMPRESS_RATIO BIGEVENTS_PATTERN NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE NOTIFY_DUE_DAYS_BEFORE_AND_AFTER NOTIFY_DUE_AT_HOUR_OF_DAY EMAIL_NOTIFICATION_TIMEOUT CORS CORS_ALLOW_HEADERS CORS_EXPOSE_HEADERS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CA_CERT OAUTH2_LOGIN_STYLE 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_ID_TOKEN_WHITELIST_FIELDS OAUTH2_EMAIL_MAP OAUTH2_REQUEST_PERMISSIONS OAUTH2_ADFS_ENABLED 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_AUTHENTICATION LDAP_USER_AUTHENTICATION_FIELD 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 ATTACHMENTS_STORE_PATH PASSWORD_LOGIN_ENABLED CAS_ENABLED CAS_BASE_URL CAS_LOGIN_URL CAS_VALIDATE_URL SAML_ENABLED SAML_PROVIDER SAML_ENTRYPOINT SAML_ISSUER SAML_CERT SAML_IDPSLO_REDIRECTURL SAML_PRIVATE_KEYFILE SAML_PUBLIC_CERTFILE SAML_IDENTIFIER_FORMAT SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE SAML_ATTRIBUTES ORACLE_OIM_ENABLED RESULTS_PER_PAGE WAIT_SPINNER"
|
||||
keys="DEBUG MONGO_LOG_DESTINATION MONGO_URL MONGODB_BIND_UNIX_SOCKET MONGO_URL MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API RICHER_CARD_COMMENT_EDITOR CARD_OPENED_WEBHOOK_ENABLED ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW MAX_IMAGE_PIXEL IMAGE_COMPRESS_RATIO BIGEVENTS_PATTERN NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE NOTIFY_DUE_DAYS_BEFORE_AND_AFTER NOTIFY_DUE_AT_HOUR_OF_DAY EMAIL_NOTIFICATION_TIMEOUT CORS CORS_ALLOW_HEADERS CORS_EXPOSE_HEADERS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CA_CERT OAUTH2_LOGIN_STYLE 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_ID_TOKEN_WHITELIST_FIELDS OAUTH2_EMAIL_MAP OAUTH2_REQUEST_PERMISSIONS OAUTH2_ADFS_ENABLED LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_AD_SIMPLE_AUTH 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_AUTHENTICATION LDAP_USER_AUTHENTICATION_FIELD 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 ATTACHMENTS_STORE_PATH PASSWORD_LOGIN_ENABLED CAS_ENABLED CAS_BASE_URL CAS_LOGIN_URL CAS_VALIDATE_URL SAML_ENABLED SAML_PROVIDER SAML_ENTRYPOINT SAML_ISSUER SAML_CERT SAML_IDPSLO_REDIRECTURL SAML_PRIVATE_KEYFILE SAML_PUBLIC_CERTFILE SAML_IDENTIFIER_FORMAT SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE SAML_ATTRIBUTES ORACLE_OIM_ENABLED RESULTS_PER_PAGE WAIT_SPINNER"
|
||||
|
||||
# default values
|
||||
DESCRIPTION_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
|
||||
|
@ -256,6 +256,10 @@ DESCRIPTION_LDAP_HOST="The host server for the LDAP server"
|
|||
DEFAULT_LDAP_HOST=""
|
||||
KEY_LDAP_HOST="ldap-host"
|
||||
|
||||
DESCRIPTION_LDAP_AD_SIMPLE_AUTH="LDAP AD Simple Auth. When enabled, ldap-basedn is not needed, and also do set ldap-user-authentication='true'. Example: true"
|
||||
DEFAULT_LDAP_AD_SIMPLE_AUTH=""
|
||||
KEY_LDAP_AD_SIMPLE_AUTH="ldap-ad-simple-auth"
|
||||
|
||||
DESCRIPTION_LDAP_BASEDN="The base DN for the LDAP Tree"
|
||||
DEFAULT_LDAP_BASEDN=""
|
||||
KEY_LDAP_BASEDN="ldap-basedn"
|
||||
|
@ -432,7 +436,7 @@ DESCRIPTION_LDAP_SYNC_ADMIN_GROUPS="Comma separated list of admin group names to
|
|||
DEFAULT_LDAP_SYNC_ADMIN_GROUPS=""
|
||||
KEY_LDAP_SYNC_ADMIN_GROUPS="ldap-sync-admin-groups"
|
||||
|
||||
DESCRIPTION_LDAP_DEFAULT_DOMAIN="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"
|
||||
DESCRIPTION_LDAP_DEFAULT_DOMAIN="LDAP default domain. a) In case AD SimpleAuth is configured, the default domain is appended to the given loginname for creating the correct username for the bind request to AD. b) 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."
|
||||
DEFAULT_LDAP_DEFAULT_DOMAIN=""
|
||||
KEY_LDAP_DEFAULT_DOMAIN="ldap-default-domain"
|
||||
|
||||
|
|
|
@ -297,6 +297,18 @@ echo -e "Ldap Port."
|
|||
echo -e "The port of the ldap server:"
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-port='12345'"
|
||||
echo -e "\n"
|
||||
echo -e "LDAP AD Simple Auth. When enabled, ldap-basedn is not needed, and also do set ldap-user-autentication='true'. Example: true. Enable:"
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-ad-simple-auth='true'"
|
||||
echo -e "\t-Disable the LDAP AD Simple Auth of Wekan:"
|
||||
echo -e "\t$ snap unset $SNAP_NAME ldap-ad-simple-auth"
|
||||
echo -e "\n"
|
||||
echo -e "a) Option to login to the LDAP server with the user's own username and password, instead of an administrator key. Default: false (use administrator key)."
|
||||
echo -e "b) For LDAP AD Simple Auth, set to true."
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-user-authentication='true'"
|
||||
echo -e "\n"
|
||||
echo -e "Which field is used to find the user for the user authentication. Default: uid."
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-user-authentication-field='uid'"
|
||||
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'"
|
||||
|
@ -370,12 +382,6 @@ echo -e "Ldap Reject Unauthorized."
|
|||
echo -e "Reject Unauthorized Certificate:"
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-reject-unauthorized='true'"
|
||||
echo -e "\n"
|
||||
echo -e "Option to login to the LDAP server with the user's own username and password, instead of an administrator key. Default: false (use administrator key)."
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-user-authentication='true'"
|
||||
echo -e "\n"
|
||||
echo -e "Which field is used to find the user for the user authentication. Default: uid."
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-user-authentication-field='uid'"
|
||||
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=''"
|
||||
|
@ -460,7 +466,8 @@ echo -e "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 "a) In case AD SimpleAuth is configured, the default domain is appended to the given loginname for creating the correct username for the bind request to AD."
|
||||
echo -e "b) The default domain of the ldap it is used to create email if the field is not map correctly with the ldap-sync-user-data-fieldmap."
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-default-domain=''"
|
||||
echo -e "\n"
|
||||
echo -e "Enable/Disable syncing of admin status based on LDAP groups."
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name: wekan
|
||||
version: '5.38'
|
||||
version: '5.40'
|
||||
summary: The open-source kanban
|
||||
description: |
|
||||
Wekan is an open-source and collaborative kanban board application.
|
||||
|
|
|
@ -190,10 +190,45 @@ REM # LDAP_HOST : The host server for the LDAP server
|
|||
REM # example : LDAP_HOST=localhost
|
||||
REM SET LDAP_HOST=
|
||||
|
||||
REM #-----------------------------------------------------------------
|
||||
REM # ==== LDAP AD Simple Auth ====
|
||||
REM # Set to true, if you want to connect with Active Directory by Simple Authentication.
|
||||
REM # When using AD Simple Auth, LDAP_BASEDN is not needed.
|
||||
REM SET LDAP_AD_SIMPLE_AUTH=true
|
||||
|
||||
REM #-----------------------------------------------------------------
|
||||
REM # === LDAP User Authentication ===
|
||||
REM #
|
||||
REM # a) Option to login to the LDAP server with the user's own username and password, instead of
|
||||
REM # an administrator key. Default: false (use administrator key).
|
||||
REM #
|
||||
REM # b) When using AD Simple Auth, set to true, when login user is used for binding,
|
||||
REM # and LDAP_BASEDN is not needed.
|
||||
REM #
|
||||
REM # Example:
|
||||
REM SET LDAP_USER_AUTHENTICATION=true
|
||||
|
||||
REM # Which field is used to find the user for the user authentication. Default: uid.
|
||||
REM SET LDAP_USER_AUTHENTICATION_FIELD=uid
|
||||
|
||||
REM # === LDAP Default Domain ===
|
||||
REM #
|
||||
REM # a) In case AD SimpleAuth is configured, the default domain is appended to the given
|
||||
REM # loginname for creating the correct username for the bind request to AD.
|
||||
REM #
|
||||
REM # b) The default domain of the ldap it is used to create email if the field is not map
|
||||
REM # correctly with the LDAP_SYNC_USER_DATA_FIELDMAP
|
||||
REM #
|
||||
REM # Example :
|
||||
REM SET LDAP_DEFAULT_DOMAIN=mydomain.com
|
||||
|
||||
REM #-----------------------------------------------------------------
|
||||
REM # ==== LDAP BASEDN Auth ====
|
||||
REM # LDAP_BASEDN : The base DN for the LDAP Tree
|
||||
REM # example : LDAP_BASEDN=ou=user,dc=example,dc=org
|
||||
REM SET LDAP_BASEDN=
|
||||
|
||||
REM #-----------------------------------------------------------------
|
||||
REM # LDAP_LOGIN_FALLBACK : Fallback on the default authentication method
|
||||
REM # example : LDAP_LOGIN_FALLBACK=true
|
||||
REM SET LDAP_LOGIN_FALLBACK=false
|
||||
|
@ -265,12 +300,6 @@ REM # LDAP_REJECT_UNAUTHORIZED : Reject Unauthorized Certificate
|
|||
REM # example : LDAP_REJECT_UNAUTHORIZED=true
|
||||
REM SET LDAP_REJECT_UNAUTHORIZED=false
|
||||
|
||||
REM # Option to login to the LDAP server with the user's own username and password, instead of an administrator key. Default: false (use administrator key).
|
||||
REM SET LDAP_USER_AUTHENTICATION=true
|
||||
|
||||
REM # Which field is used to find the user for the user authentication. Default: uid.
|
||||
REM SET LDAP_USER_AUTHENTICATION_FIELD=uid
|
||||
|
||||
REM # LDAP_USER_SEARCH_FILTER : Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
|
||||
REM # example : LDAP_USER_SEARCH_FILTER=
|
||||
REM SET LDAP_USER_SEARCH_FILTER=
|
||||
|
@ -355,14 +384,13 @@ REM # LDAP_SYNC_USER_DATA_FIELDMAP :
|
|||
REM # example : LDAP_SYNC_USER_DATA_FIELDMAP={"cn":"name", "mail":"email"}
|
||||
REM SET LDAP_SYNC_USER_DATA_FIELDMAP=
|
||||
|
||||
REM # The default domain of the ldap it is used to create email if the field is not map correctly
|
||||
REM # with the LDAP_SYNC_USER_DATA_FIELDMAP is defined in setting LDAP_DEFAULT_DOMAIN above.
|
||||
|
||||
REM # LDAP_SYNC_GROUP_ROLES :
|
||||
REM # example :
|
||||
REM # SET LDAP_SYNC_GROUP_ROLES=
|
||||
|
||||
REM # LDAP_DEFAULT_DOMAIN : 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
|
||||
REM # example :
|
||||
REM SET LDAP_DEFAULT_DOMAIN=
|
||||
|
||||
REM # Enable/Disable syncing of admin status based on ldap groups:
|
||||
REM SET LDAP_SYNC_ADMIN_STATUS=true
|
||||
|
||||
|
|
114
start-wekan.sh
114
start-wekan.sh
|
@ -111,6 +111,7 @@
|
|||
## The option that allows matomo to retrieve the username:
|
||||
# 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
|
||||
|
@ -133,27 +134,36 @@
|
|||
# 2) Configure the environment variables. This differs slightly
|
||||
# by installation type, but make sure you have the following:
|
||||
#export OAUTH2_ENABLED=true
|
||||
#
|
||||
# Optional OAuth2 CA Cert, see https://github.com/wekan/wekan/issues/3299
|
||||
#export OAUTH2_CA_CERT=ABCD1234
|
||||
#
|
||||
# Use OAuth2 ADFS additional changes. Also needs OAUTH2_ENABLED=true setting.
|
||||
#export OAUTH2_ADFS_ENABLED=false
|
||||
#
|
||||
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
|
||||
# OAuth2 login style: popup or redirect.
|
||||
#export OAUTH2_LOGIN_STYLE=redirect
|
||||
#
|
||||
# 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
|
||||
#-----------------------------------------------------------------
|
||||
|
@ -175,63 +185,124 @@
|
|||
# https://github.com/wekan/wekan/wiki/OAuth2
|
||||
# Enable the OAuth2 connection
|
||||
#export OAUTH2_ENABLED=true
|
||||
#
|
||||
# OAuth2 login style: popup or redirect.
|
||||
#export OAUTH2_LOGIN_STYLE=redirect
|
||||
#
|
||||
# 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 Token Whitelist Fields.
|
||||
#export OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[]
|
||||
#
|
||||
# OAUTH2 Request Permissions.
|
||||
#export OAUTH2_REQUEST_PERMISSIONS='openid profile email'
|
||||
#
|
||||
# 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
|
||||
#export LDAP_ENABLE=false
|
||||
#
|
||||
# LDAP_PORT : The port of the LDAP server
|
||||
# example : export LDAP_PORT=389
|
||||
#export LDAP_PORT=389
|
||||
#
|
||||
# LDAP_HOST : The host server for the LDAP server
|
||||
# example : export LDAP_HOST=localhost
|
||||
#export LDAP_HOST=
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP AD Simple Auth ====
|
||||
#
|
||||
# Set to true, if you want to connect with Active Directory by Simple Authentication.
|
||||
# When using AD Simple Auth, LDAP_BASEDN is not needed.
|
||||
#
|
||||
# Example:
|
||||
#export LDAP_AD_SIMPLE_AUTH=true
|
||||
#
|
||||
# === LDAP User Authentication ===
|
||||
#
|
||||
# a) Option to login to the LDAP server with the user's own username and password, instead of
|
||||
# an administrator key. Default: false (use administrator key).
|
||||
#
|
||||
# b) When using AD Simple Auth, set to true, when login user is used for binding,
|
||||
# and LDAP_BASEDN is not needed.
|
||||
#
|
||||
# Example:
|
||||
#export LDAP_USER_AUTHENTICATION=true
|
||||
#
|
||||
# Which field is used to find the user for the user authentication. Default: uid.
|
||||
#export LDAP_USER_AUTHENTICATION_FIELD=uid
|
||||
#
|
||||
# === LDAP Default Domain ===
|
||||
#
|
||||
# a) In case AD SimpleAuth is configured, the default domain is appended to the given
|
||||
# loginname for creating the correct username for the bind request to AD.
|
||||
#
|
||||
# b) 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
|
||||
#
|
||||
# Example :
|
||||
#export LDAP_DEFAULT_DOMAIN=mydomain.com
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP BASEDN Auth ====
|
||||
#
|
||||
# LDAP_BASEDN : The base DN for the LDAP Tree
|
||||
# example : export LDAP_BASEDN=ou=user,dc=example,dc=org
|
||||
#export LDAP_BASEDN=
|
||||
#
|
||||
#---------------------------------------------
|
||||
# LDAP_LOGIN_FALLBACK : Fallback on the default authentication method
|
||||
# example : export LDAP_LOGIN_FALLBACK=true
|
||||
#export LDAP_LOGIN_FALLBACK=false
|
||||
#
|
||||
# LDAP_RECONNECT : Reconnect to the server if the connection is lost
|
||||
# example : export LDAP_RECONNECT=false
|
||||
#export LDAP_RECONNECT=true
|
||||
#
|
||||
# LDAP_TIMEOUT : Overall timeout, in milliseconds
|
||||
# example : export LDAP_TIMEOUT=12345
|
||||
#export LDAP_TIMEOUT=10000
|
||||
#
|
||||
# LDAP_IDLE_TIMEOUT : Specifies the timeout for idle LDAP connections in milliseconds
|
||||
# example : export LDAP_IDLE_TIMEOUT=12345
|
||||
#export LDAP_IDLE_TIMEOUT=10000
|
||||
#
|
||||
# LDAP_CONNECT_TIMEOUT : Connection timeout, in milliseconds
|
||||
# example : export LDAP_CONNECT_TIMEOUT=12345
|
||||
#export LDAP_CONNECT_TIMEOUT=10000
|
||||
#
|
||||
# LDAP_AUTHENTIFICATION : If the LDAP needs a user account to search
|
||||
# example : export LDAP_AUTHENTIFICATION=true
|
||||
#export LDAP_AUTHENTIFICATION=false
|
||||
#
|
||||
# LDAP_AUTHENTIFICATION_USERDN : The search user DN
|
||||
# example : export LDAP_AUTHENTIFICATION_USERDN=cn=admin,dc=example,dc=org
|
||||
#----------------------------------------------------------------------------
|
||||
|
@ -243,110 +314,139 @@
|
|||
# LDAP_AUTHENTIFICATION_PASSWORD : The password for the search user
|
||||
# example : AUTHENTIFICATION_PASSWORD=admin
|
||||
#export LDAP_AUTHENTIFICATION_PASSWORD=
|
||||
#
|
||||
# LDAP_LOG_ENABLED : Enable logs for the module
|
||||
# example : export LDAP_LOG_ENABLED=true
|
||||
#export LDAP_LOG_ENABLED=false
|
||||
#
|
||||
# LDAP_BACKGROUND_SYNC : If the sync of the users should be done in the background
|
||||
# example : export LDAP_BACKGROUND_SYNC=true
|
||||
#export LDAP_BACKGROUND_SYNC=false
|
||||
#
|
||||
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
|
||||
# At which interval does the background task sync in milliseconds.
|
||||
# Leave this unset, so it uses default, and does not crash.
|
||||
# https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
|
||||
export LDAP_BACKGROUND_SYNC_INTERVAL=''
|
||||
#
|
||||
# LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED :
|
||||
# example : export LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=true
|
||||
#export LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
|
||||
#
|
||||
# LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS :
|
||||
# example : export LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=true
|
||||
#export LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false
|
||||
#
|
||||
# LDAP_ENCRYPTION : If using LDAPS
|
||||
# example : export LDAP_ENCRYPTION=ssl
|
||||
#export LDAP_ENCRYPTION=false
|
||||
#
|
||||
# LDAP_CA_CERT : The certification for the LDAPS server. Certificate needs to be included in this docker-compose.yml file.
|
||||
# example : export LDAP_CA_CERT=-----BEGIN CERTIFICATE-----MIIE+zCCA+OgAwIBAgIkAhwR/6TVLmdRY6hHxvUFWc0+Enmu/Hu6cj+G2FIdAgIC...-----END CERTIFICATE-----
|
||||
#export LDAP_CA_CERT=
|
||||
#
|
||||
# LDAP_REJECT_UNAUTHORIZED : Reject Unauthorized Certificate
|
||||
# example : export LDAP_REJECT_UNAUTHORIZED=true
|
||||
#export LDAP_REJECT_UNAUTHORIZED=false
|
||||
# Option to login to the LDAP server with the user's own username and password, instead of an administrator key. Default: false (use administrator key).
|
||||
#export LDAP_USER_AUTHENTICATION=true
|
||||
# Which field is used to find the user for the user authentication. Default: uid.
|
||||
#export LDAP_USER_AUTHENTICATION_FIELD=uid
|
||||
#
|
||||
# LDAP_USER_SEARCH_FILTER : Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
|
||||
# example : export LDAP_USER_SEARCH_FILTER=
|
||||
#export LDAP_USER_SEARCH_FILTER=
|
||||
#
|
||||
# LDAP_USER_SEARCH_SCOPE : 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 : export LDAP_USER_SEARCH_SCOPE=one
|
||||
#export LDAP_USER_SEARCH_SCOPE=
|
||||
#
|
||||
# LDAP_USER_SEARCH_FIELD : Which field is used to find the user
|
||||
# example : export LDAP_USER_SEARCH_FIELD=uid
|
||||
#export LDAP_USER_SEARCH_FIELD=
|
||||
#
|
||||
# LDAP_SEARCH_PAGE_SIZE : Used for pagination (0=unlimited)
|
||||
# example : export LDAP_SEARCH_PAGE_SIZE=12345
|
||||
#export LDAP_SEARCH_PAGE_SIZE=0
|
||||
#
|
||||
# LDAP_SEARCH_SIZE_LIMIT : The limit number of entries (0=unlimited)
|
||||
# example : export LDAP_SEARCH_SIZE_LIMIT=12345
|
||||
#export LDAP_SEARCH_SIZE_LIMIT=0
|
||||
#
|
||||
# LDAP_GROUP_FILTER_ENABLE : Enable group filtering
|
||||
# example : export LDAP_GROUP_FILTER_ENABLE=true
|
||||
#export LDAP_GROUP_FILTER_ENABLE=false
|
||||
#
|
||||
# LDAP_GROUP_FILTER_OBJECTCLASS : The object class for filtering
|
||||
# example : export LDAP_GROUP_FILTER_OBJECTCLASS=group
|
||||
#export LDAP_GROUP_FILTER_OBJECTCLASS=
|
||||
#
|
||||
# LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE :
|
||||
# example :
|
||||
#export LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE=
|
||||
#
|
||||
# LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE :
|
||||
# example :
|
||||
#export LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE=
|
||||
#
|
||||
# LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT :
|
||||
# example :
|
||||
#export LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT=
|
||||
#
|
||||
# LDAP_GROUP_FILTER_GROUP_NAME :
|
||||
# example :
|
||||
#export LDAP_GROUP_FILTER_GROUP_NAME=
|
||||
#
|
||||
# LDAP_UNIQUE_IDENTIFIER_FIELD : This field is sometimes class GUID (Globally Unique Identifier)
|
||||
# example : export LDAP_UNIQUE_IDENTIFIER_FIELD=guid
|
||||
#export LDAP_UNIQUE_IDENTIFIER_FIELD=
|
||||
#
|
||||
# LDAP_UTF8_NAMES_SLUGIFY : Convert the username to utf8
|
||||
# example : export LDAP_UTF8_NAMES_SLUGIFY=false
|
||||
#export LDAP_UTF8_NAMES_SLUGIFY=true
|
||||
#
|
||||
# LDAP_USERNAME_FIELD : Which field contains the ldap username
|
||||
# example : export LDAP_USERNAME_FIELD=username
|
||||
#export LDAP_USERNAME_FIELD=
|
||||
#
|
||||
# LDAP_FULLNAME_FIELD : Which field contains the ldap fullname
|
||||
# example : export LDAP_FULLNAME_FIELD=fullname
|
||||
#export LDAP_FULLNAME_FIELD=
|
||||
#
|
||||
# LDAP_MERGE_EXISTING_USERS :
|
||||
# example : export LDAP_MERGE_EXISTING_USERS=true
|
||||
#export LDAP_MERGE_EXISTING_USERS=false
|
||||
#
|
||||
# LDAP_EMAIL_MATCH_ENABLE : allow existing account matching by e-mail address when username does not match
|
||||
# example: LDAP_EMAIL_MATCH_ENABLE=true
|
||||
#export LDAP_EMAIL_MATCH_ENABLE=false
|
||||
#
|
||||
# LDAP_EMAIL_MATCH_REQUIRE : require existing account matching by e-mail address when username does match
|
||||
# example: LDAP_EMAIL_MATCH_REQUIRE=true
|
||||
#export LDAP_EMAIL_MATCH_REQUIRE=false
|
||||
#
|
||||
# LDAP_EMAIL_MATCH_VERIFIED : require existing account email address to be verified for matching
|
||||
# example: LDAP_EMAIL_MATCH_VERIFIED=true
|
||||
#export LDAP_EMAIL_MATCH_VERIFIED=false
|
||||
#
|
||||
# LDAP_EMAIL_FIELD : which field contains the LDAP e-mail address
|
||||
# example: LDAP_EMAIL_FIELD=mail
|
||||
#export LDAP_EMAIL_FIELD=
|
||||
#
|
||||
# LDAP_SYNC_USER_DATA :
|
||||
# example : export LDAP_SYNC_USER_DATA=true
|
||||
#export LDAP_SYNC_USER_DATA=false
|
||||
#
|
||||
# LDAP_SYNC_USER_DATA_FIELDMAP :
|
||||
# example : export LDAP_SYNC_USER_DATA_FIELDMAP={"cn":"name", "mail":"email"}
|
||||
#export LDAP_SYNC_USER_DATA_FIELDMAP=
|
||||
#
|
||||
# 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 is defined in setting LDAP_DEFAULT_DOMAIN above.
|
||||
#
|
||||
# LDAP_SYNC_GROUP_ROLES :
|
||||
# example :
|
||||
#export LDAP_SYNC_GROUP_ROLES=
|
||||
# LDAP_DEFAULT_DOMAIN : 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
|
||||
# example :
|
||||
#export LDAP_DEFAULT_DOMAIN=
|
||||
#
|
||||
# Enable/Disable syncing of admin status based on ldap groups:
|
||||
#export LDAP_SYNC_ADMIN_STATUS=true
|
||||
#
|
||||
# Comma separated list of admin group names to sync.
|
||||
#export LDAP_SYNC_ADMIN_GROUPS=group1,group2
|
||||
#---------------------------------------------------------------------
|
||||
|
|
|
@ -372,10 +372,43 @@ services:
|
|||
# example : LDAP_HOST=localhost
|
||||
#- LDAP_HOST=
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP AD Simple Auth ====
|
||||
#
|
||||
# Set to true, if you want to connect with Active Directory by Simple Authentication.
|
||||
# When using AD Simple Auth, LDAP_BASEDN is not needed.
|
||||
#- LDAP_AD_SIMPLE_AUTH=true
|
||||
#
|
||||
# === Related settings ELSEWHERE IN THIS FILE, NOT HERE ===
|
||||
#
|
||||
# Option to login to the LDAP server with the user's own username and password, instead of
|
||||
# an administrator key. Default: false (use administrator key). When using AD Simple Auth, set to true.
|
||||
# Set to true, if the login user is used for binding. Used with AD Simple Auth.
|
||||
# When using AD Simple Auth, LDAP_BASEDN is not needed.
|
||||
##ELSEWHERE IN THIS SETTINGS FILE, NOT HERE: #- LDAP_USER_AUTHENTICATION=true
|
||||
#
|
||||
# Which field is used to find the user for the user authentication. Default: uid.
|
||||
##ELSEWHERE IN THIS SETTINGS FILE, NOT HERE:#- LDAP_USER_AUTHENTICATION_FIELD=uid
|
||||
#
|
||||
# === LDAP Default Domain: 2 different use cases, a/b ===
|
||||
#
|
||||
# a) 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
|
||||
#
|
||||
# b) In case AD SimpleAuth is configured, the default domain is appended to the given
|
||||
# loginname for creating the correct username for the bind request to AD.
|
||||
#
|
||||
# Example :
|
||||
##ELSEWHERE IN THIS SETTINGS FILE, NOT HERE:- LDAP_DEFAULT_DOMAIN=mydomain.com
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP BASEDN Auth ====
|
||||
#
|
||||
# LDAP_BASEDN : The base DN for the LDAP Tree
|
||||
# example : LDAP_BASEDN=ou=user,dc=example,dc=org
|
||||
#- LDAP_BASEDN=
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# LDAP_LOGIN_FALLBACK : Fallback on the default authentication method
|
||||
# example : LDAP_LOGIN_FALLBACK=true
|
||||
#- LDAP_LOGIN_FALLBACK=false
|
||||
|
@ -504,7 +537,7 @@ services:
|
|||
# LDAP_MERGE_EXISTING_USERS :
|
||||
# example : LDAP_MERGE_EXISTING_USERS=true
|
||||
#- LDAP_MERGE_EXISTING_USERS=false
|
||||
#-----------------------------------------------------------------
|
||||
#
|
||||
# LDAP_SYNC_USER_DATA :
|
||||
# example : LDAP_SYNC_USER_DATA=true
|
||||
#- LDAP_SYNC_USER_DATA=false
|
||||
|
@ -520,6 +553,7 @@ services:
|
|||
# LDAP_DEFAULT_DOMAIN : 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
|
||||
# example :
|
||||
#- LDAP_DEFAULT_DOMAIN=
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
# ==== LOGOUT TIMER, probably does not work yet ====
|
||||
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue