Skip to content
Snippets Groups Projects
AuthController.php 2.61 KiB
<?php

namespace App\Http\Controllers;

use Laravel\Lumen\Routing\Controller;
use Illuminate\Http\Request;
use App\Providers\TequilaClient;
use Firebase\JWT\JWT;
use App\Helpers\AccessLevelHelper;

class AuthController extends Controller
{
  private $request;
  private $oClient;

  public function __construct(Request $request)
  {
    $this->request = $request;
  }

  protected function jwt($tequila_attributes)
  {

    // DEV ndubois droits responsable
    if ($tequila_attributes["uniqueid"] == "167916") {
        // $payload["role"] = 'responsable';
        //   $tequila_attributes["group"] = $tequila_attributes["group"] . ',responsables-apprentis';
    }

    $user_perms = AccessLevelHelper::getUserAccess($tequila_attributes["group"]);
    $payload = [
      'iss' => "canap-gest",
      "tequila_data" => [
        "firstname" => $tequila_attributes["firstname"],
        "name" => $tequila_attributes["name"],
        "group" => $tequila_attributes["group"],
        "user" => $tequila_attributes["user"],
        "sciper" => $tequila_attributes["uniqueid"]
      ],
      'permissions' => $user_perms["groups"],
      "role" => $user_perms["role"],
      'iat' => time(),
      'exp' => time() + 43200
    ];



    return JWT::encode($payload, env('JWT_SECRET'));
  }

  public function login()
  {

    $oClient = new TequilaClient("https://tequila.epfl.ch/cgi-bin/tequila/");
    $oClient->setParam(
      array(
        'urlacces'  => url("/api/auth/tequilareturn"),
        'service'   => "Canap-Gest",
        'language'  => "francais",
        'usecookie' => "off"
      )
    );
    $oClient->setRequested(
      array(
        'request' => "name,firstname,uniqueid,group",
        //'require'    => "group=canap-gest-users"
        'require' => env('TEQUILA_REQUIRE_PARAMS', 'group=canap-gest-users')
      )
    );

    if (!empty($_GET['key'])) {
      $attributs = $oClient->checkUser($_GET['key']);

      if (!$attributs) {
        exit("Unknown tequila error");
      }
    } else {
      $oClient->createRequest();
      header("Location: " . $oClient->getAuthenticationUrl());
      exit;
    }
    return response()->json($this->jwt($attributs));
  }

  public function tequilareturn()
  {
    // return redirect()->to("https://canap-gest-dev.local:8080/#/?key=" . $_GET["key"]);
    // return redirect()->to("https://canap-gest.epfl.ch/#/?key=" . $_GET["key"]); // PROD
    // return redirect()->to("http://localhost:8080/#/?key=" . $_GET["key"]); // DEV
    return redirect()->to(env('TEQUILA_RETURN_URL', 'https://canap-gest.epfl.ch/#/?key=') . $_GET["key"]);
  }

  public function logout()
  {
    // $this->oClient->Logout();
  }
}