function gauth_account_save in Google Auth 7
Same name and namespace in other branches
- 7.2 gauth.module \gauth_account_save()
Save an account.
@returns a account array
Same account array reflects the changes
Parameters
array $account: Account array that needs to be saved If you want to create a new account omit the id field in the array If you want to update existing account do have the id field
3 calls to gauth_account_save()
- gauth_account_edit_form_submit in ./
gauth.admin.inc - Submit handler for adding a new account to google auth accounts.
- gauth_response_handler in ./
gauth.module - Function to handle authentication and response from google.
- gauth_user_services_user_account_create in gauth_user/
gauth_user.pages.inc - Function creates a service account of the specified type.
File
- ./
gauth.module, line 368 - Google Auth Api for drupal.
Code
function gauth_account_save(&$account) {
global $user;
if (isset($account['id'])) {
$fields = array(
'id' => $account['id'],
'uid' => isset($account['uid']) ? $account['uid'] : $user->uid,
);
if (isset($_SESSION['gauth_account_id']) && isset($account['access_token']) && $_SESSION['gauth_account_id'] == $account['id']) {
$fields['access_token'] = $account['access_token'];
$fields['is_authenticated'] = TRUE;
}
else {
if (isset($account['name'])) {
$fields['name'] = check_plain($account['name']);
}
$old_account = gauth_account_load($account['id'], FALSE);
$is_authenticated = $old_account['is_authenticated'];
if (isset($account['client_id'])) {
$fields['client_id'] = check_plain($account['client_id']);
if ($is_authenticated && $old_account['client_id'] != $account['client_id']) {
$is_authenticated = FALSE;
}
}
if (isset($account['client_secret'])) {
$fields['client_secret'] = check_plain($account['client_secret']);
if ($is_authenticated && $old_account['client_secret'] != $account['client_secret']) {
$is_authenticated = FALSE;
}
}
if (isset($account['developer_key'])) {
$fields['developer_key'] = check_plain($account['developer_key']);
if ($is_authenticated && $old_account['developer_key'] != $account['developer_key']) {
$is_authenticated = FALSE;
}
}
if (isset($account['services'])) {
if (is_array($account['services'])) {
$account['services'] = implode(",", $account['services']);
}
$fields['services'] = check_plain($account['services']);
if ($is_authenticated && $old_account['services'] != $account['services']) {
$is_authenticated = FALSE;
}
}
if (isset($account['access_type'])) {
$fields['access_type'] = check_plain($account['access_type']);
if ($is_authenticated && $old_account['access_type'] != $account['access_type']) {
$is_authenticated = FALSE;
}
}
$fields['is_authenticated'] = $is_authenticated;
}
// Let other modules modify the account before saving existing account.
foreach (module_implements('gauth_account_update') as $module) {
$function = $module . '_gauth_account_update';
$function($fields, gauth_account_load($fields['id'], FALSE));
}
if (drupal_write_record('gauth_accounts', $fields, 'id') == SAVED_UPDATED) {
return $fields;
}
else {
return FALSE;
}
}
else {
if (!isset($account['name'])) {
return array(
'is_error' => TRUE,
'message' => 'Name is required for creating new account',
);
}
if (!isset($account['client_id'])) {
return array(
'is_error' => TRUE,
'message' => 'Client Id can\'t be Null',
);
}
if (!isset($account['client_secret'])) {
return array(
'is_error' => TRUE,
'message' => 'Client Secret can\'t be Null',
);
}
if (!isset($account['developer_key'])) {
return array(
'is_error' => TRUE,
'message' => 'Developer Key can\'t be Null',
);
}
$fields = array(
'name' => check_plain($account['name']),
'developer_key' => check_plain($account['developer_key']),
'client_id' => check_plain($account['client_id']),
'client_secret' => check_plain($account['client_secret']),
'access_type' => check_plain($account['access_type']),
'uid' => $user->uid,
);
if (is_array($account['services'])) {
$account['services'] = implode(",", $account['services']);
}
$fields['services'] = check_plain($account['services']);
$accounts = gauth_account_load(NULL, TRUE, array(
'name',
));
$accounts = array_keys($accounts);
if (in_array($account['name'], $accounts)) {
return array(
'is_error' => TRUE,
'message' => 'Name is already in use. Please choose a unique name for the account',
);
}
// Let other modules modify the account before saving new account.
module_invoke_all('gauth_account_insert', $fields);
if (drupal_write_record('gauth_accounts', $fields) == SAVED_NEW) {
return $fields;
}
else {
return FALSE;
}
}
}