You are here

public static function miniorange_oauth_clientController::mo_oauth_client_initiateLogin in Drupal OAuth & OpenID Connect Login - OAuth2 Client SSO Login 8

2 calls to miniorange_oauth_clientController::mo_oauth_client_initiateLogin()
miniorange_oauth_clientController::miniorange_oauth_client_mologin in src/Controller/miniorange_oauth_clientController.php
miniorange_oauth_clientController::test_mo_config in src/Controller/miniorange_oauth_clientController.php

File

src/Controller/miniorange_oauth_clientController.php, line 444
Contains \Drupal\miniorange_oauth_client\Controller\DefaultController.

Class

miniorange_oauth_clientController

Namespace

Drupal\miniorange_oauth_client\Controller

Code

public static function mo_oauth_client_initiateLogin() {
  global $base_url;
  isset($_SERVER['HTTP_REFERER']) ? $redi = $_SERVER['HTTP_REFERER'] : ($redi = $base_url);
  \Drupal::configFactory()
    ->getEditable('miniorange_oauth_client.settings')
    ->set('miniorange_oauth_redirect_url', $redi)
    ->save();
  $app_name = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_auth_client_app_name');
  $client_id = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_auth_client_client_id');
  $client_secret = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_auth_client_client_secret');
  $scope = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_auth_client_scope');
  $authorizationUrl = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_auth_client_authorize_endpoint');
  $access_token_ep = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_auth_client_access_token_ep');
  $user_info_ep = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_auth_client_user_info_ep');
  if ($app_name == NULL || $client_secret == NULL || $client_id == NULL || $scope == NULL || $authorizationUrl == NULL || $access_token_ep == NULL || $user_info_ep == NULL) {
    echo '<div style="font-family:Calibri;padding:0 3%;">';
    echo '<div style="color: #a94442;background-color: #f2dede;padding: 15px;margin-bottom: 20px;text-align:center;border:1px solid #E6B3B2;font-size:18pt;"> ERROR</div><div style="color: #a94442;font-size:14pt; margin-bottom:20px;"><p><strong>Error: </strong>OAuth Server configurations could not be found.</p><p>Check your <b>OAuth Server</b> configuration.</p><p><strong>Possible Cause: </strong>OAuth Server configurations are not completed.</p></div><div style="margin:3%;display:block;text-align:center;"></div><div style="margin:3%;display:block;text-align:center;"></div>';
    exit;
    return new Response();
  }
  $callback_uri = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_auth_client_callback_uri');
  $state = base64_encode($app_name);
  if (strpos($authorizationUrl, '?') !== false) {
    $authorizationUrl = $authorizationUrl . "&client_id=" . $client_id . "&scope=" . $scope . "&redirect_uri=" . $callback_uri . "&response_type=code&state=" . $state;
  }
  else {
    $authorizationUrl = $authorizationUrl . "?client_id=" . $client_id . "&scope=" . $scope . "&redirect_uri=" . $callback_uri . "&response_type=code&state=" . $state;
  }
  if (session_status() == PHP_SESSION_NONE) {
    session_start();
  }
  $_SESSION['oauth2state'] = $state;
  $_SESSION['appname'] = $app_name;
  $response = new RedirectResponse($authorizationUrl);
  $response
    ->send();
  return new Response();
}