980 lines
28 KiB
JavaScript
980 lines
28 KiB
JavaScript
var LdapConfiguration = {
|
|
refreshConfig: function() {
|
|
if($('#ldap_serverconfig_chooser option').length < 2) {
|
|
LdapConfiguration.addConfiguration(true);
|
|
return;
|
|
}
|
|
$.post(
|
|
OC.filePath('user_ldap','ajax','getConfiguration.php'),
|
|
$('#ldap_serverconfig_chooser').serialize(),
|
|
function (result) {
|
|
if(result.status === 'success') {
|
|
$.each(result.configuration, function(configkey, configvalue) {
|
|
elementID = '#'+configkey;
|
|
|
|
//deal with Checkboxes
|
|
if($(elementID).is('input[type=checkbox]')) {
|
|
if(parseInt(configvalue) === 1) {
|
|
$(elementID).attr('checked', 'checked');
|
|
} else {
|
|
$(elementID).removeAttr('checked');
|
|
}
|
|
return;
|
|
}
|
|
|
|
//On Textareas, Multi-Line Settings come as array
|
|
if($(elementID).is('textarea') && $.isArray(configvalue)) {
|
|
configvalue = configvalue.join("\n");
|
|
}
|
|
|
|
// assign the value
|
|
$('#'+configkey).val(configvalue);
|
|
});
|
|
LdapWizard.init();
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
resetDefaults: function() {
|
|
$('#ldap').find('input[type=text], input[type=number], input[type=password], textarea, select').each(function() {
|
|
if($(this).attr('id') === 'ldap_serverconfig_chooser') {
|
|
return;
|
|
}
|
|
$(this).val($(this).attr('data-default'));
|
|
});
|
|
$('#ldap').find('input[type=checkbox]').each(function() {
|
|
if($(this).attr('data-default') === 1) {
|
|
$(this).attr('checked', 'checked');
|
|
} else {
|
|
$(this).removeAttr('checked');
|
|
}
|
|
});
|
|
},
|
|
|
|
deleteConfiguration: function() {
|
|
$.post(
|
|
OC.filePath('user_ldap','ajax','deleteConfiguration.php'),
|
|
$('#ldap_serverconfig_chooser').serialize(),
|
|
function (result) {
|
|
if(result.status === 'success') {
|
|
$('#ldap_serverconfig_chooser option:selected').remove();
|
|
$('#ldap_serverconfig_chooser option:first').select();
|
|
LdapConfiguration.refreshConfig();
|
|
} else {
|
|
OC.dialogs.alert(
|
|
result.message,
|
|
t('user_ldap', 'Deletion failed')
|
|
);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
addConfiguration: function(doNotAsk) {
|
|
$.post(
|
|
OC.filePath('user_ldap','ajax','getNewServerConfigPrefix.php'),
|
|
function (result) {
|
|
if(result.status === 'success') {
|
|
if(doNotAsk) {
|
|
LdapConfiguration.resetDefaults();
|
|
} else {
|
|
OC.dialogs.confirm(
|
|
t('user_ldap', 'Take over settings from recent server configuration?'),
|
|
t('user_ldap', 'Keep settings?'),
|
|
function(keep) {
|
|
if(!keep) {
|
|
LdapConfiguration.resetDefaults();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
$('#ldap_serverconfig_chooser option:selected').removeAttr('selected');
|
|
var html = '<option value="'+result.configPrefix+'" selected="selected">'+$('#ldap_serverconfig_chooser option').length+'. Server</option>';
|
|
$('#ldap_serverconfig_chooser option:last').before(html);
|
|
LdapWizard.init();
|
|
} else {
|
|
OC.dialogs.alert(
|
|
result.message,
|
|
t('user_ldap', 'Cannot add server configuration')
|
|
);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
testConfiguration: function(onSuccess, onError) {
|
|
$.post(
|
|
OC.filePath('user_ldap','ajax','testConfiguration.php'),
|
|
$('#ldap').serialize(),
|
|
function (result) {
|
|
if (result.status === 'success') {
|
|
onSuccess(result);
|
|
} else {
|
|
onError(result);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
clearMappings: function(mappingSubject) {
|
|
$.post(
|
|
OC.filePath('user_ldap','ajax','clearMappings.php'),
|
|
'ldap_clear_mapping='+encodeURIComponent(mappingSubject),
|
|
function(result) {
|
|
if(result.status == 'success') {
|
|
OC.dialogs.info(
|
|
t('user_ldap', 'mappings cleared'),
|
|
t('user_ldap', 'Success')
|
|
);
|
|
} else {
|
|
OC.dialogs.alert(
|
|
result.message,
|
|
t('user_ldap', 'Error')
|
|
);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
};
|
|
|
|
var LdapWizard = {
|
|
checkPortInfoShown: false,
|
|
saveBlacklist: {},
|
|
userFilterGroupSelectState: 'enable',
|
|
spinner: '<img class="wizSpinner" src="'+ OC.imagePath('core', 'loading.gif') +'">',
|
|
filterModeAssisted: 0,
|
|
filterModeRaw: 1,
|
|
|
|
ajax: function(param, fnOnSuccess, fnOnError) {
|
|
$.post(
|
|
OC.filePath('user_ldap','ajax','wizard.php'),
|
|
param,
|
|
function(result) {
|
|
if(result.status == 'success') {
|
|
fnOnSuccess(result);
|
|
} else {
|
|
fnOnError(result);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
applyChanges: function (result) {
|
|
for (id in result.changes) {
|
|
LdapWizard.blacklistAdd(id);
|
|
if(id.indexOf('count') > 0) {
|
|
$('#'+id).text(result.changes[id]);
|
|
} else {
|
|
$('#'+id).val(result.changes[id]);
|
|
}
|
|
}
|
|
LdapWizard.functionalityCheck();
|
|
|
|
if($('#ldapSettings').tabs('option', 'active') == 0) {
|
|
LdapWizard.basicStatusCheck();
|
|
}
|
|
},
|
|
|
|
basicStatusCheck: function() {
|
|
//criterias to continue from the first tab
|
|
// - host, port, user filter, agent dn, password, base dn
|
|
host = $('#ldap_host').val();
|
|
port = $('#ldap_port').val();
|
|
agent = $('#ldap_dn').val();
|
|
pwd = $('#ldap_agent_password').val();
|
|
base = $('#ldap_base').val();
|
|
|
|
if((host && port && base) && ((!agent && !pwd) || (agent && pwd))) {
|
|
$('.ldap_action_continue').removeAttr('disabled');
|
|
$('#ldapSettings').tabs('option', 'disabled', []);
|
|
} else {
|
|
$('.ldap_action_continue').attr('disabled', 'disabled');
|
|
$('#ldapSettings').tabs('option', 'disabled', [1, 2, 3, 4, 5]);
|
|
}
|
|
},
|
|
|
|
|
|
blacklistAdd: function(id) {
|
|
obj = $('#'+id);
|
|
if(!(obj[0].hasOwnProperty('multiple') && obj[0]['multiple'] == true)) {
|
|
//no need to blacklist multiselect
|
|
LdapWizard.saveBlacklist[id] = true;
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
|
|
blacklistRemove: function(id) {
|
|
if(LdapWizard.saveBlacklist.hasOwnProperty(id)) {
|
|
delete LdapWizard.saveBlacklist[id];
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
|
|
checkBaseDN: function() {
|
|
host = $('#ldap_host').val();
|
|
port = $('#ldap_port').val();
|
|
user = $('#ldap_dn').val();
|
|
pass = $('#ldap_agent_password').val();
|
|
|
|
//FIXME: determine base dn with anonymous access
|
|
if(host && port && user && pass) {
|
|
param = 'action=guessBaseDN'+
|
|
'&ldap_serverconfig_chooser='+
|
|
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
|
|
|
LdapWizard.showSpinner('#ldap_base');
|
|
$('#ldap_base').prop('disabled', 'disabled');
|
|
LdapWizard.ajax(param,
|
|
function(result) {
|
|
LdapWizard.applyChanges(result);
|
|
LdapWizard.hideSpinner('#ldap_base');
|
|
if($('#ldap_base').val()) {
|
|
LdapWizard.hideInfoBox();
|
|
}
|
|
$('#ldap_base').prop('disabled', false);
|
|
},
|
|
function (result) {
|
|
LdapWizard.hideSpinner('#ldap_base');
|
|
LdapWizard.showInfoBox('Please specify a Base DN');
|
|
LdapWizard.showInfoBox('Could not determine Base DN');
|
|
$('#ldap_base').prop('disabled', false);
|
|
}
|
|
);
|
|
}
|
|
},
|
|
|
|
checkPort: function() {
|
|
host = $('#ldap_host').val();
|
|
port = $('#ldap_port').val();
|
|
|
|
if(host && !port) {
|
|
param = 'action=guessPortAndTLS'+
|
|
'&ldap_serverconfig_chooser='+
|
|
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
|
|
|
LdapWizard.showSpinner('#ldap_port');
|
|
$('#ldap_port').prop('disabled', 'disabled');
|
|
LdapWizard.ajax(param,
|
|
function(result) {
|
|
LdapWizard.applyChanges(result);
|
|
LdapWizard.hideSpinner('#ldap_port');
|
|
if($('#ldap_port').val()) {
|
|
LdapWizard.checkBaseDN();
|
|
$('#ldap_port').prop('disabled', false);
|
|
LdapWizard.hideInfoBox();
|
|
}
|
|
},
|
|
function (result) {
|
|
LdapWizard.hideSpinner('#ldap_port');
|
|
$('#ldap_port').prop('disabled', false);
|
|
LdapWizard.showInfoBox('Please specify the port');
|
|
}
|
|
);
|
|
}
|
|
},
|
|
|
|
composeFilter: function(type) {
|
|
subject = type.charAt(0).toUpperCase() + type.substr(1);
|
|
if(!$('#raw'+subject+'FilterContainer').hasClass('invisible')) {
|
|
//Raw filter editing, i.e. user defined filter, don't compose
|
|
return;
|
|
}
|
|
|
|
if(type == 'user') {
|
|
action = 'getUserListFilter';
|
|
} else if(type == 'login') {
|
|
action = 'getUserLoginFilter';
|
|
} else if(type == 'group') {
|
|
action = 'getGroupFilter';
|
|
}
|
|
|
|
param = 'action='+action+
|
|
'&ldap_serverconfig_chooser='+
|
|
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
|
|
|
LdapWizard.ajax(param,
|
|
function(result) {
|
|
LdapWizard.applyChanges(result);
|
|
if(type == 'user') {
|
|
LdapWizard.countUsers();
|
|
} else if(type == 'group') {
|
|
LdapWizard.countGroups();
|
|
LdapWizard.detectGroupMemberAssoc();
|
|
}
|
|
},
|
|
function (result) {
|
|
// error handling
|
|
}
|
|
);
|
|
},
|
|
|
|
controlBack: function() {
|
|
curTabIndex = $('#ldapSettings').tabs('option', 'active');
|
|
if(curTabIndex == 0) {
|
|
return;
|
|
}
|
|
$('#ldapSettings').tabs('option', 'active', curTabIndex - 1);
|
|
LdapWizard.controlUpdate(curTabIndex - 1);
|
|
},
|
|
|
|
controlContinue: function() {
|
|
curTabIndex = $('#ldapSettings').tabs('option', 'active');
|
|
if(curTabIndex == 3) {
|
|
return;
|
|
}
|
|
$('#ldapSettings').tabs('option', 'active', 1 + curTabIndex);
|
|
LdapWizard.controlUpdate(curTabIndex + 1);
|
|
},
|
|
|
|
controlUpdate: function(nextTabIndex) {
|
|
if(nextTabIndex == 0) {
|
|
$('.ldap_action_back').addClass('invisible');
|
|
$('.ldap_action_continue').removeClass('invisible');
|
|
} else
|
|
if(nextTabIndex == 1) {
|
|
$('.ldap_action_back').removeClass('invisible');
|
|
$('.ldap_action_continue').removeClass('invisible');
|
|
} else
|
|
if(nextTabIndex == 2) {
|
|
$('.ldap_action_continue').removeClass('invisible');
|
|
$('.ldap_action_back').removeClass('invisible');
|
|
} else
|
|
if(nextTabIndex == 3) {
|
|
//now last tab
|
|
$('.ldap_action_back').removeClass('invisible');
|
|
$('.ldap_action_continue').addClass('invisible');
|
|
}
|
|
},
|
|
|
|
_countThings: function(method) {
|
|
param = 'action='+method+
|
|
'&ldap_serverconfig_chooser='+
|
|
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
|
|
|
LdapWizard.ajax(param,
|
|
function(result) {
|
|
LdapWizard.applyChanges(result);
|
|
},
|
|
function (result) {
|
|
// error handling
|
|
}
|
|
);
|
|
},
|
|
|
|
countGroups: function() {
|
|
LdapWizard._countThings('countGroups');
|
|
},
|
|
|
|
countUsers: function() {
|
|
LdapWizard._countThings('countUsers');
|
|
},
|
|
|
|
detectGroupMemberAssoc: function() {
|
|
param = 'action=determineGroupMemberAssoc'+
|
|
'&ldap_serverconfig_chooser='+
|
|
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
|
|
|
LdapWizard.ajax(param,
|
|
function(result) {
|
|
//pure background story
|
|
},
|
|
function (result) {
|
|
// error handling
|
|
}
|
|
);
|
|
},
|
|
|
|
findAttributes: function() {
|
|
param = 'action=determineAttributes'+
|
|
'&ldap_serverconfig_chooser='+
|
|
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
|
|
|
LdapWizard.showSpinner('#ldap_loginfilter_attributes');
|
|
LdapWizard.ajax(param,
|
|
function(result) {
|
|
$('#ldap_loginfilter_attributes').find('option').remove();
|
|
for (i in result.options['ldap_loginfilter_attributes']) {
|
|
//FIXME: move HTML into template
|
|
attr = result.options['ldap_loginfilter_attributes'][i];
|
|
$('#ldap_loginfilter_attributes').append(
|
|
"<option value='"+attr+"'>"+attr+"</option>");
|
|
}
|
|
LdapWizard.hideSpinner('#ldap_loginfilter_attributes');
|
|
LdapWizard.applyChanges(result);
|
|
$('#ldap_loginfilter_attributes').multiselect('refresh');
|
|
if($('#rawLoginFilterContainer').hasClass('invisible')) {
|
|
$('#ldap_loginfilter_attributes').multiselect('enable');
|
|
}
|
|
LdapWizard.postInitLoginFilter();
|
|
},
|
|
function (result) {
|
|
//deactivate if no attributes found
|
|
$('#ldap_loginfilter_attributes').multiselect(
|
|
{noneSelectedText : 'No attributes found'});
|
|
$('#ldap_loginfilter_attributes').multiselect('disable');
|
|
LdapWizard.hideSpinner('#ldap_loginfilter_attributes');
|
|
}
|
|
);
|
|
},
|
|
|
|
findAvailableGroups: function(multisel, type) {
|
|
if(type != 'Users' && type != 'Groups') {
|
|
return false;
|
|
}
|
|
param = 'action=determineGroupsFor'+encodeURIComponent(type)+
|
|
'&ldap_serverconfig_chooser='+
|
|
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
|
|
|
LdapWizard.showSpinner('#'+multisel);
|
|
LdapWizard.ajax(param,
|
|
function(result) {
|
|
$('#'+multisel).find('option').remove();
|
|
for (i in result.options[multisel]) {
|
|
//FIXME: move HTML into template
|
|
objc = result.options[multisel][i];
|
|
$('#'+multisel).append("<option value='"+objc+"'>"+objc+"</option>");
|
|
}
|
|
LdapWizard.hideSpinner('#'+multisel);
|
|
LdapWizard.applyChanges(result);
|
|
$('#'+multisel).multiselect('refresh');
|
|
part = type.slice(0, -1);
|
|
if($('#raw' + part + 'FilterContainer').hasClass('invisible')) {
|
|
//enable only when raw filter editing is not turned on
|
|
$('#'+multisel).multiselect('enable');
|
|
}
|
|
if(type === 'Users') {
|
|
//required for initial save
|
|
filter = $('#ldap_userlist_filter').val();
|
|
if(!filter) {
|
|
LdapWizard.saveMultiSelect(multisel,
|
|
$('#'+multisel).multiselect("getChecked"));
|
|
}
|
|
LdapWizard.userFilterAvailableGroupsHasRun = true;
|
|
LdapWizard.postInitUserFilter();
|
|
}
|
|
},
|
|
function (result) {
|
|
LdapWizard.hideSpinner('#'+multisel);
|
|
$('#'+multisel).multiselect('disable');
|
|
if(type == 'Users') {
|
|
LdapWizard.userFilterAvailableGroupsHasRun = true;
|
|
LdapWizard.postInitUserFilter();
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
findObjectClasses: function(multisel, type) {
|
|
if(type != 'User' && type != 'Group') {
|
|
return false;
|
|
}
|
|
param = 'action=determine'+encodeURIComponent(type)+'ObjectClasses'+
|
|
'&ldap_serverconfig_chooser='+
|
|
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
|
|
|
LdapWizard.showSpinner('#'+multisel);
|
|
LdapWizard.ajax(param,
|
|
function(result) {
|
|
$('#'+multisel).find('option').remove();
|
|
for (i in result.options[multisel]) {
|
|
//FIXME: move HTML into template
|
|
objc = result.options[multisel][i];
|
|
$('#'+multisel).append("<option value='"+objc+"'>"+objc+"</option>");
|
|
}
|
|
LdapWizard.hideSpinner('#'+multisel);
|
|
LdapWizard.applyChanges(result);
|
|
$('#'+multisel).multiselect('refresh');
|
|
if(type === 'User') {
|
|
//required for initial save
|
|
filter = $('#ldap_userlist_filter').val();
|
|
if(!filter) {
|
|
LdapWizard.saveMultiSelect(multisel,
|
|
$('#'+multisel).multiselect("getChecked"));
|
|
}
|
|
LdapWizard.userFilterObjectClassesHasRun = true;
|
|
LdapWizard.postInitUserFilter();
|
|
}
|
|
},
|
|
function (result) {
|
|
LdapWizard.hideSpinner('#'+multisel);
|
|
if(type == 'User') {
|
|
LdapWizard.userFilterObjectClassesHasRun = true;
|
|
LdapWizard.postInitUserFilter();
|
|
}
|
|
//TODO: error handling
|
|
}
|
|
);
|
|
},
|
|
|
|
functionalityCheck: function() {
|
|
//criterias to enable the connection:
|
|
// - host, port, basedn, user filter, login filter
|
|
host = $('#ldap_host').val();
|
|
port = $('#ldap_port').val();
|
|
base = $('#ldap_base').val();
|
|
userfilter = $('#ldap_userlist_filter').val();
|
|
loginfilter = $('#ldap_login_filter').val();
|
|
|
|
//FIXME: activates a manually deactivated configuration.
|
|
if(host && port && base && userfilter && loginfilter) {
|
|
LdapWizard.updateStatusIndicator(true);
|
|
if($('#ldap_configuration_active').is(':checked')) {
|
|
return;
|
|
}
|
|
if(!LdapWizard.isConfigurationActiveControlLocked) {
|
|
//avoids a manually deactivated connection will be activated
|
|
//upon opening the admin page
|
|
$('#ldap_configuration_active').prop('checked', true);
|
|
LdapWizard.save($('#ldap_configuration_active')[0]);
|
|
}
|
|
} else {
|
|
if($('#ldap_configuration_active').is(':checked')) {
|
|
$('#ldap_configuration_active').prop('checked', false);
|
|
LdapWizard.save($('#ldap_configuration_active')[0]);
|
|
}
|
|
LdapWizard.updateStatusIndicator(false);
|
|
}
|
|
},
|
|
|
|
hideInfoBox: function() {
|
|
if(LdapWizard.checkInfoShown) {
|
|
$('#ldapWizard1 .ldapWizardInfo').addClass('invisible');
|
|
LdapWizard.checkInfoShown = false;
|
|
}
|
|
},
|
|
|
|
hideSpinner: function(id) {
|
|
$(id+' + .wizSpinner').remove();
|
|
$(id + " + button").css('display', 'inline');
|
|
},
|
|
|
|
isConfigurationActiveControlLocked: true,
|
|
|
|
init: function() {
|
|
LdapWizard.basicStatusCheck();
|
|
LdapWizard.functionalityCheck();
|
|
LdapWizard.isConfigurationActiveControlLocked = false;
|
|
},
|
|
|
|
initGroupFilter: function() {
|
|
LdapWizard.regardFilterMode('Group');
|
|
LdapWizard.findObjectClasses('ldap_groupfilter_objectclass', 'Group');
|
|
LdapWizard.findAvailableGroups('ldap_groupfilter_groups', 'Groups');
|
|
LdapWizard.countGroups();
|
|
},
|
|
|
|
/** init login filter tab section **/
|
|
|
|
initLoginFilter: function() {
|
|
LdapWizard.regardFilterMode('Login');
|
|
LdapWizard.findAttributes();
|
|
},
|
|
|
|
postInitLoginFilter: function() {
|
|
if($('#rawLoginFilterContainer').hasClass('invisible')) {
|
|
LdapWizard.composeFilter('login');
|
|
}
|
|
},
|
|
|
|
/** end of init user filter tab section **/
|
|
|
|
initMultiSelect: function(object, id, caption) {
|
|
object.multiselect({
|
|
header: false,
|
|
selectedList: 9,
|
|
noneSelectedText: caption,
|
|
click: function(event, ui) {
|
|
LdapWizard.saveMultiSelect(id,
|
|
$('#'+id).multiselect("getChecked"));
|
|
}
|
|
});
|
|
},
|
|
|
|
/** init user filter tab section **/
|
|
|
|
userFilterObjectClassesHasRun: false,
|
|
userFilterAvailableGroupsHasRun: false,
|
|
|
|
initUserFilter: function() {
|
|
LdapWizard.userFilterObjectClassesHasRun = false;
|
|
LdapWizard.userFilterAvailableGroupsHasRun = false;
|
|
LdapWizard.regardFilterMode('User');
|
|
LdapWizard.findObjectClasses('ldap_userfilter_objectclass', 'User');
|
|
LdapWizard.findAvailableGroups('ldap_userfilter_groups', 'Users');
|
|
},
|
|
|
|
postInitUserFilter: function() {
|
|
if(LdapWizard.userFilterObjectClassesHasRun
|
|
&& LdapWizard.userFilterAvailableGroupsHasRun) {
|
|
LdapWizard.composeFilter('user');
|
|
LdapWizard.countUsers();
|
|
}
|
|
},
|
|
|
|
/** end of init user filter tab section **/
|
|
|
|
onTabChange: function(event, ui) {
|
|
newTabIndex = 0;
|
|
if(ui.newTab[0].id === '#ldapWizard2') {
|
|
LdapWizard.initUserFilter();
|
|
newTabIndex = 1;
|
|
} else if(ui.newTab[0].id === '#ldapWizard3') {
|
|
LdapWizard.initLoginFilter();
|
|
newTabIndex = 2;
|
|
} else if(ui.newTab[0].id === '#ldapWizard4') {
|
|
LdapWizard.initGroupFilter();
|
|
newTabIndex = 3;
|
|
}
|
|
|
|
curTabIndex = $('#ldapSettings').tabs('option', 'active');
|
|
if(curTabIndex >= 0 && curTabIndex <= 3) {
|
|
LdapWizard.controlUpdate(newTabIndex);
|
|
}
|
|
},
|
|
|
|
processChanges: function(triggerObj) {
|
|
LdapWizard.hideInfoBox();
|
|
|
|
if(triggerObj.id == 'ldap_host'
|
|
|| triggerObj.id == 'ldap_port'
|
|
|| triggerObj.id == 'ldap_dn'
|
|
|| triggerObj.id == 'ldap_agent_password') {
|
|
LdapWizard.checkPort();
|
|
if($('#ldap_port').val()) {
|
|
//if Port is already set, check BaseDN
|
|
LdapWizard.checkBaseDN();
|
|
}
|
|
}
|
|
|
|
if(triggerObj.id == 'ldap_userlist_filter') {
|
|
LdapWizard.countUsers();
|
|
} else if(triggerObj.id == 'ldap_group_filter') {
|
|
LdapWizard.countGroups();
|
|
LdapWizard.detectGroupMemberAssoc();
|
|
}
|
|
|
|
if(triggerObj.id == 'ldap_loginfilter_username'
|
|
|| triggerObj.id == 'ldap_loginfilter_email') {
|
|
LdapWizard.composeFilter('login');
|
|
}
|
|
|
|
if($('#ldapSettings').tabs('option', 'active') == 0) {
|
|
LdapWizard.basicStatusCheck();
|
|
LdapWizard.functionalityCheck();
|
|
}
|
|
},
|
|
|
|
regardFilterMode: function(subject) {
|
|
param = 'action=get'+encodeURIComponent(subject)+'FilterMode'+
|
|
'&ldap_serverconfig_chooser='+
|
|
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
|
|
|
LdapWizard.ajax(param,
|
|
function(result) {
|
|
property = 'ldap' + subject + 'FilterMode';
|
|
mode = result.changes[property];
|
|
if(mode == LdapWizard.filterModeRaw
|
|
&& $('#raw'+subject+'FilterContainer').hasClass('invisible')) {
|
|
LdapWizard['toggleRaw'+subject+'Filter']();
|
|
} else if(mode == LdapWizard.filterModeAssisted
|
|
&& !$('#raw'+subject+'FilterContainer').hasClass('invisible')) {
|
|
LdapWizard['toggleRaw'+subject+'Filter']();
|
|
}
|
|
},
|
|
function (result) {
|
|
//on error case get back to default i.e. Assisted
|
|
if(!$('#raw'+subject+'FilterContainer').hasClass('invisible')) {
|
|
LdapWizard['toggleRaw'+subject+'Filter']();
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
save: function(inputObj) {
|
|
if(LdapWizard.blacklistRemove(inputObj.id)) {
|
|
return;
|
|
}
|
|
if($(inputObj).is('input[type=checkbox]')
|
|
&& !$(inputObj).is(':checked')) {
|
|
val = 0;
|
|
} else {
|
|
val = $(inputObj).val();
|
|
}
|
|
LdapWizard._save(inputObj, val);
|
|
},
|
|
|
|
saveMultiSelect: function(originalObj, resultObj) {
|
|
values = '';
|
|
for(i = 0; i < resultObj.length; i++) {
|
|
values = values + "\n" + resultObj[i].value;
|
|
}
|
|
LdapWizard._save($('#'+originalObj)[0], $.trim(values));
|
|
if(originalObj == 'ldap_userfilter_objectclass'
|
|
|| originalObj == 'ldap_userfilter_groups') {
|
|
LdapWizard.composeFilter('user');
|
|
//when user filter is changed afterwards, login filter needs to
|
|
//be adjusted, too
|
|
LdapWizard.composeFilter('login');
|
|
} else if(originalObj == 'ldap_loginfilter_attributes') {
|
|
LdapWizard.composeFilter('login');
|
|
} else if(originalObj == 'ldap_groupfilter_objectclass'
|
|
|| originalObj == 'ldap_groupfilter_groups') {
|
|
LdapWizard.composeFilter('group');
|
|
}
|
|
},
|
|
|
|
_save: function(object, value) {
|
|
param = 'cfgkey='+encodeURIComponent(object.id)+
|
|
'&cfgval='+encodeURIComponent(value)+
|
|
'&action=save'+
|
|
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
|
|
|
|
$.post(
|
|
OC.filePath('user_ldap','ajax','wizard.php'),
|
|
param,
|
|
function(result) {
|
|
if(result.status == 'success') {
|
|
LdapWizard.processChanges(object);
|
|
} else {
|
|
// alert('Oooooooooooh :(');
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
showInfoBox: function(text) {
|
|
$('#ldapWizard1 .ldapWizardInfo').text(t('user_ldap', text));
|
|
$('#ldapWizard1 .ldapWizardInfo').removeClass('invisible');
|
|
LdapWizard.checkInfoShown = true;
|
|
},
|
|
|
|
showSpinner: function(id) {
|
|
if($(id + ' + .wizSpinner').length == 0) {
|
|
$(LdapWizard.spinner).insertAfter($(id));
|
|
$(id + " + img + button").css('display', 'none');
|
|
}
|
|
},
|
|
|
|
toggleRawFilter: function(container, moc, mg, stateVar, modeKey) {
|
|
//moc = multiselect objectclass
|
|
//mg = mutliselect groups
|
|
if($(container).hasClass('invisible')) {
|
|
$(container).removeClass('invisible');
|
|
$(moc).multiselect('disable');
|
|
if($(mg).multiselect().attr('disabled') == 'disabled') {
|
|
LdapWizard[stateVar] = 'disable';
|
|
} else {
|
|
LdapWizard[stateVar] = 'enable';
|
|
}
|
|
$(mg).multiselect('disable');
|
|
LdapWizard._save({ id: modeKey }, LdapWizard.filterModeRaw);
|
|
} else {
|
|
$(container).addClass('invisible');
|
|
$(mg).multiselect(LdapWizard[stateVar]);
|
|
$(moc).multiselect('enable');
|
|
LdapWizard._save({ id: modeKey }, LdapWizard.filterModeAssisted);
|
|
if(moc.indexOf('user') >= 0) {
|
|
LdapWizard.blacklistRemove('ldap_userlist_filter');
|
|
LdapWizard.composeFilter('user');
|
|
} else {
|
|
LdapWizard.blacklistRemove('ldap_group_filter');
|
|
LdapWizard.composeFilter('group');
|
|
}
|
|
}
|
|
},
|
|
|
|
toggleRawGroupFilter: function() {
|
|
LdapWizard.blacklistRemove('ldap_group_filter');
|
|
LdapWizard.toggleRawFilter('#rawGroupFilterContainer',
|
|
'#ldap_groupfilter_objectclass',
|
|
'#ldap_groupfilter_groups',
|
|
'groupFilterGroupSelectState',
|
|
'ldapGroupFilterMode'
|
|
);
|
|
},
|
|
|
|
toggleRawLoginFilter: function() {
|
|
LdapWizard.blacklistRemove('ldap_login_filter');
|
|
container = '#rawLoginFilterContainer';
|
|
if($(container).hasClass('invisible')) {
|
|
$(container).removeClass('invisible');
|
|
action = 'disable';
|
|
property = 'disabled';
|
|
mode = LdapWizard.filterModeRaw;
|
|
} else {
|
|
$(container).addClass('invisible');
|
|
action = 'enable';
|
|
property = false;
|
|
mode = LdapWizard.filterModeAssisted;
|
|
}
|
|
$('#ldap_loginfilter_attributes').multiselect(action);
|
|
$('#ldap_loginfilter_email').prop('disabled', property);
|
|
$('#ldap_loginfilter_username').prop('disabled', property);
|
|
LdapWizard._save({ id: 'ldapLoginFilterMode' }, mode);
|
|
if(action == 'enable') {
|
|
LdapWizard.composeFilter('login');
|
|
}
|
|
},
|
|
|
|
toggleRawUserFilter: function() {
|
|
LdapWizard.blacklistRemove('ldap_userlist_filter');
|
|
LdapWizard.toggleRawFilter('#rawUserFilterContainer',
|
|
'#ldap_userfilter_objectclass',
|
|
'#ldap_userfilter_groups',
|
|
'userFilterGroupSelectState',
|
|
'ldapUserFilterMode'
|
|
);
|
|
},
|
|
|
|
updateStatusIndicator: function(isComplete) {
|
|
if(isComplete) {
|
|
LdapConfiguration.testConfiguration(
|
|
//onSuccess
|
|
function(result) {
|
|
$('.ldap_config_state_indicator').text(t('user_ldap',
|
|
'Configuration OK'
|
|
));
|
|
$('.ldap_config_state_indicator').addClass('ldap_grey');
|
|
$('.ldap_config_state_indicator_sign').removeClass('error');
|
|
$('.ldap_config_state_indicator_sign').addClass('success');
|
|
},
|
|
//onError
|
|
function(result) {
|
|
$('.ldap_config_state_indicator').text(t('user_ldap',
|
|
'Configuration incorrect'
|
|
));
|
|
$('.ldap_config_state_indicator').removeClass('ldap_grey');
|
|
$('.ldap_config_state_indicator_sign').addClass('error');
|
|
$('.ldap_config_state_indicator_sign').removeClass('success');
|
|
}
|
|
);
|
|
} else {
|
|
$('.ldap_config_state_indicator').text(t('user_ldap',
|
|
'Configuration incomplete'
|
|
));
|
|
$('.ldap_config_state_indicator').removeClass('ldap_grey');
|
|
$('.ldap_config_state_indicator_sign').removeClass('error');
|
|
$('.ldap_config_state_indicator_sign').removeClass('success');
|
|
}
|
|
}
|
|
};
|
|
|
|
$(document).ready(function() {
|
|
$('#ldapAdvancedAccordion').accordion({ heightStyle: 'content', animate: 'easeInOutCirc'});
|
|
$('#ldapSettings').tabs({ beforeActivate: LdapWizard.onTabChange });
|
|
$('.ldap_submit').button();
|
|
$('.ldap_action_test_connection').button();
|
|
$('#ldap_action_delete_configuration').button();
|
|
LdapWizard.initMultiSelect($('#ldap_userfilter_groups'),
|
|
'ldap_userfilter_groups',
|
|
t('user_ldap', 'Select groups'));
|
|
LdapWizard.initMultiSelect($('#ldap_userfilter_objectclass'),
|
|
'ldap_userfilter_objectclass',
|
|
t('user_ldap', 'Select object classes'));
|
|
LdapWizard.initMultiSelect($('#ldap_loginfilter_attributes'),
|
|
'ldap_loginfilter_attributes',
|
|
t('user_ldap', 'Select attributes'));
|
|
LdapWizard.initMultiSelect($('#ldap_groupfilter_groups'),
|
|
'ldap_groupfilter_groups',
|
|
t('user_ldap', 'Select groups'));
|
|
LdapWizard.initMultiSelect($('#ldap_groupfilter_objectclass'),
|
|
'ldap_groupfilter_objectclass',
|
|
t('user_ldap', 'Select object classes'));
|
|
$('.lwautosave').change(function() { LdapWizard.save(this); });
|
|
$('#toggleRawUserFilter').click(LdapWizard.toggleRawUserFilter);
|
|
$('#toggleRawGroupFilter').click(LdapWizard.toggleRawGroupFilter);
|
|
$('#toggleRawLoginFilter').click(LdapWizard.toggleRawLoginFilter);
|
|
LdapConfiguration.refreshConfig();
|
|
$('.ldap_action_continue').click(function(event) {
|
|
event.preventDefault();
|
|
LdapWizard.controlContinue();
|
|
});
|
|
$('.ldap_action_back').click(function(event) {
|
|
event.preventDefault();
|
|
LdapWizard.controlBack();
|
|
});
|
|
$('.ldap_action_test_connection').click(function(event){
|
|
event.preventDefault();
|
|
LdapConfiguration.testConfiguration(
|
|
//onSuccess
|
|
function(result) {
|
|
OC.dialogs.alert(
|
|
result.message,
|
|
t('user_ldap', 'Connection test succeeded')
|
|
);
|
|
},
|
|
//onError
|
|
function(result) {
|
|
OC.dialogs.alert(
|
|
result.message,
|
|
t('user_ldap', 'Connection test failed')
|
|
);
|
|
}
|
|
);
|
|
});
|
|
|
|
$('#ldap_action_delete_configuration').click(function(event) {
|
|
event.preventDefault();
|
|
OC.dialogs.confirm(
|
|
t('user_ldap', 'Do you really want to delete the current Server Configuration?'),
|
|
t('user_ldap', 'Confirm Deletion'),
|
|
function(deleteConfiguration) {
|
|
if(deleteConfiguration) {
|
|
LdapConfiguration.deleteConfiguration();
|
|
}
|
|
}
|
|
);
|
|
});
|
|
|
|
$('.ldap_submit').click(function(event) {
|
|
event.preventDefault();
|
|
$.post(
|
|
OC.filePath('user_ldap','ajax','setConfiguration.php'),
|
|
$('#ldap').serialize(),
|
|
function (result) {
|
|
bgcolor = $('.ldap_submit').css('background');
|
|
if (result.status === 'success') {
|
|
//the dealing with colors is a but ugly, but the jQuery version in use has issues with rgba colors
|
|
$('.ldap_submit').css('background', '#fff');
|
|
$('.ldap_submit').effect('highlight', {'color':'#A8FA87'}, 5000, function() {
|
|
$('.ldap_submit').css('background', bgcolor);
|
|
});
|
|
//update the Label in the config chooser
|
|
caption = $('#ldap_serverconfig_chooser option:selected:first').text();
|
|
pretext = '. Server: ';
|
|
caption = caption.slice(0, caption.indexOf(pretext) + pretext.length);
|
|
caption = caption + $('#ldap_host').val();
|
|
$('#ldap_serverconfig_chooser option:selected:first').text(caption);
|
|
|
|
} else {
|
|
$('.ldap_submit').css('background', '#fff');
|
|
$('.ldap_submit').effect('highlight', {'color':'#E97'}, 5000, function() {
|
|
$('.ldap_submit').css('background', bgcolor);
|
|
});
|
|
}
|
|
}
|
|
);
|
|
});
|
|
|
|
$('#ldap_action_clear_user_mappings').click(function(event) {
|
|
event.preventDefault();
|
|
LdapConfiguration.clearMappings('user');
|
|
});
|
|
|
|
$('#ldap_action_clear_group_mappings').click(function(event) {
|
|
event.preventDefault();
|
|
LdapConfiguration.clearMappings('group');
|
|
});
|
|
|
|
$('#ldap_serverconfig_chooser').change(function(event) {
|
|
value = $('#ldap_serverconfig_chooser option:selected:first').attr('value');
|
|
if(value === 'NEW') {
|
|
LdapConfiguration.addConfiguration(false);
|
|
} else {
|
|
LdapConfiguration.refreshConfig();
|
|
}
|
|
});
|
|
});
|