You are here

public function LegalLogin::submitForm in Legal 8

Same name and namespace in other branches
  1. 2.0.x 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\Form

Code

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);
}