You are here

public function miniorange_samlController::saml_login in SAML SP 2.0 Single Sign On (SSO) - SAML Service Provider 8

3 calls to miniorange_samlController::saml_login()
miniorange_samlController::saml_request in src/Controller/miniorange_samlController.php
miniorange_samlController::saml_response_generator in src/Controller/miniorange_samlController.php
miniorange_samlController::test_configuration in src/Controller/miniorange_samlController.php
Test configuration callback
1 string reference to 'miniorange_samlController::saml_login'
miniorange_saml.routing.yml in ./miniorange_saml.routing.yml
miniorange_saml.routing.yml

File

src/Controller/miniorange_samlController.php, line 102
Contains \Drupal\miniorange_saml\Controller\DefaultController.

Class

miniorange_samlController
Default controller for the miniorange_saml module.

Namespace

Drupal\miniorange_saml\Controller

Code

public function saml_login($relay_state = "") {
  $base_url = Utilities::getBaseUrl();
  Utilities::is_sp_configured();
  $issuer = Utilities::getIssuer();
  $saml_login_url = $base_url . '/samllogin';
  if (empty($relay_state) || $relay_state == $saml_login_url) {
    $relay_state = $_SERVER['HTTP_REFERER'];
  }
  if (empty($relay_state) && isset($_SERVER['HTTP_HOST']) && isset($_SERVER['REQUEST_URI'])) {
    $pre = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http";
    $url = $pre . "://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
    $relay_state = $url;
  }
  if (empty($relay_state) || $relay_state == $saml_login_url) {
    $relay_state = $base_url;
  }
  $acs_url = Utilities::getAcsUrl();
  $sso_url = \Drupal::config('miniorange_saml.settings')
    ->get('miniorange_saml_idp_login_url');
  $nameid_format = \Drupal::config('miniorange_saml.settings')
    ->get('miniorange_saml_nameid_format');
  $authn_request = new MiniOrangeAuthnRequest();
  $redirect = $authn_request
    ->initiateLogin($acs_url, $sso_url, $issuer, $nameid_format, $relay_state);
  $response = new RedirectResponse($redirect);
  $response
    ->send();
  return new Response();
}