function cas_user in CAS 6.3
Implementation of hook_user().
Delete: When a CAS user is deleted, we need to clean up the entry in {cas_user}. Insert: When a user is created, record their CAS username if provided. Load: Adds an associative array 'cas_names' to each user. The array keys are unique authentication mapping ids, with CAS usernames as the values. Update: When a user is updated, change their CAS username if provided.
2 string references to 'cas_user'
- cas_update_6301 in ./
cas.install - Migrate authmap entries to new {cas_user} table.
- cas_update_6305 in ./
cas.install - Add index on cas_user.uid
File
- ./
cas.module, line 484 - Enables users to authenticate via a Central Authentication Service (CAS) Cas will currently work if the auto registration is turned on and will create user accounts automatically.
Code
function cas_user($op, &$edit, &$account) {
if ($op == 'delete') {
db_query("DELETE FROM {cas_user} WHERE uid = %d", $account->uid);
}
elseif ($op == 'insert') {
if (!empty($edit['cas_name'])) {
db_query("INSERT INTO {cas_user} (uid, cas_name) VALUES (%d, '%s')", $account->uid, $edit['cas_name']);
}
$edit['cas_name'] = NULL;
}
elseif ($op == 'load') {
$account->cas_names = array();
$result = db_query('SELECT aid, cas_name FROM {cas_user} WHERE uid = %d', $account->uid);
while ($record = db_fetch_object($result)) {
$account->cas_names[$record->aid] = $record->cas_name;
}
$account->cas_name = reset($account->cas_names);
}
elseif ($op == 'update') {
if (!array_key_exists('cas_name', $edit)) {
// If the cas_name key is not provided, there is nothing to do.
return;
}
$cas_name = $edit['cas_name'];
// See if the user currently has any CAS names.
reset($account->cas_names);
if ($aid = key($account->cas_names)) {
// The user already has CAS username(s) set.
if (empty($cas_name)) {
// Remove a CAS username.
db_query("DELETE FROM {cas_user} WHERE uid = %d AND aid = %d", $account->uid, $aid);
}
else {
// Change a CAS username.
if ($cas_name != $account->cas_names[$aid]) {
db_query("UPDATE {cas_user} SET cas_name = '%s' WHERE aid = %d", $cas_name, $aid);
}
}
}
else {
// No current CAS usernames.
if (!empty($cas_name)) {
// Add a CAS username.
db_query("INSERT INTO {cas_user} (uid, cas_name) VALUES (%d, '%s')", $account->uid, $edit['cas_name']);
}
}
$edit['cas_name'] = NULL;
}
}