public function LegalLogin::submitForm in Legal 2.0.x
Same name and namespace in other branches
- 8 src/Form/LegalLogin.php \Drupal\legal\Form\LegalLogin::submitForm()
Form submission handler.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Overrides FormInterface::submitForm
File
- src/
Form/ LegalLogin.php, line 185
Class
- LegalLogin
- After login display new T&Cs to user and require that they are agreed to.
Namespace
Drupal\legal\FormCode
public function submitForm(array &$form, FormStateInterface $form_state) {
user_cookie_delete('legal_hash');
user_cookie_delete('legal_id');
$values = $form_state
->getValues();
$user = $this->user;
$redirect = '/user/' . $values['uid'];
$config = $this
->config('legal.settings');
if (!empty($_GET['destination'])) {
$redirect = $_GET['destination'];
}
$form_state
->setRedirectUrl(Url::fromUserInput($redirect));
// Option to require user to accept T&Cs on every login.
if ($config
->get('accept_every_login') == '1') {
// Set flag that user has accepted T&Cs again.
$request = \Drupal::request();
$session = $request
->getSession();
$session
->set('legal_login', TRUE);
// Get last accepted version for this account.
$legal_account = legal_get_accept($values['uid']);
$already_accepted = legal_version_check($values['uid'], $values['version'], $values['revision'], $legal_account);
// If already accepted just update the time.
if ($already_accepted) {
$accepted = Accepted::load($legal_account['legal_id']);
$accepted
->set("accepted", time());
$accepted
->save();
}
else {
legal_save_accept($values['version'], $values['revision'], $values['language'], $values['uid']);
}
}
else {
legal_save_accept($values['version'], $values['revision'], $values['language'], $values['uid']);
}
$this
->logger('legal')
->notice('%name accepted T&C version %tc_id.', [
'%name' => $user
->get('name')
->getString(),
'%tc_id' => $values['tc_id'],
]);
// User has new permissions, so we clear their menu cache.
\Drupal::cache('menu')
->delete($values['uid']);
// Log user in.
user_login_finalize($user);
}