Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a27c16e434 | ||
|
|
d5be48b905 | ||
|
|
7432af67c1 | ||
|
|
24b61cf772 | ||
|
|
cc64ef903f | ||
|
|
8e3f530217 | ||
|
|
f9b272c223 | ||
|
|
f0232fb5cb | ||
|
|
f84bad13b4 | ||
|
|
b72a68705c | ||
|
|
dd6ba152a0 | ||
|
|
cb9ced756f | ||
|
|
dbf3a48b5f | ||
|
|
b5d1799f5a | ||
|
|
d4ec0cc647 | ||
|
|
21a8c7cc45 | ||
|
|
aa691b0af1 |
No files matched your search
@@ -1,5 +1,11 @@
|
||||
## Issue
|
||||
|
||||
Add these issues to elsewhere:
|
||||
- LDAP: https://github.com/wekan/wekan-ldap/issues
|
||||
- Snap: https://github.com/wekan/wekan-snap/issues
|
||||
|
||||
Other Wekan issues can be added here.
|
||||
|
||||
**Server Setup Information**:
|
||||
|
||||
* Did you test in newest Wekan?:
|
||||
|
||||
@@ -89,4 +89,3 @@ mquandalle:moment
|
||||
msavin:usercache
|
||||
wekan:wekan-ldap
|
||||
wekan:accounts-cas
|
||||
msavin:sjobs
|
||||
@@ -117,7 +117,6 @@ mquandalle:jquery-ui-drag-drop-sort@0.2.0
|
||||
mquandalle:moment@1.0.1
|
||||
mquandalle:mousetrap-bindglobal@0.0.1
|
||||
mquandalle:perfect-scrollbar@0.6.5_2
|
||||
msavin:sjobs@3.0.6
|
||||
msavin:usercache@1.0.0
|
||||
npm-bcrypt@0.9.3
|
||||
npm-mongo@2.2.33
|
||||
|
||||
@@ -1,3 +1,58 @@
|
||||
# v1.78 2018-11-20 Wekan release
|
||||
|
||||
- Update translations (de).
|
||||
|
||||
# v1.77 2018-11-20 Wekan release
|
||||
|
||||
- Update version number. Trying to get Snap automatic review working, so that
|
||||
it would accept new Wekan release.
|
||||
|
||||
# v1.76 2018-11-20 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- Add [LDAP_FULLNAME_FIELD](https://github.com/wekan/wekan-ldap/issues/10) to
|
||||
[configs](https://github.com/wekan/wekan/commit/8e3f53021775069dba125efd4b7200d0d70a1ed1)
|
||||
and other options that were not in all config files. Thanks to alkemyst and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- Fix: When saving Custom Layout, save also SMTP settings. Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions.
|
||||
|
||||
# v1.75 2018-11-20 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- Admin Panel / Layout: Hide Logo: Yes / No. This does hide Wekan logo on Login page and Board page. Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix Snap database-list-backups command](https://github.com/wekan/wekan-snap/issues/26). Thanks to WaryWolf.
|
||||
|
||||
Thanks to above GitHub users for their contributions.
|
||||
|
||||
# v1.74.1 2018-11-18 Wekan Edge release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Full Name from LDAP server via environment variable](https://github.com/wekan/wekan-ldap/pull/18).
|
||||
|
||||
Thanks to GitHub user alkemyst for contributions.
|
||||
|
||||
# v1.74 2018-11-17 Wekan release
|
||||
|
||||
- Update version number to get this released to snap. Thanks to xet7.
|
||||
|
||||
# v1.73 2018-11-17 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- Revert Improve authentication to [fix Login failure](https://github.com/wekan/wekan/issues/2004).
|
||||
|
||||
Thanks to GitHub users Broxxx3 and xet7 for their contributions.
|
||||
|
||||
# v1.72 2018-11-17 Wekan release
|
||||
|
||||
- Update translations (fi).
|
||||
|
||||
+3
-9
@@ -59,15 +59,12 @@ ARG LDAP_GROUP_FILTER_GROUP_NAME
|
||||
ARG LDAP_UNIQUE_IDENTIFIER_FIELD
|
||||
ARG LDAP_UTF8_NAMES_SLUGIFY
|
||||
ARG LDAP_USERNAME_FIELD
|
||||
ARG LDAP_FULLNAME_FIELD
|
||||
ARG LDAP_MERGE_EXISTING_USERS
|
||||
ARG LDAP_SYNC_USER_DATA
|
||||
ARG LDAP_SYNC_USER_DATA_FIELDMAP
|
||||
ARG LDAP_SYNC_GROUP_ROLES
|
||||
ARG LDAP_DEFAULT_DOMAIN
|
||||
ARG LOGOUT_WITH_TIMER
|
||||
ARG LOGOUT_IN
|
||||
ARG LOGOUT_ON_HOURS
|
||||
ARG LOGOUT_ON_MINUTES
|
||||
|
||||
# Set the environment variables (defaults where required)
|
||||
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
|
||||
@@ -130,15 +127,12 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
|
||||
LDAP_UNIQUE_IDENTIFIER_FIELD="" \
|
||||
LDAP_UTF8_NAMES_SLUGIFY=true \
|
||||
LDAP_USERNAME_FIELD="" \
|
||||
LDAP_FULLNAME_FIELD="" \
|
||||
LDAP_MERGE_EXISTING_USERS=false \
|
||||
LDAP_SYNC_USER_DATA=false \
|
||||
LDAP_SYNC_USER_DATA_FIELDMAP="" \
|
||||
LDAP_SYNC_GROUP_ROLES="" \
|
||||
LDAP_DEFAULT_DOMAIN="" \
|
||||
LOGOUT_WITH_TIMER="false" \
|
||||
LOGOUT_IN="" \
|
||||
LOGOUT_ON_HOURS="" \
|
||||
LOGOUT_ON_MINUTES=""
|
||||
LDAP_DEFAULT_DOMAIN=""
|
||||
|
||||
# Copy the app to the image
|
||||
COPY ${SRC_PATH} /home/wekan/app
|
||||
|
||||
@@ -47,6 +47,7 @@ template(name="header")
|
||||
+Template.dynamic(template=headerBar)
|
||||
|
||||
unless hideLogo
|
||||
|
||||
//-
|
||||
On sandstorm, the logo shouldn't be clickable, because we only have one
|
||||
page/document on it, and we don't want to see the home page containing
|
||||
@@ -55,8 +56,9 @@ template(name="header")
|
||||
.wekan-logo
|
||||
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
|
||||
else
|
||||
a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
|
||||
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
|
||||
unless currentSetting.hideLogo
|
||||
a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
|
||||
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
|
||||
|
||||
if appIsOffline
|
||||
+offlineWarning
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
Meteor.subscribe('user-admin');
|
||||
Meteor.subscribe('boards');
|
||||
Meteor.subscribe('setting');
|
||||
|
||||
Template.header.helpers({
|
||||
wrappedHeader() {
|
||||
return !Session.get('currentBoard');
|
||||
},
|
||||
|
||||
currentSetting() {
|
||||
return Settings.findOne();
|
||||
},
|
||||
|
||||
hideLogo() {
|
||||
return Utils.isMiniScreen() && Session.get('currentBoard');
|
||||
},
|
||||
|
||||
@@ -14,10 +14,16 @@ head
|
||||
|
||||
template(name="userFormsLayout")
|
||||
section.auth-layout
|
||||
h1.at-form-landing-logo
|
||||
img(src="{{pathFor '/wekan-logo.png'}}" alt="Wekan")
|
||||
unless currentSetting.hideLogo
|
||||
h1.at-form-landing-logo
|
||||
img(src="{{pathFor '/wekan-logo.png'}}" alt="Wekan")
|
||||
if currentSetting.hideLogo
|
||||
h1
|
||||
br
|
||||
br
|
||||
section.auth-dialog
|
||||
+Template.dynamic(template=content)
|
||||
+connectionMethod
|
||||
if isCas
|
||||
.at-form
|
||||
button#cas(class='at-btn submit' type='submit') {{casSignInLabel}}
|
||||
|
||||
@@ -6,13 +6,29 @@ const i18nTagToT9n = (i18nTag) => {
|
||||
return i18nTag;
|
||||
};
|
||||
|
||||
Template.userFormsLayout.onCreated(function() {
|
||||
Meteor.call('getDefaultAuthenticationMethod', (error, result) => {
|
||||
this.data.defaultAuthenticationMethod = new ReactiveVar(error ? undefined : result);
|
||||
});
|
||||
const validator = {
|
||||
set(obj, prop, value) {
|
||||
if (prop === 'state' && value !== 'signIn') {
|
||||
$('.at-form-authentication').hide();
|
||||
} else if (prop === 'state' && value === 'signIn') {
|
||||
$('.at-form-authentication').show();
|
||||
}
|
||||
// The default behavior to store the value
|
||||
obj[prop] = value;
|
||||
// Indicate success
|
||||
return true;
|
||||
},
|
||||
};
|
||||
|
||||
Template.userFormsLayout.onCreated(() => {
|
||||
Meteor.subscribe('setting');
|
||||
|
||||
});
|
||||
|
||||
Template.userFormsLayout.onRendered(() => {
|
||||
|
||||
AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator);
|
||||
|
||||
const i18nTag = navigator.language;
|
||||
if (i18nTag) {
|
||||
T9n.setLanguage(i18nTagToT9n(i18nTag));
|
||||
@@ -21,6 +37,11 @@ Template.userFormsLayout.onRendered(() => {
|
||||
});
|
||||
|
||||
Template.userFormsLayout.helpers({
|
||||
|
||||
currentSetting() {
|
||||
return Settings.findOne();
|
||||
},
|
||||
|
||||
languages() {
|
||||
return _.map(TAPi18n.getLanguages(), (lang, code) => {
|
||||
const tag = code;
|
||||
@@ -71,14 +92,13 @@ Template.userFormsLayout.events({
|
||||
}
|
||||
});
|
||||
},
|
||||
'click #at-btn'(event, instance) {
|
||||
'click #at-btn'(event) {
|
||||
/* All authentication method can be managed/called here.
|
||||
!! DON'T FORGET to correctly fill the fields of the user during its creation if necessary authenticationMethod : String !!
|
||||
*/
|
||||
const email = $('#at-field-username_and_email').val();
|
||||
const password = $('#at-field-password').val();
|
||||
|
||||
if (FlowRouter.getRouteName() !== 'atSignIn' || password === '') {
|
||||
const authenticationMethodSelected = $('.select-authentication').val();
|
||||
// Local account
|
||||
if (authenticationMethodSelected === 'password') {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -86,11 +106,29 @@ Template.userFormsLayout.events({
|
||||
event.preventDefault();
|
||||
event.stopImmediatePropagation();
|
||||
|
||||
Meteor.subscribe('user-authenticationMethod', email, {
|
||||
onReady() {
|
||||
return authentication.call(this, instance, email, password);
|
||||
},
|
||||
});
|
||||
const email = $('#at-field-username_and_email').val();
|
||||
const password = $('#at-field-password').val();
|
||||
|
||||
// Ldap account
|
||||
if (authenticationMethodSelected === 'ldap') {
|
||||
// Check if the user can use the ldap connection
|
||||
Meteor.subscribe('user-authenticationMethod', email, {
|
||||
onReady() {
|
||||
const user = Users.findOne();
|
||||
if (user === undefined || user.authenticationMethod === 'ldap') {
|
||||
// Use the ldap connection package
|
||||
Meteor.loginWithLDAP(email, password, function(error) {
|
||||
if (!error) {
|
||||
// Connection
|
||||
return FlowRouter.go('/');
|
||||
}
|
||||
return error;
|
||||
});
|
||||
}
|
||||
return this.stop();
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -99,33 +137,3 @@ Template.defaultLayout.events({
|
||||
Modal.close();
|
||||
},
|
||||
});
|
||||
|
||||
function authentication(instance, email, password) {
|
||||
let user = Users.findOne();
|
||||
// Authentication with password
|
||||
if (user && user.authenticationMethod === 'password') {
|
||||
$('#at-pwd-form').submit();
|
||||
// Meteor.call('logoutWithTimer', user._id, () => {});
|
||||
return this.stop();
|
||||
}
|
||||
|
||||
// If user doesn't exist, uses the default authentication method if it defined
|
||||
if (user === undefined) {
|
||||
user = {
|
||||
'authenticationMethod': instance.data.defaultAuthenticationMethod.get(),
|
||||
};
|
||||
}
|
||||
|
||||
// Authentication with LDAP
|
||||
if (user.authenticationMethod === 'ldap') {
|
||||
// Use the ldap connection package
|
||||
Meteor.loginWithLDAP(email, password, function(error) {
|
||||
if (!error) {
|
||||
// Meteor.call('logoutWithTimer', Users.findOne()._id, () => {});
|
||||
return FlowRouter.go('/');
|
||||
}
|
||||
return error;
|
||||
});
|
||||
}
|
||||
return this.stop();
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
template(name='connectionMethod')
|
||||
div.at-form-authentication
|
||||
label {{_ 'authentication-method'}}
|
||||
select.select-authentication
|
||||
each authentications
|
||||
option(value="{{value}}") {{_ value}}
|
||||
@@ -0,0 +1,34 @@
|
||||
Template.connectionMethod.onCreated(function() {
|
||||
this.authenticationMethods = new ReactiveVar([]);
|
||||
|
||||
Meteor.call('getAuthenticationsEnabled', (_, result) => {
|
||||
if (result) {
|
||||
// TODO : add a management of different languages
|
||||
// (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')})
|
||||
this.authenticationMethods.set([
|
||||
{value: 'password'},
|
||||
// Gets only the authentication methods availables
|
||||
...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})),
|
||||
]);
|
||||
}
|
||||
|
||||
// If only the default authentication available, hides the select boxe
|
||||
const content = $('.at-form-authentication');
|
||||
if (!(this.authenticationMethods.get().length > 1)) {
|
||||
content.hide();
|
||||
} else {
|
||||
content.show();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Template.connectionMethod.onRendered(() => {
|
||||
// Moves the select boxe in the first place of the at-pwd-form div
|
||||
$('.at-form-authentication').detach().prependTo('.at-pwd-form');
|
||||
});
|
||||
|
||||
Template.connectionMethod.helpers({
|
||||
authentications() {
|
||||
return Template.instance().authenticationMethods.get();
|
||||
},
|
||||
});
|
||||
@@ -134,10 +134,16 @@ template(name='announcementSettings')
|
||||
|
||||
template(name='layoutSettings')
|
||||
ul#layout-setting.setting-detail
|
||||
li.layout-form
|
||||
.title {{_ 'hide-logo'}}
|
||||
.form-group.flex
|
||||
input.form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
|
||||
span {{_ 'yes'}}
|
||||
input.form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
|
||||
span {{_ 'no'}}
|
||||
li.layout-form
|
||||
.title {{_ 'custom-product-name'}}
|
||||
.form-group
|
||||
input.form-control#product-name(type="text", placeholder="Wekan" value="{{currentSetting.productName}}")
|
||||
|
||||
li
|
||||
button.js-save-layout.primary {{_ 'save'}}
|
||||
@@ -59,6 +59,9 @@ BlazeComponent.extendComponent({
|
||||
toggleTLS() {
|
||||
$('#mail-server-tls').toggleClass('is-checked');
|
||||
},
|
||||
toggleHideLogo() {
|
||||
$('#hide-logo').toggleClass('is-checked');
|
||||
},
|
||||
switchMenu(event) {
|
||||
const target = $(event.target);
|
||||
if (!target.hasClass('active')) {
|
||||
@@ -135,11 +138,15 @@ BlazeComponent.extendComponent({
|
||||
this.setLoading(true);
|
||||
$('li').removeClass('has-error');
|
||||
|
||||
const productName = $('#product-name').val().trim();
|
||||
const hideLogoChange = ($('input[name=hideLogo]:checked').val() === 'true');
|
||||
|
||||
try {
|
||||
const productName = $('#product-name').val().trim();
|
||||
|
||||
Settings.update(Settings.findOne()._id, {
|
||||
$set: {
|
||||
productName,
|
||||
hideLogo: hideLogoChange,
|
||||
},
|
||||
});
|
||||
} catch (e) {
|
||||
@@ -148,6 +155,8 @@ BlazeComponent.extendComponent({
|
||||
this.setLoading(false);
|
||||
}
|
||||
|
||||
saveMailServerInfo();
|
||||
|
||||
},
|
||||
|
||||
sendSMTPTestEmail() {
|
||||
@@ -175,6 +184,7 @@ BlazeComponent.extendComponent({
|
||||
'click button.js-email-invite': this.inviteThroughEmail,
|
||||
'click button.js-save': this.saveMailServerInfo,
|
||||
'click button.js-send-smtp-test-email': this.sendSMTPTestEmail,
|
||||
'click a.js-toggle-hide-logo': this.toggleHideLogo,
|
||||
'click button.js-save-layout': this.saveLayout,
|
||||
}];
|
||||
},
|
||||
|
||||
@@ -191,6 +191,9 @@ services:
|
||||
# LDAP_USERNAME_FIELD : Which field contains the ldap username
|
||||
# example : LDAP_USERNAME_FIELD=username
|
||||
#- LDAP_USERNAME_FIELD=
|
||||
# LDAP_FULLNAME_FIELD : Which field contains the ldap fullname
|
||||
# example : LDAP_FULLNAME_FIELD=fullname
|
||||
#- LDAP_FULLNAME_FIELD=
|
||||
# LDAP_MERGE_EXISTING_USERS :
|
||||
# example : LDAP_MERGE_EXISTING_USERS=true
|
||||
#- LDAP_MERGE_EXISTING_USERS=false
|
||||
|
||||
@@ -41,15 +41,15 @@ services:
|
||||
- /bin/bash
|
||||
- "-c"
|
||||
- mongo --nodb --eval '
|
||||
var db;
|
||||
while (!db) {
|
||||
try {
|
||||
db = new Mongo("mongodb:27017").getDB("local");
|
||||
} catch(ex) {}
|
||||
sleep(3000);
|
||||
};
|
||||
var db;
|
||||
while (!db) {
|
||||
try {
|
||||
db = new Mongo("mongodb:27017").getDB("local");
|
||||
} catch(ex) {}
|
||||
sleep(3000);
|
||||
};
|
||||
rs.initiate({_id:"rs1",members:[{_id:0,host:"mongodb:27017"}]});
|
||||
' 1>/dev/null 2>&1 &
|
||||
' 1>/dev/null 2>&1 &
|
||||
mongod --replSet rs1
|
||||
wekan:
|
||||
image: quay.io/wekan/wekan
|
||||
@@ -213,6 +213,9 @@ services:
|
||||
# LDAP_USERNAME_FIELD : Which field contains the ldap username
|
||||
# example : LDAP_USERNAME_FIELD=username
|
||||
#- LDAP_USERNAME_FIELD=
|
||||
# LDAP_FULLNAME_FIELD : Which field contains the ldap fullname
|
||||
# example : LDAP_FULLNAME_FIELD=fullname
|
||||
#- LDAP_FULLNAME_FIELD=
|
||||
# LDAP_MERGE_EXISTING_USERS :
|
||||
# example : LDAP_MERGE_EXISTING_USERS=true
|
||||
#- LDAP_MERGE_EXISTING_USERS=false
|
||||
|
||||
+3
-12
@@ -180,6 +180,9 @@ services:
|
||||
# LDAP_USERNAME_FIELD : Which field contains the ldap username
|
||||
# example : LDAP_USERNAME_FIELD=username
|
||||
#- LDAP_USERNAME_FIELD=
|
||||
# LDAP_FULLNAME_FIELD : Which field contains the ldap fullname
|
||||
# example : LDAP_FULLNAME_FIELD=fullname
|
||||
#- LDAP_FULLNAME_FIELD=
|
||||
# LDAP_MERGE_EXISTING_USERS :
|
||||
# example : LDAP_MERGE_EXISTING_USERS=true
|
||||
#- LDAP_MERGE_EXISTING_USERS=false
|
||||
@@ -195,18 +198,6 @@ 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_WITH_TIMER : Enables or not the option logout with timer
|
||||
# example : LOGOUT_WITH_TIMER=true
|
||||
#- LOGOUT_WITH_TIMER=
|
||||
# LOGOUT_IN : The number of days
|
||||
# example : LOGOUT_IN=1
|
||||
#- LOGOUT_IN=
|
||||
# LOGOUT_ON_HOURS : The number of hours
|
||||
# example : LOGOUT_ON_HOURS=9
|
||||
#- LOGOUT_ON_HOURS=
|
||||
# LOGOUT_ON_MINUTES : The number of minutes
|
||||
# example : LOGOUT_ON_MINUTES=55
|
||||
#- LOGOUT_ON_MINUTES=
|
||||
|
||||
depends_on:
|
||||
- wekandb
|
||||
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Metoda autentizace",
|
||||
"authentication-type": "Typ autentizace",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentifizierungsmethode",
|
||||
"authentication-type": "Authentifizierungstyp",
|
||||
"custom-product-name": "Benutzerdefinierter Produktname",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Verstecke Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -618,5 +618,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "متد اعتبارسنجی",
|
||||
"authentication-type": "نوع اعتبارسنجی",
|
||||
"custom-product-name": "نام سفارشی محصول",
|
||||
"layout": "لایه"
|
||||
"layout": "لایه",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Kirjautumistapa",
|
||||
"authentication-type": "Kirjautumistyyppi",
|
||||
"custom-product-name": "Mukautettu tuotenimi",
|
||||
"layout": "Ulkoasu"
|
||||
"layout": "Ulkoasu",
|
||||
"hide-logo": "Piilota Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Méthode d'authentification",
|
||||
"authentication-type": "Type d'authentification",
|
||||
"custom-product-name": "Nom personnalisé",
|
||||
"layout": "Interface"
|
||||
"layout": "Interface",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Metodo di Autenticazione",
|
||||
"authentication-type": "Tipo Autenticazione",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Sposób autoryzacji",
|
||||
"authentication-type": "Typ autoryzacji",
|
||||
"custom-product-name": "Niestandardowa nazwa produktu",
|
||||
"layout": "Układ strony"
|
||||
"layout": "Układ strony",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+2
-1
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "认证方式",
|
||||
"authentication-type": "认证类型",
|
||||
"custom-product-name": "自定义产品名称",
|
||||
"layout": "布局"
|
||||
"layout": "布局",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
@@ -617,5 +617,6 @@
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout"
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo"
|
||||
}
|
||||
+4
-31
@@ -32,6 +32,10 @@ Settings.attachSchema(new SimpleSchema({
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
hideLogo: {
|
||||
type: Boolean,
|
||||
optional: true,
|
||||
},
|
||||
createdAt: {
|
||||
type: Date,
|
||||
denyUpdate: true,
|
||||
@@ -76,7 +80,6 @@ if (Meteor.isServer) {
|
||||
}, createdAt: now, modifiedAt: now};
|
||||
Settings.insert(defaultSetting);
|
||||
}
|
||||
|
||||
const newSetting = Settings.findOne();
|
||||
if (!process.env.MAIL_URL && newSetting.mailUrl())
|
||||
process.env.MAIL_URL = newSetting.mailUrl();
|
||||
@@ -236,35 +239,5 @@ if (Meteor.isServer) {
|
||||
cas: isCasEnabled(),
|
||||
};
|
||||
},
|
||||
|
||||
getDefaultAuthenticationMethod() {
|
||||
return process.env.DEFAULT_AUTHENTICATION_METHOD;
|
||||
},
|
||||
|
||||
// TODO: patch error : did not check all arguments during call
|
||||
logoutWithTimer(userId) {
|
||||
if (process.env.LOGOUT_WITH_TIMER) {
|
||||
Jobs.run('logOut', userId, {
|
||||
in: {
|
||||
days: process.env.LOGOUT_IN,
|
||||
},
|
||||
on: {
|
||||
hour: process.env.LOGOUT_ON_HOURS,
|
||||
minute: process.env.LOGOUT_ON_MINUTES,
|
||||
},
|
||||
priority: 1,
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Jobs.register({
|
||||
logOut(userId) {
|
||||
Meteor.users.update(
|
||||
{_id: userId},
|
||||
{$set: {'services.resume.loginTokens': []}}
|
||||
);
|
||||
this.success();
|
||||
},
|
||||
});
|
||||
}
|
||||
+4
-4
@@ -520,10 +520,10 @@ if (Meteor.isServer) {
|
||||
}
|
||||
|
||||
const disableRegistration = Settings.findOne().disableRegistration;
|
||||
if (!disableRegistration) {
|
||||
if (options.ldap) {
|
||||
user.authenticationMethod = 'ldap';
|
||||
}
|
||||
// If ldap, bypass the inviation code if the self registration isn't allowed.
|
||||
// TODO : pay attention if ldap field in the user model change to another content ex : ldap field to connection_type
|
||||
if (options.ldap || !disableRegistration) {
|
||||
user.authenticationMethod = 'ldap';
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v1.72.0",
|
||||
"version": "v1.78.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -24,17 +24,17 @@
|
||||
#---------------------------------------------
|
||||
## Optional: Integration with Matomo https://matomo.org that is installed to your server
|
||||
## The address of the server where Matomo is hosted:
|
||||
# export MATOMO_ADDRESS='https://example.com/matomo'
|
||||
export MATOMO_ADDRESS=''
|
||||
##export MATOMO_ADDRESS=https://example.com/matomo
|
||||
#export MATOMO_ADDRESS=
|
||||
## The value of the site ID given in Matomo server for Wekan
|
||||
# export MATOMO_SITE_ID='123456789'
|
||||
export MATOMO_SITE_ID=''
|
||||
# Example: export MATOMO_SITE_ID=123456789
|
||||
#export MATOMO_SITE_ID=''
|
||||
## The option do not track which enables users to not be tracked by matomo"
|
||||
# export MATOMO_DO_NOT_TRACK='false'
|
||||
export MATOMO_DO_NOT_TRACK='true'
|
||||
#Example: export MATOMO_DO_NOT_TRACK=false
|
||||
#export MATOMO_DO_NOT_TRACK=true
|
||||
## The option that allows matomo to retrieve the username:
|
||||
# export MATOMO_WITH_USERNAME='true'
|
||||
export MATOMO_WITH_USERNAME='false'
|
||||
# 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
|
||||
@@ -50,23 +50,143 @@
|
||||
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
|
||||
# OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345
|
||||
# example: export OAUTH2_CLIENT_ID=abcde12345
|
||||
export OAUTH2_CLIENT_ID=''
|
||||
#export OAUTH2_CLIENT_ID=''
|
||||
# OAuth2 Secret, for example from Rocket.Chat: Example: 54321abcde
|
||||
# example: export OAUTH2_SECRET=54321abcde
|
||||
export OAUTH2_SECRET=''
|
||||
#export OAUTH2_SECRET=''
|
||||
# OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com
|
||||
# example: export OAUTH2_SERVER_URL=https://chat.example.com
|
||||
export OAUTH2_SERVER_URL=''
|
||||
#export OAUTH2_SERVER_URL=''
|
||||
# OAuth2 Authorization Endpoint. Example: /oauth/authorize
|
||||
# example: export OAUTH2_AUTH_ENDPOINT=/oauth/authorize
|
||||
export OAUTH2_AUTH_ENDPOINT=''
|
||||
#export OAUTH2_AUTH_ENDPOINT=''
|
||||
# OAuth2 Userinfo Endpoint. Example: /oauth/userinfo
|
||||
# example: export OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
|
||||
export OAUTH2_USERINFO_ENDPOINT=''
|
||||
#export OAUTH2_USERINFO_ENDPOINT=''
|
||||
# OAuth2 Token Endpoint. Example: /oauth/token
|
||||
# example: export OAUTH2_TOKEN_ENDPOINT=/oauth/token
|
||||
export OAUTH2_TOKEN_ENDPOINT=''
|
||||
#export OAUTH2_TOKEN_ENDPOINT=''
|
||||
#---------------------------------------------
|
||||
# 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_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
|
||||
#export LDAP_AUTHENTIFICATION_USERDN=
|
||||
# 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
|
||||
# example : export LDAP_BACKGROUND_SYNC_INTERVAL=12345
|
||||
#export LDAP_BACKGROUND_SYNC_INTERVAL=100
|
||||
# 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
|
||||
# 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_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=
|
||||
# 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=
|
||||
node main.js & >> ~/repos/wekan.log
|
||||
cd ~/repos
|
||||
#done
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 175,
|
||||
appVersion = 180,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "1.72.0~2018-11-17"),
|
||||
appMarketingVersion = (defaultText = "1.78.0~2018-11-20"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
||||
@@ -362,3 +362,15 @@ Migrations.add('add-product-name', () => {
|
||||
},
|
||||
}, noValidateMulti);
|
||||
});
|
||||
|
||||
Migrations.add('add-hide-logo', () => {
|
||||
Settings.update({
|
||||
hideLogo: {
|
||||
$exists: false,
|
||||
},
|
||||
}, {
|
||||
$set: {
|
||||
hideLogo: false,
|
||||
},
|
||||
}, noValidateMulti);
|
||||
});
|
||||
@@ -1,5 +1,5 @@
|
||||
Meteor.publish('setting', () => {
|
||||
return Settings.find({}, {fields:{disableRegistration: 1, productName: 1}});
|
||||
return Settings.find({}, {fields:{disableRegistration: 1, productName: 1, hideLogo: 1}});
|
||||
});
|
||||
|
||||
Meteor.publish('mailServer', function () {
|
||||
|
||||
@@ -22,7 +22,6 @@ Meteor.publish('user-authenticationMethod', function(match) {
|
||||
check(match, String);
|
||||
return Users.find({$or: [{_id: match}, {email: match}, {username: match}]}, {
|
||||
fields: {
|
||||
'_id': 1,
|
||||
'authenticationMethod': 1,
|
||||
},
|
||||
});
|
||||
|
||||
+5
-17
@@ -3,7 +3,7 @@
|
||||
# All supported keys are defined here together with descriptions and default values
|
||||
|
||||
# list of supported keys
|
||||
keys="MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LOGOUT_WITH_TIMER, LOGOUT_IN, LOGOUT_ON_HOURS, LOGOUT_ON_MINUTES"
|
||||
keys="MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN"
|
||||
|
||||
# default values
|
||||
DESCRIPTION_MONGODB_BIND_UNIX_SOCKET="mongodb binding unix socket:\n"\
|
||||
@@ -246,6 +246,10 @@ DESCRIPTION_LDAP_USERNAME_FIELD="Which field contains the ldap username"
|
||||
DEFAULT_LDAP_USERNAME_FIELD=""
|
||||
KEY_LDAP_USERNAME_FIELD="ldap-username-field"
|
||||
|
||||
DESCRIPTION_LDAP_FULLNAME_FIELD="Which field contains the ldap fullname"
|
||||
DEFAULT_LDAP_FULLNAME_FIELD=""
|
||||
KEY_LDAP_FULLNAME_FIELD="ldap-fullname-field"
|
||||
|
||||
DESCRIPTION_LDAP_MERGE_EXISTING_USERS="ldap-merge-existing-users . Default: false"
|
||||
DEFAULT_LDAP_MERGE_EXISTING_USERS="false"
|
||||
KEY_LDAP_MERGE_EXISTING_USERS="ldap-merge-existing-users"
|
||||
@@ -265,19 +269,3 @@ KEY_LDAP_SYNC_GROUP_ROLES="ldap-sync-group-roles"
|
||||
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"
|
||||
DEFAULT_LDAP_DEFAULT_DOMAIN=""
|
||||
KEY_LDAP_DEFAULT_DOMAIN="ldap-default-domain"
|
||||
|
||||
DESCRIPTION_LOGOUT_WITH_TIMER="Enables or not the option logout with timer"
|
||||
DEFAULT_LOGOUT_WITH_TIMER="false"
|
||||
KEY_LOGOUT_WITH_TIMER="logout-with-timer"
|
||||
|
||||
DESCRIPTION_LOGOUT_IN="The number of days"
|
||||
DEFAULT_LOGOUT_IN=""
|
||||
KEY_LOGOUT_IN="logout-in"
|
||||
|
||||
DESCRIPTION_LOGOUT_ON_HOURS="The number of hours"
|
||||
DEFAULT_LOGOUT_ON_HOURS=""
|
||||
KEY_LOGOUT_ON_HOURS="logout-on-hours"
|
||||
|
||||
DESCRIPTION_LOGOUT_ON_MINUTES="The number of minutes"
|
||||
DEFAULT_LOGOUT_ON_MINUTES=""
|
||||
KEY_LOGOUT_ON_MINUTES="logout-on-minutes"
|
||||
+4
-16
@@ -227,6 +227,10 @@ echo -e "Ldap Username Field."
|
||||
echo -e "Which field contains the ldap username:"
|
||||
echo -e "\t$ snap set $SNAP_NAME LDAP_USERNAME_FIELD='username'"
|
||||
echo -e "\n"
|
||||
echo -e "Ldap Fullname Field."
|
||||
echo -e "Which field contains the ldap fullname:"
|
||||
echo -e "\t$ snap set $SNAP_NAME LDAP_FULLNAME_FIELD='fullname'"
|
||||
echo -e "\n"
|
||||
echo -e "Ldap Merge Existing Users."
|
||||
echo -e "\t$ snap set $SNAP_NAME LDAP_MERGE_EXISTING_USERS='true'"
|
||||
echo -e "\n"
|
||||
@@ -245,22 +249,6 @@ echo -e "Ldap Default Domain."
|
||||
echo -e "The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP:"
|
||||
echo -e "\t$ snap set $SNAP_NAME LDAP_DEFAULT_DOMAIN=''"
|
||||
echo -e "\n"
|
||||
echo -e "Logout with timer."
|
||||
echo -e "Enable or not the option that allows to disconnect an user after a given time:"
|
||||
echo -e "\t$ snap set $SNAP_NAME LOGOUT_WITH_TIMER='true'"
|
||||
echo -e "\n"
|
||||
echo -e "Logout in."
|
||||
echo -e "Logout in how many days:"
|
||||
echo -e "\t$ snap set $SNAP_NAME LOGOUT_IN='1'"
|
||||
echo -e "\n"
|
||||
echo -e "Logout on hours."
|
||||
echo -e "Logout in how many hours:"
|
||||
echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_HOURS='9'"
|
||||
echo -e "\n"
|
||||
echo -e "Logout on minutes."
|
||||
echo -e "Logout in how many minutes:"
|
||||
echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_MINUTES='5'"
|
||||
echo -e "\n"
|
||||
# parse config file for supported settings keys
|
||||
echo -e "wekan supports settings keys"
|
||||
echo -e "values can be changed by calling\n$ snap set $SNAP_NAME <key name>='<key value>'"
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ apps:
|
||||
plugs: [network, network-bind]
|
||||
|
||||
database-list-backups:
|
||||
command: ls -ald $SNAP_COMMON/db-backups/*
|
||||
command: ls -al $SNAP_COMMON/db-backups/
|
||||
|
||||
database-restore:
|
||||
command: mongodb-restore
|
||||
|
||||
+172
-7
@@ -20,9 +20,7 @@ function wekan_repo_check(){
|
||||
#while true; do
|
||||
wekan_repo_check
|
||||
cd .build/bundle
|
||||
#export MONGO_URL='mongodb://127.0.0.1:27019/wekantest'
|
||||
#export MONGO_URL='mongodb://127.0.0.1:27019/wekan'
|
||||
export MONGO_URL='mongodb://127.0.0.1:27019/wekantest'
|
||||
export MONGO_URL='mongodb://127.0.0.1:27019/wekan'
|
||||
# Production: https://example.com/wekan
|
||||
# Local: http://localhost:2000
|
||||
#export ipaddress=$(ifdata -pa eth0)
|
||||
@@ -30,12 +28,179 @@ function wekan_repo_check(){
|
||||
# https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
|
||||
# https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml
|
||||
export MAIL_URL='smtp://user:pass@mailserver.example.com:25/'
|
||||
#export KADIRA_OPTIONS_ENDPOINT=http://127.0.0.1:11011
|
||||
# This is local port where Wekan Node.js runs, same as below on Caddyfile settings.
|
||||
export WITH_API=true
|
||||
export KADIRA_OPTIONS_ENDPOINT=http://127.0.0.1:11011
|
||||
export PORT=2000
|
||||
#export LDAP_ENABLE=true
|
||||
# Wekan Export Board works when WITH_API=true.
|
||||
# If you disable Wekan API with false, Export Board does not work.
|
||||
export WITH_API='true'
|
||||
#---------------------------------------------
|
||||
## Optional: Integration with Matomo https://matomo.org that is installed to your server
|
||||
## The address of the server where Matomo is hosted:
|
||||
##export MATOMO_ADDRESS=https://example.com/matomo
|
||||
#export MATOMO_ADDRESS=
|
||||
## The value of the site ID given in Matomo server for Wekan
|
||||
# Example: export MATOMO_SITE_ID=123456789
|
||||
#export MATOMO_SITE_ID=''
|
||||
## The option do not track which enables users to not be tracked by matomo"
|
||||
#Example: export MATOMO_DO_NOT_TRACK=false
|
||||
#export MATOMO_DO_NOT_TRACK=true
|
||||
## 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
|
||||
# Default value: true
|
||||
export BROWSER_POLICY_ENABLED=true
|
||||
# When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside.
|
||||
# Example: export TRUSTED_URL=http://example.com
|
||||
export TRUSTED_URL=''
|
||||
# What to send to Outgoing Webhook, or leave out. Example, that includes all that are default: cardId,listId,oldListId,boardId,comment,user,card,commentId .
|
||||
# Example: export WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
|
||||
export WEBHOOKS_ATTRIBUTES=''
|
||||
#---------------------------------------------
|
||||
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
|
||||
# OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345
|
||||
# example: export OAUTH2_CLIENT_ID=abcde12345
|
||||
#export OAUTH2_CLIENT_ID=''
|
||||
# OAuth2 Secret, for example from Rocket.Chat: Example: 54321abcde
|
||||
# example: export OAUTH2_SECRET=54321abcde
|
||||
#export OAUTH2_SECRET=''
|
||||
# OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com
|
||||
# example: export OAUTH2_SERVER_URL=https://chat.example.com
|
||||
#export OAUTH2_SERVER_URL=''
|
||||
# OAuth2 Authorization Endpoint. Example: /oauth/authorize
|
||||
# example: export OAUTH2_AUTH_ENDPOINT=/oauth/authorize
|
||||
#export OAUTH2_AUTH_ENDPOINT=''
|
||||
# OAuth2 Userinfo Endpoint. Example: /oauth/userinfo
|
||||
# example: export OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
|
||||
#export OAUTH2_USERINFO_ENDPOINT=''
|
||||
# OAuth2 Token Endpoint. Example: /oauth/token
|
||||
# example: export OAUTH2_TOKEN_ENDPOINT=/oauth/token
|
||||
#export OAUTH2_TOKEN_ENDPOINT=''
|
||||
#---------------------------------------------
|
||||
# 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_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
|
||||
#export LDAP_AUTHENTIFICATION_USERDN=
|
||||
# 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
|
||||
# example : export LDAP_BACKGROUND_SYNC_INTERVAL=12345
|
||||
#export LDAP_BACKGROUND_SYNC_INTERVAL=100
|
||||
# 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
|
||||
# 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_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=
|
||||
# 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=
|
||||
node main.js
|
||||
# & >> ../../wekan.log
|
||||
# & >> ../../wekan.log
|
||||
cd ../..
|
||||
#done
|
||||
Reference in new issue
Block a user