You are here

public function RoleLoginForm::validateForm in Multiple role login pages 8

Parameters

array $form:

FormStateInterface $form_state: Validate new login form.

Overrides FormBase::validateForm

File

src/Form/RoleLoginForm.php, line 77
Contains \Drupal\role_login_page\Form\RoleLoginForm.

Class

RoleLoginForm
Login form.

Namespace

Drupal\role_login_page\Form

Code

public function validateForm(array &$form, FormStateInterface $form_state) {
  $loginmenu_data = $this->login_settings_data;
  $roles = $loginmenu_data->roles;
  $roles = explode(',', $roles);
  $role_mismatch_error = $loginmenu_data->role_mismatch_error_text ? Html::escape($loginmenu_data->role_mismatch_error_text) : 'You do not have permissions to login through this page.';
  $invalid_credentials_error = $loginmenu_data->invalid_credentials_error_text ? Html::escape($loginmenu_data->invalid_credentials_error_text) : 'Invalid credentials.';
  $username = $form_state
    ->getValue([
    'name',
  ]);
  $password = $form_state
    ->getValue([
    'pass',
  ]);
  if ($uid = \Drupal::service("user.auth")
    ->authenticate($username, $password)) {
    if (!_role_login_page_validate_login_roles($uid, $roles)) {
      $form_state
        ->setErrorByName('name', $this
        ->t($role_mismatch_error));
    }
  }
  else {
    $form_state
      ->setErrorByName('name', $this
      ->t($invalid_credentials_error));
  }
}