2013-01-24 16:00:40 +04:00
|
|
|
var LdapConfiguration = {
|
|
|
|
refreshConfig: function() {
|
2013-01-30 05:30:24 +04:00
|
|
|
if($('#ldap_serverconfig_chooser option').length < 2) {
|
|
|
|
LdapConfiguration.addConfiguration(true);
|
|
|
|
return;
|
|
|
|
}
|
2013-01-24 16:00:40 +04:00
|
|
|
$.post(
|
|
|
|
OC.filePath('user_ldap','ajax','getConfiguration.php'),
|
|
|
|
$('#ldap_serverconfig_chooser').serialize(),
|
|
|
|
function (result) {
|
2013-04-21 00:45:17 +04:00
|
|
|
if(result.status === 'success') {
|
2013-01-24 16:00:40 +04:00
|
|
|
$.each(result.configuration, function(configkey, configvalue) {
|
|
|
|
elementID = '#'+configkey;
|
|
|
|
|
|
|
|
//deal with Checkboxes
|
|
|
|
if($(elementID).is('input[type=checkbox]')) {
|
2013-05-31 22:06:40 +04:00
|
|
|
if(parseInt(configvalue) === 1) {
|
2013-01-24 16:00:40 +04:00
|
|
|
$(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);
|
|
|
|
});
|
2013-09-27 20:30:59 +04:00
|
|
|
LdapWizard.init();
|
2013-01-24 16:00:40 +04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
},
|
|
|
|
|
|
|
|
resetDefaults: function() {
|
|
|
|
$('#ldap').find('input[type=text], input[type=number], input[type=password], textarea, select').each(function() {
|
2013-04-21 00:45:17 +04:00
|
|
|
if($(this).attr('id') === 'ldap_serverconfig_chooser') {
|
2013-01-24 16:00:40 +04:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
$(this).val($(this).attr('data-default'));
|
|
|
|
});
|
|
|
|
$('#ldap').find('input[type=checkbox]').each(function() {
|
2013-04-21 00:45:17 +04:00
|
|
|
if($(this).attr('data-default') === 1) {
|
2013-01-24 16:00:40 +04:00
|
|
|
$(this).attr('checked', 'checked');
|
|
|
|
} else {
|
|
|
|
$(this).removeAttr('checked');
|
|
|
|
}
|
|
|
|
});
|
2013-01-24 17:11:53 +04:00
|
|
|
},
|
|
|
|
|
|
|
|
deleteConfiguration: function() {
|
|
|
|
$.post(
|
|
|
|
OC.filePath('user_ldap','ajax','deleteConfiguration.php'),
|
|
|
|
$('#ldap_serverconfig_chooser').serialize(),
|
|
|
|
function (result) {
|
2013-04-21 00:45:17 +04:00
|
|
|
if(result.status === 'success') {
|
2013-01-24 17:11:53 +04:00
|
|
|
$('#ldap_serverconfig_chooser option:selected').remove();
|
|
|
|
$('#ldap_serverconfig_chooser option:first').select();
|
|
|
|
LdapConfiguration.refreshConfig();
|
|
|
|
} else {
|
|
|
|
OC.dialogs.alert(
|
|
|
|
result.message,
|
2013-01-25 01:47:25 +04:00
|
|
|
t('user_ldap', 'Deletion failed')
|
2013-01-24 17:11:53 +04:00
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
2013-01-30 05:30:24 +04:00
|
|
|
},
|
|
|
|
|
|
|
|
addConfiguration: function(doNotAsk) {
|
|
|
|
$.post(
|
|
|
|
OC.filePath('user_ldap','ajax','getNewServerConfigPrefix.php'),
|
|
|
|
function (result) {
|
2013-04-21 00:45:17 +04:00
|
|
|
if(result.status === 'success') {
|
2013-01-30 05:30:24 +04:00
|
|
|
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);
|
2013-09-27 20:30:59 +04:00
|
|
|
LdapWizard.init();
|
2013-01-30 05:30:24 +04:00
|
|
|
} else {
|
|
|
|
OC.dialogs.alert(
|
|
|
|
result.message,
|
|
|
|
t('user_ldap', 'Cannot add server configuration')
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
2013-05-08 19:47:07 +04:00
|
|
|
},
|
|
|
|
|
|
|
|
clearMappings: function(mappingSubject) {
|
|
|
|
$.post(
|
|
|
|
OC.filePath('user_ldap','ajax','clearMappings.php'),
|
|
|
|
'ldap_clear_mapping='+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')
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
2013-01-24 16:00:40 +04:00
|
|
|
}
|
2013-07-31 23:21:02 +04:00
|
|
|
};
|
2013-01-24 16:00:40 +04:00
|
|
|
|
2013-09-27 20:30:59 +04:00
|
|
|
var LdapWizard = {
|
|
|
|
checkPortInfoShown: false,
|
2013-09-30 01:53:14 +04:00
|
|
|
saveBlacklist: {},
|
2013-10-08 20:27:36 +04:00
|
|
|
userFilterGroupSelectState: 'enable',
|
2013-10-17 15:05:14 +04:00
|
|
|
spinner: '<img class="wizSpinner" src="'+ OC.imagePath('core', 'loading.gif') +'">',
|
2013-09-27 20:30:59 +04:00
|
|
|
|
|
|
|
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) {
|
2013-10-04 18:33:37 +04:00
|
|
|
if(!$.isArray(result.changes[id])) {
|
|
|
|
//no need to blacklist multiselect
|
|
|
|
LdapWizard.saveBlacklist[id] = true;
|
|
|
|
}
|
2013-10-08 20:27:36 +04:00
|
|
|
if(id.indexOf('count') > 0) {
|
|
|
|
$('#'+id).text(result.changes[id]);
|
|
|
|
} else {
|
|
|
|
$('#'+id).val(result.changes[id]);
|
|
|
|
}
|
2013-09-27 20:30:59 +04:00
|
|
|
}
|
2013-10-10 21:37:12 +04:00
|
|
|
LdapWizard.functionalityCheck();
|
2013-10-17 22:57:19 +04:00
|
|
|
|
|
|
|
if($('#ldapSettings').tabs('option', 'active') == 0) {
|
|
|
|
LdapWizard.basicStatusCheck();
|
|
|
|
}
|
2013-09-27 20:30:59 +04:00
|
|
|
},
|
|
|
|
|
2013-10-17 20:33:58 +04:00
|
|
|
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 && agent && pwd && base) {
|
|
|
|
$('.ldap_action_continue').removeAttr('disabled');
|
2013-10-17 20:55:02 +04:00
|
|
|
$('#ldapSettings').tabs('option', 'disabled', []);
|
2013-10-17 20:33:58 +04:00
|
|
|
} else {
|
|
|
|
$('.ldap_action_continue').attr('disabled', 'disabled');
|
2013-10-17 20:55:02 +04:00
|
|
|
$('#ldapSettings').tabs('option', 'disabled', [1, 2, 3, 4, 5]);
|
2013-10-17 20:33:58 +04:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2013-09-30 01:53:14 +04:00
|
|
|
checkBaseDN: function() {
|
|
|
|
host = $('#ldap_host').val();
|
2013-10-10 21:37:12 +04:00
|
|
|
port = $('#ldap_port').val();
|
2013-09-30 01:53:14 +04:00
|
|
|
user = $('#ldap_dn').val();
|
|
|
|
pass = $('#ldap_agent_password').val();
|
|
|
|
|
2013-10-10 21:37:12 +04:00
|
|
|
if(host && port && user && pass) {
|
2013-09-30 01:53:14 +04:00
|
|
|
param = 'action=guessBaseDN'+
|
|
|
|
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
|
|
|
|
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.showSpinner('#ldap_base');
|
2013-09-30 01:53:14 +04:00
|
|
|
LdapWizard.ajax(param,
|
|
|
|
function(result) {
|
|
|
|
LdapWizard.applyChanges(result);
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.hideSpinner('#ldap_base');
|
2013-09-30 01:53:14 +04:00
|
|
|
if($('#ldap_base').val()) {
|
2013-10-04 18:33:37 +04:00
|
|
|
$('#ldap_base').removeClass('invisible');
|
2013-09-30 01:53:14 +04:00
|
|
|
LdapWizard.hideInfoBox();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
function (result) {
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.hideSpinner('#ldap_base');
|
2013-10-04 18:33:37 +04:00
|
|
|
$('#ldap_base').removeClass('invisible');
|
2013-09-30 01:53:14 +04:00
|
|
|
LdapWizard.showInfoBox('Please specify a port');
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2013-09-27 20:30:59 +04:00
|
|
|
checkPort: function() {
|
|
|
|
host = $('#ldap_host').val();
|
|
|
|
user = $('#ldap_dn').val();
|
|
|
|
pass = $('#ldap_agent_password').val();
|
|
|
|
|
|
|
|
if(host && user && pass) {
|
|
|
|
param = 'action=guessPortAndTLS'+
|
|
|
|
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
|
|
|
|
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.showSpinner('#ldap_port');
|
2013-09-27 20:30:59 +04:00
|
|
|
LdapWizard.ajax(param,
|
|
|
|
function(result) {
|
|
|
|
LdapWizard.applyChanges(result);
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.hideSpinner('#ldap_port');
|
2013-09-27 20:30:59 +04:00
|
|
|
if($('#ldap_port').val()) {
|
2013-10-10 21:37:12 +04:00
|
|
|
LdapWizard.checkBaseDN();
|
2013-10-04 18:33:37 +04:00
|
|
|
$('#ldap_port').removeClass('invisible');
|
2013-09-30 01:53:14 +04:00
|
|
|
LdapWizard.hideInfoBox();
|
2013-09-27 20:30:59 +04:00
|
|
|
}
|
|
|
|
},
|
|
|
|
function (result) {
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.hideSpinner('#ldap_port');
|
2013-10-04 18:33:37 +04:00
|
|
|
$('#ldap_port').removeClass('invisible');
|
2013-09-30 01:53:14 +04:00
|
|
|
LdapWizard.showInfoBox('Please specify the BaseDN');
|
2013-09-27 20:30:59 +04:00
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2013-10-08 20:27:36 +04:00
|
|
|
composeFilter: function(type) {
|
|
|
|
if(type == 'user') {
|
|
|
|
action = 'getUserListFilter';
|
2013-10-09 01:47:57 +04:00
|
|
|
} else if(type == 'login') {
|
|
|
|
action = 'getUserLoginFilter';
|
2013-10-10 00:00:36 +04:00
|
|
|
} else if(type == 'group') {
|
|
|
|
action = 'getGroupFilter';
|
2013-10-08 20:27:36 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
param = 'action='+action+
|
|
|
|
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
|
|
|
|
|
|
|
|
LdapWizard.ajax(param,
|
|
|
|
function(result) {
|
|
|
|
LdapWizard.applyChanges(result);
|
2013-10-10 00:00:36 +04:00
|
|
|
if(type == 'user') {
|
|
|
|
LdapWizard.countUsers();
|
|
|
|
} else if(type == 'group') {
|
|
|
|
LdapWizard.countGroups();
|
2013-10-10 03:21:05 +04:00
|
|
|
LdapWizard.detectGroupMemberAssoc();
|
2013-10-10 00:00:36 +04:00
|
|
|
}
|
2013-10-08 20:27:36 +04:00
|
|
|
},
|
|
|
|
function (result) {
|
|
|
|
// error handling
|
|
|
|
}
|
|
|
|
);
|
|
|
|
},
|
|
|
|
|
2013-10-17 20:33:58 +04:00
|
|
|
controlBack: function() {
|
|
|
|
curTabIndex = $('#ldapSettings').tabs('option', 'active');
|
|
|
|
if(curTabIndex == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
$('#ldapSettings').tabs('option', 'active', curTabIndex - 1);
|
2013-10-24 20:21:02 +04:00
|
|
|
LdapWizard.controlUpdate(curTabIndex - 1);
|
2013-10-17 20:33:58 +04:00
|
|
|
},
|
|
|
|
|
|
|
|
controlContinue: function() {
|
|
|
|
curTabIndex = $('#ldapSettings').tabs('option', 'active');
|
|
|
|
if(curTabIndex == 3) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
$('#ldapSettings').tabs('option', 'active', 1 + curTabIndex);
|
2013-10-24 20:21:02 +04:00
|
|
|
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) {
|
2013-10-17 20:33:58 +04:00
|
|
|
//now last tab
|
|
|
|
$('.ldap_action_back').removeClass('invisible');
|
2013-10-24 20:21:02 +04:00
|
|
|
$('.ldap_action_continue').addClass('invisible');
|
2013-10-17 20:33:58 +04:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2013-10-10 00:00:36 +04:00
|
|
|
_countThings: function(method) {
|
|
|
|
param = 'action='+method+
|
2013-10-08 20:27:36 +04:00
|
|
|
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
|
|
|
|
|
|
|
|
LdapWizard.ajax(param,
|
|
|
|
function(result) {
|
|
|
|
LdapWizard.applyChanges(result);
|
|
|
|
},
|
|
|
|
function (result) {
|
|
|
|
// error handling
|
|
|
|
}
|
|
|
|
);
|
|
|
|
},
|
|
|
|
|
2013-10-10 00:00:36 +04:00
|
|
|
countGroups: function() {
|
|
|
|
LdapWizard._countThings('countGroups');
|
|
|
|
},
|
|
|
|
|
|
|
|
countUsers: function() {
|
|
|
|
LdapWizard._countThings('countUsers');
|
|
|
|
},
|
|
|
|
|
2013-10-10 03:21:05 +04:00
|
|
|
detectGroupMemberAssoc: function() {
|
|
|
|
param = 'action=determineGroupMemberAssoc'+
|
|
|
|
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
|
|
|
|
|
|
|
|
LdapWizard.ajax(param,
|
|
|
|
function(result) {
|
|
|
|
//pure background story
|
|
|
|
},
|
|
|
|
function (result) {
|
|
|
|
// error handling
|
|
|
|
}
|
|
|
|
);
|
|
|
|
},
|
|
|
|
|
2013-10-09 01:47:57 +04:00
|
|
|
findAttributes: function() {
|
|
|
|
param = 'action=determineAttributes'+
|
|
|
|
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
|
|
|
|
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.showSpinner('#ldap_loginfilter_attributes');
|
2013-10-09 01:47:57 +04:00
|
|
|
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>");
|
|
|
|
}
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.hideSpinner('#ldap_loginfilter_attributes');
|
2013-10-09 01:47:57 +04:00
|
|
|
LdapWizard.applyChanges(result);
|
|
|
|
$('#ldap_loginfilter_attributes').multiselect('refresh');
|
|
|
|
$('#ldap_loginfilter_attributes').multiselect('enable');
|
|
|
|
},
|
|
|
|
function (result) {
|
|
|
|
//deactivate if no attributes found
|
|
|
|
$('#ldap_loginfilter_attributes').multiselect(
|
|
|
|
{noneSelectedText : 'No attributes found'});
|
|
|
|
$('#ldap_loginfilter_attributes').multiselect('disable');
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.hideSpinner('#ldap_loginfilter_attributes');
|
2013-10-09 01:47:57 +04:00
|
|
|
}
|
|
|
|
);
|
|
|
|
},
|
|
|
|
|
2013-10-10 00:00:36 +04:00
|
|
|
findAvailableGroups: function(multisel, type) {
|
|
|
|
if(type != 'Users' && type != 'Groups') {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
param = 'action=determineGroupsFor'+type+
|
2013-10-04 20:11:44 +04:00
|
|
|
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
|
|
|
|
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.showSpinner('#'+multisel);
|
2013-10-04 20:11:44 +04:00
|
|
|
LdapWizard.ajax(param,
|
|
|
|
function(result) {
|
2013-10-10 00:00:36 +04:00
|
|
|
$('#'+multisel).find('option').remove();
|
|
|
|
for (i in result.options[multisel]) {
|
2013-10-04 20:11:44 +04:00
|
|
|
//FIXME: move HTML into template
|
2013-10-10 00:00:36 +04:00
|
|
|
objc = result.options[multisel][i];
|
|
|
|
$('#'+multisel).append("<option value='"+objc+"'>"+objc+"</option>");
|
2013-10-04 20:11:44 +04:00
|
|
|
}
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.hideSpinner('#'+multisel);
|
2013-10-04 20:11:44 +04:00
|
|
|
LdapWizard.applyChanges(result);
|
2013-10-10 00:00:36 +04:00
|
|
|
$('#'+multisel).multiselect('refresh');
|
|
|
|
$('#'+multisel).multiselect('enable');
|
2013-10-04 20:11:44 +04:00
|
|
|
},
|
|
|
|
function (result) {
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.hideSpinner('#'+multisel);
|
2013-10-10 00:00:36 +04:00
|
|
|
$('#'+multisel).multiselect('disable');
|
2013-10-04 20:11:44 +04:00
|
|
|
}
|
|
|
|
);
|
|
|
|
},
|
|
|
|
|
2013-10-10 00:00:36 +04:00
|
|
|
findObjectClasses: function(multisel, type) {
|
|
|
|
if(type != 'User' && type != 'Group') {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
param = 'action=determine'+type+'ObjectClasses'+
|
2013-10-04 18:33:37 +04:00
|
|
|
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
|
|
|
|
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.showSpinner('#'+multisel);
|
2013-10-04 18:33:37 +04:00
|
|
|
LdapWizard.ajax(param,
|
|
|
|
function(result) {
|
2013-10-10 00:00:36 +04:00
|
|
|
$('#'+multisel).find('option').remove();
|
|
|
|
for (i in result.options[multisel]) {
|
2013-10-04 18:33:37 +04:00
|
|
|
//FIXME: move HTML into template
|
2013-10-10 00:00:36 +04:00
|
|
|
objc = result.options[multisel][i];
|
|
|
|
$('#'+multisel).append("<option value='"+objc+"'>"+objc+"</option>");
|
2013-10-04 18:33:37 +04:00
|
|
|
}
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.hideSpinner('#'+multisel);
|
2013-10-04 18:33:37 +04:00
|
|
|
LdapWizard.applyChanges(result);
|
2013-10-10 00:00:36 +04:00
|
|
|
$('#'+multisel).multiselect('refresh');
|
2013-10-04 18:33:37 +04:00
|
|
|
},
|
|
|
|
function (result) {
|
2013-10-17 15:05:14 +04:00
|
|
|
LdapWizard.hideSpinner('#'+multisel);
|
2013-10-04 18:33:37 +04:00
|
|
|
//TODO: error handling
|
|
|
|
}
|
|
|
|
);
|
|
|
|
},
|
|
|
|
|
2013-10-10 21:37:12 +04:00
|
|
|
functionalityCheck: function() {
|
|
|
|
//criterias to enable the connection:
|
|
|
|
// - host, port, user filter, login filter
|
|
|
|
host = $('#ldap_host').val();
|
|
|
|
port = $('#ldap_port').val();
|
|
|
|
userfilter = $('#ldap_dn').val();
|
|
|
|
loginfilter = $('#ldap_agent_password').val();
|
|
|
|
|
|
|
|
//FIXME: activates a manually deactivated configuration.
|
|
|
|
if(host && port && userfilter && loginfilter) {
|
|
|
|
if($('#ldap_configuration_active').is(':checked')) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
$('#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]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2013-09-30 01:53:14 +04:00
|
|
|
hideInfoBox: function() {
|
|
|
|
if(LdapWizard.checkInfoShown) {
|
2013-10-04 18:33:37 +04:00
|
|
|
$('#ldapWizard1 .ldapWizardInfo').addClass('invisible');
|
2013-09-30 01:53:14 +04:00
|
|
|
LdapWizard.checkInfoShown = false;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2013-10-17 15:05:14 +04:00
|
|
|
hideSpinner: function(id) {
|
|
|
|
$(id+' + .wizSpinner').remove();
|
|
|
|
$(id + " + button").css('display', 'inline');
|
|
|
|
},
|
|
|
|
|
2013-09-27 20:30:59 +04:00
|
|
|
init: function() {
|
|
|
|
if($('#ldap_port').val()) {
|
2013-10-04 18:33:37 +04:00
|
|
|
$('#ldap_port').removeClass('invisible');
|
|
|
|
}
|
2013-10-17 22:57:19 +04:00
|
|
|
if($('#ldap_base').val()) {
|
|
|
|
$('#ldap_base').removeClass('invisible');
|
|
|
|
}
|
2013-10-17 20:33:58 +04:00
|
|
|
LdapWizard.basicStatusCheck();
|
2013-10-04 18:33:37 +04:00
|
|
|
},
|
|
|
|
|
2013-10-10 00:00:36 +04:00
|
|
|
initGroupFilter: function() {
|
|
|
|
LdapWizard.findObjectClasses('ldap_groupfilter_objectclass', 'Group');
|
|
|
|
LdapWizard.findAvailableGroups('ldap_groupfilter_groups', 'Groups');
|
2013-10-10 21:37:12 +04:00
|
|
|
LdapWizard.composeFilter('group');
|
2013-10-10 00:00:36 +04:00
|
|
|
LdapWizard.countGroups();
|
|
|
|
},
|
|
|
|
|
2013-10-09 01:47:57 +04:00
|
|
|
initLoginFilter: function() {
|
|
|
|
LdapWizard.findAttributes();
|
2013-10-10 21:37:12 +04:00
|
|
|
LdapWizard.composeFilter('login');
|
2013-10-09 01:47:57 +04:00
|
|
|
},
|
|
|
|
|
2013-10-04 20:11:44 +04:00
|
|
|
initMultiSelect: function(object, id, caption) {
|
|
|
|
object.multiselect({
|
|
|
|
header: false,
|
|
|
|
selectedList: 9,
|
|
|
|
noneSelectedText: caption,
|
|
|
|
click: function(event, ui) {
|
|
|
|
LdapWizard.saveMultiSelect(id,
|
|
|
|
$('#'+id).multiselect("getChecked"));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
2013-10-04 18:33:37 +04:00
|
|
|
initUserFilter: function() {
|
2013-10-10 00:00:36 +04:00
|
|
|
LdapWizard.findObjectClasses('ldap_userfilter_objectclass', 'User');
|
|
|
|
LdapWizard.findAvailableGroups('ldap_userfilter_groups', 'Users');
|
2013-10-10 21:37:12 +04:00
|
|
|
LdapWizard.composeFilter('user');
|
2013-10-08 20:27:36 +04:00
|
|
|
LdapWizard.countUsers();
|
2013-10-04 18:33:37 +04:00
|
|
|
},
|
|
|
|
|
|
|
|
onTabChange: function(event, ui) {
|
2013-10-24 20:21:02 +04:00
|
|
|
newTabIndex = 0;
|
2013-10-04 18:33:37 +04:00
|
|
|
if(ui.newTab[0].id === '#ldapWizard2') {
|
|
|
|
LdapWizard.initUserFilter();
|
2013-10-24 20:21:02 +04:00
|
|
|
newTabIndex = 1;
|
2013-10-09 01:47:57 +04:00
|
|
|
} else if(ui.newTab[0].id === '#ldapWizard3') {
|
|
|
|
LdapWizard.initLoginFilter();
|
2013-10-24 20:21:02 +04:00
|
|
|
newTabIndex = 2;
|
2013-10-10 00:00:36 +04:00
|
|
|
} else if(ui.newTab[0].id === '#ldapWizard4') {
|
|
|
|
LdapWizard.initGroupFilter();
|
2013-10-24 20:21:02 +04:00
|
|
|
newTabIndex = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
curTabIndex = $('#ldapSettings').tabs('option', 'active');
|
|
|
|
if(curTabIndex >= 0 && curTabIndex <= 3) {
|
|
|
|
LdapWizard.controlUpdate(newTabIndex);
|
2013-09-27 20:30:59 +04:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2013-09-30 01:53:14 +04:00
|
|
|
processChanges: function(triggerObj) {
|
|
|
|
if(triggerObj.id == 'ldap_host'
|
|
|
|
|| triggerObj.id == 'ldap_port'
|
|
|
|
|| triggerObj.id == 'ldap_dn'
|
|
|
|
|| triggerObj.id == 'ldap_agent_password') {
|
|
|
|
LdapWizard.checkPort();
|
2013-10-10 21:37:12 +04:00
|
|
|
if($('#ldap_port').val()) {
|
|
|
|
//if Port is already set, check BaseDN
|
|
|
|
LdapWizard.checkBaseDN();
|
|
|
|
}
|
2013-09-30 01:53:14 +04:00
|
|
|
}
|
2013-10-08 20:27:36 +04:00
|
|
|
|
|
|
|
if(triggerObj.id == 'ldap_userlist_filter') {
|
|
|
|
LdapWizard.countUsers();
|
2013-10-10 00:00:36 +04:00
|
|
|
} else if(triggerObj.id == 'ldap_group_filter') {
|
|
|
|
LdapWizard.countGroups();
|
2013-10-10 03:21:05 +04:00
|
|
|
LdapWizard.detectGroupMemberAssoc();
|
2013-10-08 20:27:36 +04:00
|
|
|
}
|
2013-10-09 01:47:57 +04:00
|
|
|
|
|
|
|
if(triggerObj.id == 'ldap_loginfilter_username'
|
|
|
|
|| triggerObj.id == 'ldap_loginfilter_email') {
|
|
|
|
LdapWizard.composeFilter('login');
|
|
|
|
}
|
2013-10-17 20:33:58 +04:00
|
|
|
|
|
|
|
if($('#ldapSettings').tabs('option', 'active') == 0) {
|
|
|
|
LdapWizard.basicStatusCheck();
|
|
|
|
}
|
2013-09-30 01:53:14 +04:00
|
|
|
},
|
|
|
|
|
2013-09-27 20:30:59 +04:00
|
|
|
save: function(inputObj) {
|
2013-09-30 01:53:14 +04:00
|
|
|
if(LdapWizard.saveBlacklist.hasOwnProperty(inputObj.id)) {
|
|
|
|
delete LdapWizard.saveBlacklist[inputObj.id];
|
|
|
|
return;
|
|
|
|
}
|
2013-10-09 01:47:57 +04:00
|
|
|
if($(inputObj).is('input[type=checkbox]')
|
|
|
|
&& !$(inputObj).is(':checked')) {
|
|
|
|
val = 0;
|
|
|
|
} else {
|
|
|
|
val = $(inputObj).val();
|
|
|
|
}
|
|
|
|
LdapWizard._save(inputObj, val);
|
2013-10-04 18:33:37 +04:00
|
|
|
},
|
|
|
|
|
|
|
|
saveMultiSelect: function(originalObj, resultObj) {
|
|
|
|
values = '';
|
|
|
|
for(i = 0; i < resultObj.length; i++) {
|
|
|
|
values = values + "\n" + resultObj[i].value;
|
|
|
|
}
|
|
|
|
LdapWizard._save($('#'+originalObj)[0], $.trim(values));
|
2013-10-08 20:27:36 +04:00
|
|
|
if(originalObj == 'ldap_userfilter_objectclass'
|
|
|
|
|| originalObj == 'ldap_userfilter_groups') {
|
|
|
|
LdapWizard.composeFilter('user');
|
2013-10-10 21:37:12 +04:00
|
|
|
//when user filter is changed afterwards, login filter needs to
|
|
|
|
//be adjusted, too
|
|
|
|
LdapWizard.composeFilter('login');
|
2013-10-09 01:47:57 +04:00
|
|
|
} else if(originalObj == 'ldap_loginfilter_attributes') {
|
|
|
|
LdapWizard.composeFilter('login');
|
2013-10-10 00:00:36 +04:00
|
|
|
} else if(originalObj == 'ldap_groupfilter_objectclass'
|
|
|
|
|| originalObj == 'ldap_groupfilter_groups') {
|
|
|
|
LdapWizard.composeFilter('group');
|
2013-10-08 20:27:36 +04:00
|
|
|
}
|
2013-10-04 18:33:37 +04:00
|
|
|
},
|
|
|
|
|
|
|
|
_save: function(object, value) {
|
|
|
|
param = 'cfgkey='+object.id+
|
|
|
|
'&cfgval='+value+
|
2013-09-27 20:30:59 +04:00
|
|
|
'&action=save'+
|
|
|
|
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
|
|
|
|
|
|
|
|
$.post(
|
|
|
|
OC.filePath('user_ldap','ajax','wizard.php'),
|
|
|
|
param,
|
|
|
|
function(result) {
|
|
|
|
if(result.status == 'success') {
|
2013-10-04 18:33:37 +04:00
|
|
|
LdapWizard.processChanges(object);
|
2013-09-27 20:30:59 +04:00
|
|
|
} else {
|
|
|
|
// alert('Oooooooooooh :(');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
2013-09-30 01:53:14 +04:00
|
|
|
},
|
|
|
|
|
|
|
|
showInfoBox: function(text) {
|
|
|
|
$('#ldapWizard1 .ldapWizardInfo').text(t('user_ldap', text));
|
2013-10-04 18:33:37 +04:00
|
|
|
$('#ldapWizard1 .ldapWizardInfo').removeClass('invisible');
|
2013-09-30 01:53:14 +04:00
|
|
|
LdapWizard.checkInfoShown = true;
|
2013-10-08 20:27:36 +04:00
|
|
|
},
|
|
|
|
|
2013-10-17 15:05:14 +04:00
|
|
|
showSpinner: function(id) {
|
2013-10-17 22:57:19 +04:00
|
|
|
if($(id + ' + .wizSpinner').length == 0) {
|
|
|
|
$(LdapWizard.spinner).insertAfter($(id));
|
|
|
|
$(id + " + img + button").css('display', 'none');
|
|
|
|
}
|
2013-10-17 15:05:14 +04:00
|
|
|
},
|
|
|
|
|
2013-10-10 00:00:36 +04:00
|
|
|
toggleRawFilter: function(container, moc, mg, stateVar) {
|
|
|
|
if($(container).hasClass('invisible')) {
|
|
|
|
$(container).removeClass('invisible');
|
|
|
|
$(moc).multiselect('disable');
|
|
|
|
if($(mg).multiselect().attr('disabled') == 'disabled') {
|
|
|
|
LdapWizard[stateVar] = 'disable';
|
2013-10-08 20:27:36 +04:00
|
|
|
} else {
|
2013-10-10 00:00:36 +04:00
|
|
|
LdapWizard[stateVar] = 'enable';
|
2013-10-08 20:27:36 +04:00
|
|
|
}
|
2013-10-10 00:00:36 +04:00
|
|
|
$(mg).multiselect('disable');
|
2013-10-08 20:27:36 +04:00
|
|
|
} else {
|
2013-10-10 00:00:36 +04:00
|
|
|
$(container).addClass('invisible');
|
|
|
|
$(mg).multiselect(LdapWizard[stateVar]);
|
|
|
|
$(moc).multiselect('enable');
|
2013-10-08 20:27:36 +04:00
|
|
|
}
|
2013-10-10 00:00:36 +04:00
|
|
|
},
|
|
|
|
|
|
|
|
toggleRawGroupFilter: function() {
|
|
|
|
LdapWizard.toggleRawFilter('#rawGroupFilterContainer',
|
|
|
|
'#ldap_groupfilter_objectclass',
|
|
|
|
'#ldap_groupfilter_groups',
|
|
|
|
'groupFilterGroupSelectState'
|
|
|
|
);
|
|
|
|
},
|
|
|
|
|
|
|
|
toggleRawUserFilter: function() {
|
|
|
|
LdapWizard.toggleRawFilter('#rawUserFilterContainer',
|
|
|
|
'#ldap_userfilter_objectclass',
|
|
|
|
'#ldap_userfilter_groups',
|
|
|
|
'userFilterGroupSelectState'
|
|
|
|
);
|
2013-09-27 20:30:59 +04:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2012-04-23 20:57:06 +04:00
|
|
|
$(document).ready(function() {
|
2013-02-02 02:48:22 +04:00
|
|
|
$('#ldapAdvancedAccordion').accordion({ heightStyle: 'content', animate: 'easeInOutCirc'});
|
2013-10-04 18:33:37 +04:00
|
|
|
$('#ldapSettings').tabs({ beforeActivate: LdapWizard.onTabChange });
|
2013-01-30 06:34:51 +04:00
|
|
|
$('#ldap_submit').button();
|
2012-07-26 20:10:53 +04:00
|
|
|
$('#ldap_action_test_connection').button();
|
2013-01-24 17:11:53 +04:00
|
|
|
$('#ldap_action_delete_configuration').button();
|
2013-10-04 20:11:44 +04:00
|
|
|
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'));
|
2013-10-09 01:47:57 +04:00
|
|
|
LdapWizard.initMultiSelect($('#ldap_loginfilter_attributes'),
|
|
|
|
'ldap_loginfilter_attributes',
|
|
|
|
t('user_ldap', 'Select attributes'));
|
2013-10-10 00:00:36 +04:00
|
|
|
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'));
|
2013-09-27 20:30:59 +04:00
|
|
|
$('.lwautosave').change(function() { LdapWizard.save(this); });
|
2013-10-08 20:27:36 +04:00
|
|
|
$('#toggleRawUserFilter').click(LdapWizard.toggleRawUserFilter);
|
2013-10-10 00:00:36 +04:00
|
|
|
$('#toggleRawGroupFilter').click(LdapWizard.toggleRawGroupFilter);
|
2013-01-24 16:00:40 +04:00
|
|
|
LdapConfiguration.refreshConfig();
|
2013-10-17 20:33:58 +04:00
|
|
|
$('.ldap_action_continue').click(function(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
LdapWizard.controlContinue();
|
|
|
|
});
|
|
|
|
$('.ldap_action_back').click(function(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
LdapWizard.controlBack();
|
|
|
|
});
|
2012-07-26 20:10:53 +04:00
|
|
|
$('#ldap_action_test_connection').click(function(event){
|
|
|
|
event.preventDefault();
|
|
|
|
$.post(
|
|
|
|
OC.filePath('user_ldap','ajax','testConfiguration.php'),
|
|
|
|
$('#ldap').serialize(),
|
|
|
|
function (result) {
|
2013-04-21 00:45:17 +04:00
|
|
|
if (result.status === 'success') {
|
2012-07-26 20:10:53 +04:00
|
|
|
OC.dialogs.alert(
|
|
|
|
result.message,
|
2013-01-25 01:47:25 +04:00
|
|
|
t('user_ldap', 'Connection test succeeded')
|
2012-07-26 20:10:53 +04:00
|
|
|
);
|
|
|
|
} else {
|
|
|
|
OC.dialogs.alert(
|
|
|
|
result.message,
|
2013-01-25 01:47:25 +04:00
|
|
|
t('user_ldap', 'Connection test failed')
|
2012-07-26 20:10:53 +04:00
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
});
|
2013-01-18 04:23:15 +04:00
|
|
|
|
2013-01-24 17:11:53 +04:00
|
|
|
$('#ldap_action_delete_configuration').click(function(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
OC.dialogs.confirm(
|
2013-01-25 01:47:25 +04:00
|
|
|
t('user_ldap', 'Do you really want to delete the current Server Configuration?'),
|
|
|
|
t('user_ldap', 'Confirm Deletion'),
|
2013-01-24 17:11:53 +04:00
|
|
|
function(deleteConfiguration) {
|
|
|
|
if(deleteConfiguration) {
|
|
|
|
LdapConfiguration.deleteConfiguration();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2013-01-20 21:02:44 +04:00
|
|
|
$('#ldap_submit').click(function(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
$.post(
|
|
|
|
OC.filePath('user_ldap','ajax','setConfiguration.php'),
|
|
|
|
$('#ldap').serialize(),
|
|
|
|
function (result) {
|
2013-01-30 06:34:51 +04:00
|
|
|
bgcolor = $('#ldap_submit').css('background');
|
2013-04-21 00:45:17 +04:00
|
|
|
if (result.status === 'success') {
|
2013-01-30 06:34:51 +04:00
|
|
|
//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);
|
|
|
|
});
|
2013-08-15 18:10:49 +04:00
|
|
|
//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);
|
|
|
|
|
2013-01-30 06:34:51 +04:00
|
|
|
} else {
|
|
|
|
$('#ldap_submit').css('background', '#fff');
|
|
|
|
$('#ldap_submit').effect('highlight', {'color':'#E97'}, 5000, function() {
|
|
|
|
$('#ldap_submit').css('background', bgcolor);
|
|
|
|
});
|
2013-01-20 21:02:44 +04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2013-05-08 19:47:07 +04:00
|
|
|
$('#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');
|
|
|
|
});
|
|
|
|
|
2013-01-18 04:23:15 +04:00
|
|
|
$('#ldap_serverconfig_chooser').change(function(event) {
|
|
|
|
value = $('#ldap_serverconfig_chooser option:selected:first').attr('value');
|
2013-04-21 00:45:17 +04:00
|
|
|
if(value === 'NEW') {
|
2013-01-30 05:30:24 +04:00
|
|
|
LdapConfiguration.addConfiguration(false);
|
2013-01-18 04:23:15 +04:00
|
|
|
} else {
|
2013-01-24 16:00:40 +04:00
|
|
|
LdapConfiguration.refreshConfig();
|
2013-01-18 04:23:15 +04:00
|
|
|
}
|
|
|
|
});
|
2013-08-18 13:02:08 +04:00
|
|
|
});
|