function legal_login in Legal 7.2
Same name and namespace in other branches
- 5 legal.module \legal_login()
- 6.8 legal.module \legal_login()
- 6.7 legal.module \legal_login()
- 7 legal.module \legal_login()
Require registered users to accept new T&C.
1 string reference to 'legal_login'
- legal_menu in ./
legal.module - Implements hook_menu().
File
- ./
legal.module, line 572 - Module file for Legal.
Code
function legal_login($form, $constructor) {
global $language;
// Check we have all the data and there are no shenanigans.
if (!isset($_GET['token']) || !isset($_COOKIE['Drupal_visitor_legal_id']) || !is_numeric($_COOKIE['Drupal_visitor_legal_id']) || !isset($_COOKIE['Drupal_visitor_legal_hash'])) {
user_cookie_delete('legal_hash');
user_cookie_delete('legal_id');
drupal_set_message(t('Operation timed out. Please try to log in again.'));
drupal_goto();
}
$id_hash = $_COOKIE['Drupal_visitor_legal_hash'];
$uid = $_COOKIE['Drupal_visitor_legal_id'];
$token = $_GET['token'];
$result = db_select('users', 'u')
->fields('u')
->condition('uid', $uid)
->range(0, 1)
->execute()
->fetchAllAssoc('uid');
$account = array_pop($result);
// Make sure the account is real and has a last login value.
if (!isset($account->login)) {
drupal_goto();
}
// Limit how long $id_hash can be used to 1 hour.
// Timestamp and $id_hash are used to generate the authentication token.
if (REQUEST_TIME - $account->login > 3600) {
user_cookie_delete('legal_hash');
user_cookie_delete('legal_id');
drupal_goto();
}
$accept_every_login = variable_get('accept_every_login', '0');
// get last accepted version for this account
$legal_account = legal_get_accept($uid);
// if no version has been accepted yet, get version with current language revision
if (empty($legal_account['version'])) {
$conditions = legal_get_conditions($language->language);
// no conditions set yet
if (empty($conditions['conditions'])) {
return;
}
}
else {
// get version / revision of last accepted language
$conditions = legal_get_conditions($legal_account['language']);
// no conditions set yet
if (empty($conditions['conditions'])) {
return;
}
// Check latest version of T&C has been accepted.
$accepted = legal_version_check($uid, $conditions['version'], $conditions['revision'], $legal_account);
if ($accepted) {
if ($accept_every_login == 0) {
return;
}
if ($accept_every_login == 1 && isset($_SESSION['legal']['legal_login']) && $_SESSION['legal']['legal_login'] == 1) {
return;
}
}
}
$form = legal_display_fields($conditions);
$form['uid'] = array(
'#type' => 'value',
'#value' => $uid,
);
$form['token'] = array(
'#type' => 'value',
'#value' => $token,
);
$form['hash'] = array(
'#type' => 'value',
'#value' => $id_hash,
);
$form['tc_id'] = array(
'#type' => 'value',
'#value' => $conditions['tc_id'],
);
$form['version'] = array(
'#type' => 'value',
'#value' => $conditions['version'],
);
$form['revision'] = array(
'#type' => 'value',
'#value' => $conditions['revision'],
);
$form['language'] = array(
'#type' => 'value',
'#value' => $conditions['language'],
);
$form = legal_display_changes($form, $uid);
$form['save'] = array(
'#type' => 'submit',
'#value' => t('Confirm'),
);
return $form;
}