| 1 |
<?php |
<?php |
| 2 |
// $Id: ldapauth.module,v 1.28 2007/08/22 23:55:21 kreaper Exp $ |
// $Id: ldapauth.module,v 1.1.4.14.2.5 2008/04/17 04:32:12 scafmac Exp $ |
| 3 |
|
|
| 4 |
include_once('ldap_integration/ldapauth.conf.php'); |
include_once('ldap_integration/ldapauth.conf.php'); |
| 5 |
include_once('ldap_integration/libdebug.php'); |
include_once('ldap_integration/libdebug.php'); |
| 177 |
} |
} |
| 178 |
$rows[] = array( |
$rows[] = array( |
| 179 |
$row->name, |
$row->name, |
| 180 |
l(t('edit'), 'admin/settings/ldapauth/edit/'.$row->name), |
l(t('edit'), 'admin/settings/ldapauth/edit/'.$row->sid), |
| 181 |
l(t('!link_text', array('!link_text' => $link_text)), 'admin/settings/ldapauth/'.$link_comp.'/'.$row->name), |
l(t('!link_text', array('!link_text' => $link_text)), 'admin/settings/ldapauth/'.$link_comp.'/'.$row->sid), |
| 182 |
l(t('delete'), 'admin/settings/ldapauth/delete/'.$row->name) |
l(t('delete'), 'admin/settings/ldapauth/delete/'.$row->sid) |
| 183 |
); |
); |
| 184 |
} |
} |
| 185 |
$header = array( |
$header = array( |
| 192 |
return theme('table', $header, $rows); |
return theme('table', $header, $rows); |
| 193 |
} |
} |
| 194 |
|
|
| 195 |
function ldapauth_admin_deactivate($ldap_name) { |
function ldapauth_admin_deactivate() { |
| 196 |
$ldap_name = arg(4); |
if (!($sid = arg(4))) { |
| 197 |
// de-activate the config |
drupal_goto('admin/settings/ldapauth'); |
| 198 |
db_query("UPDATE {ldapauth} SET status = '%s'WHERE name = '%s'", "", $ldap_name); |
} |
| 199 |
drupal_set_message(t('LDAP Configuration %config has been de-activated.', array('%config' => $ldap_name))); |
if ($row = db_fetch_object(db_query("SELECT name FROM {ldapauth} WHERE sid = %d", $sid))) { |
| 200 |
watchdog('ldap', t('ldapauth: ldap config %config de-activated.', array('%config' => $ldap_name))); |
$form['sid'] = array('#type' => 'hidden', '#value' => $sid); |
| 201 |
drupal_goto('admin/settings/ldapauth'); |
return confirm_form( |
| 202 |
|
$form, |
| 203 |
|
t('Are you sure you want to de-activate the ldap configration named <em><strong>%server</strong></em>?', array('%server'=>$row->name)), |
| 204 |
|
'admin/settings/ldapauth', |
| 205 |
|
'', |
| 206 |
|
t('De-activate'), |
| 207 |
|
t('Cancel') |
| 208 |
|
); |
| 209 |
|
} |
| 210 |
|
else { |
| 211 |
|
drupal_set_message(t('No such LDAP configuration.')); |
| 212 |
|
drupal_goto('admin/settings/ldapauth'); |
| 213 |
|
} |
| 214 |
} |
} |
| 215 |
|
|
| 216 |
|
function ldapauth_admin_deactivate_submit($form_id, $form_values) { |
| 217 |
|
if ($sid = $form_values['sid']) { |
| 218 |
|
// de-activate the config |
| 219 |
|
db_query("UPDATE {ldapauth} SET status = %d WHERE sid = %d", 0, $sid); |
| 220 |
|
drupal_set_message(t('LDAP Configuration has been de-activated.')); |
| 221 |
|
watchdog('ldap', t('ldapauth: ldap config %config de-activated.', array('%config' => $sid))); |
| 222 |
|
} |
| 223 |
|
drupal_goto('admin/settings/ldapauth'); |
| 224 |
|
} |
| 225 |
|
|
| 226 |
function ldapauth_admin_activate() { |
function ldapauth_admin_activate() { |
| 227 |
$ldap_name = arg(4); |
if (!($sid = arg(4))) { |
| 228 |
// activate the config |
drupal_goto('admin/settings/ldapauth'); |
| 229 |
db_query("UPDATE {ldapauth} SET status = '%d'WHERE name = '%s'", "1", $ldap_name); |
} |
| 230 |
drupal_set_message(t('LDAP Configuration %config has been activated.', array('%config' => $ldap_name))); |
if ($row = db_fetch_object(db_query("SELECT name FROM {ldapauth} WHERE sid = %d", $sid))) { |
| 231 |
watchdog('ldap', t('ldapauth: ldap config %config activated.', array('%config' => $ldap_name))); |
$form['sid'] = array('#type' => 'hidden', '#value' => $sid); |
| 232 |
|
return confirm_form( |
| 233 |
|
$form, |
| 234 |
|
t('Are you sure you want to activate the ldap configration named <em><strong>%server</strong></em>?', array('%server'=>$row->name)), |
| 235 |
|
'admin/settings/ldapauth', |
| 236 |
|
'', |
| 237 |
|
t('Activate'), |
| 238 |
|
t('Cancel') |
| 239 |
|
); |
| 240 |
|
} |
| 241 |
|
else { |
| 242 |
|
drupal_set_message(t('No such LDAP configuration.')); |
| 243 |
|
drupal_goto('admin/settings/ldapauth'); |
| 244 |
|
} |
| 245 |
|
} |
| 246 |
|
|
| 247 |
|
function ldapauth_admin_activate_submit($form_id, $form_values) { |
| 248 |
|
if ($sid = $form_values['sid']) { |
| 249 |
|
// activate the config |
| 250 |
|
db_query("UPDATE {ldapauth} SET status = %d WHERE sid = %d", 1, $sid); |
| 251 |
|
drupal_set_message(t('LDAP Configuration %config has been activated.')); |
| 252 |
|
watchdog('ldap', t('ldapauth: ldap config %config activated.', array('%config' => $sid))); |
| 253 |
|
} |
| 254 |
drupal_goto('admin/settings/ldapauth'); |
drupal_goto('admin/settings/ldapauth'); |
| 255 |
} |
} |
| 256 |
|
|
| 404 |
|
|
| 405 |
function ldapauth_admin_form() { |
function ldapauth_admin_form() { |
| 406 |
|
|
| 407 |
$ldap_name = arg(4); |
$sid = arg(4); |
| 408 |
if ((arg(3) == "edit") && ($ldap_name != NULL)) { |
if ((arg(3) == "edit") && is_numeric($sid)) { |
| 409 |
$edit = db_fetch_array(db_query("SELECT * FROM {ldapauth} WHERE name = '%s'", $ldap_name)); |
$edit = db_fetch_array(db_query("SELECT * FROM {ldapauth} WHERE sid = %d", $sid)); |
| 410 |
$form['old-name'] = array( |
$form['sid'] = array( |
| 411 |
'#type' => 'hidden', |
'#type' => 'hidden', |
| 412 |
'#value' => $ldap_name, |
'#value' => $sid, |
| 413 |
); |
); |
| 414 |
} |
} |
| 415 |
|
|
| 564 |
} |
} |
| 565 |
else { |
else { |
| 566 |
if ( !$form_values['bindpw_clear'] && $form_values['bindpw']) { |
if ( !$form_values['bindpw_clear'] && $form_values['bindpw']) { |
| 567 |
db_query("UPDATE {ldapauth} SET name = '%s', server = '%s', port = '%d', tls = '%d', encrypted = '%d', basedn = '%s', user_attr = '%s', mail_attr = '%s', binddn = '%s', bindpw = '%s', bindpw_clear = '%d' WHERE name = '%s'", $form_values['name'], $form_values['server'], $form_values['port'], $form_values['tls'], $form_values['encrypted'], $form_values['basedn'], trim($form_values['user_attr']), trim($form_values['mail_attr']), $form_values['binddn'], $form_values['bindpw'], $form_values['bindpw_clear'], $form_values['old-name']); |
db_query("UPDATE {ldapauth} SET name = '%s', server = '%s', port = '%d', tls = '%d', encrypted = '%d', basedn = '%s', user_attr = '%s', mail_attr = '%s', binddn = '%s', bindpw = '%s', bindpw_clear = '%d' WHERE sid = %d", $form_values['name'], $form_values['server'], $form_values['port'], $form_values['tls'], $form_values['encrypted'], $form_values['basedn'], trim($form_values['user_attr']), trim($form_values['mail_attr']), $form_values['binddn'], $form_values['bindpw'], $form_values['bindpw_clear'], $form_values['sid']); |
| 568 |
} |
} |
| 569 |
else { |
else { |
| 570 |
// set the clear password switch |
// set the clear password switch |
| 571 |
db_query("UPDATE {ldapauth} SET name = '%s', server = '%s', port = '%d', tls = '%d', encrypted = '%d', basedn = '%s', user_attr = '%s', mail_attr = '%s', binddn = '%s', bindpw_clear = '%d' WHERE name = '%s'", $form_values['name'], $form_values['server'], $form_values['port'], $form_values['tls'], $form_values['encrypted'], $form_values['basedn'], trim($form_values['user_attr']), trim($form_values['mail_attr']), $form_values['binddn'], $form_values['bindpw_clear'], $form_values['old-name']); |
db_query("UPDATE {ldapauth} SET name = '%s', server = '%s', port = '%d', tls = '%d', encrypted = '%d', basedn = '%s', user_attr = '%s', mail_attr = '%s', binddn = '%s', bindpw_clear = '%d' WHERE sid = %d", $form_values['name'], $form_values['server'], $form_values['port'], $form_values['tls'], $form_values['encrypted'], $form_values['basedn'], trim($form_values['user_attr']), trim($form_values['mail_attr']), $form_values['binddn'], $form_values['bindpw_clear'], $form_values['sid']); |
| 572 |
} |
} |
| 573 |
drupal_set_message(t('LDAP Configuration %config has been updated.', array('%config' => $form_values['name']))); |
drupal_set_message(t('LDAP Configuration %config has been updated.', array('%config' => $form_values['name']))); |
| 574 |
watchdog('ldap', t('ldapauth: ldap config %config updated.', array('%config' => $form_values['name']))); |
watchdog('ldap', t('ldapauth: ldap config %config updated.', array('%config' => $form_values['name']))); |
| 578 |
} |
} |
| 579 |
|
|
| 580 |
function ldapauth_admin_delete() { |
function ldapauth_admin_delete() { |
| 581 |
|
if (!($sid = arg(4))) { |
|
$ldap_name = arg(4); |
|
|
|
|
|
if (!$ldap_name) { |
|
| 582 |
drupal_goto('admin/settings/ldapauth'); |
drupal_goto('admin/settings/ldapauth'); |
| 583 |
} |
} |
| 584 |
if ($result = db_fetch_object(db_query("SELECT name FROM {ldapauth} WHERE name = '%s'", $ldap_name))) { |
if ($result = db_fetch_object(db_query("SELECT name FROM {ldapauth} WHERE sid = %d", $sid))) { |
| 585 |
|
$form['sid'] = array('#type' => 'hidden', '#value' => $sid); |
| 586 |
return confirm_form( |
return confirm_form( |
| 587 |
array(), |
$form, |
| 588 |
t('Are you sure you want to delete the ldap configration named <em><strong>%server</strong></em>?', array('%server'=>$ldap_name)), |
t('Are you sure you want to delete the ldap configration named <em><strong>%server</strong></em>?', array('%server'=>$result->name)), |
| 589 |
'admin/settings/ldapauth', |
'admin/settings/ldapauth', |
| 590 |
t('<p>This action cannot be undone.</p>'), |
t('<p>This action cannot be undone.</p>'), |
| 591 |
t('Delete'), |
t('Delete'), |
| 593 |
); |
); |
| 594 |
} |
} |
| 595 |
else { |
else { |
| 596 |
drupal_set_message(t('No such LDAP config: %config', array('%config' => $ldap_name))); |
drupal_set_message(t('No such LDAP configuration.')); |
| 597 |
drupal_goto('admin/settings/ldapauth'); |
drupal_goto('admin/settings/ldapauth'); |
| 598 |
} |
} |
| 599 |
} |
} |
| 600 |
|
|
| 601 |
function ldapauth_admin_delete_submit($form_id, $form_values) { |
function ldapauth_admin_delete_submit($form_id, $form_values) { |
| 602 |
if ($form_values['confirm']) { |
if ($sid = $form_values['sid']) { |
| 603 |
db_query("DELETE FROM {ldapauth} WHERE name = '%s'", arg(4)); |
db_query("DELETE FROM {ldapauth} WHERE sid = %d", $sid); |
| 604 |
drupal_set_message(t('LDAP Configuration %config has been deleted.', array('%config' => $form_values['name']))); |
drupal_set_message(t('LDAP Configuration has been deleted.')); |
| 605 |
watchdog('ldap', t('ldapauth: ldap config %config deleted.', array('%config' => $form_values['name']))); |
watchdog('ldap', t('ldapauth: ldap config %config deleted.', array('%config' => $form_values['sid']))); |
| 606 |
} |
} |
| 607 |
return 'admin/settings/ldapauth'; |
return 'admin/settings/ldapauth'; |
| 608 |
} |
} |
| 900 |
|
|
| 901 |
function _ldapauth_user_authenticate($name, $pass) { |
function _ldapauth_user_authenticate($name, $pass) { |
| 902 |
global $user, $ldapauth_ldap; |
global $user, $ldapauth_ldap; |
| 903 |
|
|
| 904 |
|
if ($account = user_load(array('name' => $name, 'pass' => $pass, 'status' => 1))) { |
| 905 |
|
if (drupal_is_denied('mail', $account->mail)) { |
| 906 |
|
form_set_error('name', t('The name %name is registered using a reserved e-mail address and therefore could not be logged in.', array('%name' => $account->name))); |
| 907 |
|
return; |
| 908 |
|
} |
| 909 |
|
} |
| 910 |
|
|
| 911 |
// (Design decision) uid=1 (admin user) must always authenticate to local database |
// (Design decision) uid=1 (admin user) must always authenticate to local database |
| 912 |
// this user is critical for all drupal admin and upgrade operations so it is best |
// this user is critical for all drupal admin and upgrade operations so it is best |
| 913 |
// left with drupal's native authentication |
// left with drupal's native authentication |