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