From f5f04f824fadff0c3e99b1fa755276b24d01b8a1 Mon Sep 17 00:00:00 2001
From: nicrausaz <n.crausaz99@gmail.com>
Date: Fri, 24 May 2019 08:35:21 +0200
Subject: [PATCH] Responsable => acces total

---
 .../API/app/Helpers/AccessLevelHelper.php     | 38 ++++++++++---------
 .../app/Http/Controllers/AuthController.php   | 21 +++++-----
 2 files changed, 31 insertions(+), 28 deletions(-)

diff --git a/canapGEST/API/app/Helpers/AccessLevelHelper.php b/canapGEST/API/app/Helpers/AccessLevelHelper.php
index 6254551..579fdea 100644
--- a/canapGEST/API/app/Helpers/AccessLevelHelper.php
+++ b/canapGEST/API/app/Helpers/AccessLevelHelper.php
@@ -12,19 +12,10 @@ class AccessLevelHelper
 
     foreach ($positions as $position) {
       $job = DB::table('job')->select()->where('job_id', $position->fk_job)->first();
-
       if (isset($access_groups[$job->job_short_value])) {
-        if ($position->position_access_group == "responsables-apprentis") {
-          array_push($access_groups[$job->job_short_value], ["position" => $position->position_access_group, "role" => "responsable"]);
-        } else {
-          array_push($access_groups[$job->job_short_value], ["position" => $position->position_access_group, "role" => "formateur"]);
-        }
+        array_push($access_groups[$job->job_short_value], $position->position_access_group);
       } else {
-        if ($position->position_access_group == "responsables-apprentis") {
-          $access_groups[$job->job_short_value][0] = ["position" => $position->position_access_group, "role" => "responsable"];
-        } else {
-          $access_groups[$job->job_short_value][0] = ["position" => $position->position_access_group, "role" => "formateur"];
-        }
+        $access_groups[$job->job_short_value][0] = $position->position_access_group;
       }
     }
     return $access_groups;
@@ -55,19 +46,30 @@ class AccessLevelHelper
   {
     $default_access_groups = self::getDefaultAccessGroups();
     $user_alloweds = [];
-    $user_role = 'formateur'; // formateur
     $user_groups = explode(',', $user_groups);
 
-    foreach ($default_access_groups as $group => $accesses) {
-      foreach ($accesses as $access) {
-        if ((in_array($access['position'], $user_groups))) {
-          if (self::hasPermittedRole($access['position'], "formateur")) {
-            $user_role = "responsable";
+    if (self::isResponsible($user_groups)) {
+      $user_role = 'responsable';
+      foreach ($default_access_groups as $group => $accesses) {
+        array_push($user_alloweds, $group);
+      }
+    }
+    else {
+      $user_role = 'formateur';
+      foreach ($default_access_groups as $group => $accesses) {
+        foreach ($accesses as $access) {
+          if ((in_array($access, $user_groups))) {
+            array_push($user_alloweds, $group);
           }
-          array_push($user_alloweds, $group);
         }
       }
     }
     return ["groups" => array_unique($user_alloweds), "role" => $user_role];
   }
+
+  public static function isResponsible($user_groups)
+  {
+    $responsible_default_group = 'responsables-apprentis';
+    return in_array($responsible_default_group, $user_groups);
+  }
 }
\ No newline at end of file
diff --git a/canapGEST/API/app/Http/Controllers/AuthController.php b/canapGEST/API/app/Http/Controllers/AuthController.php
index f6b2fbc..730c987 100644
--- a/canapGEST/API/app/Http/Controllers/AuthController.php
+++ b/canapGEST/API/app/Http/Controllers/AuthController.php
@@ -20,18 +20,18 @@ class AuthController extends Controller
 
   protected function jwt($tequila_attributes)
   {
-    $user_perms = AccessLevelHelper::getUserAccess($tequila_attributes['group']);
+    $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']
+        "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'],
+      'permissions' => $user_perms["groups"],
+      "role" => $user_perms["role"],
       'iat' => time(),
       'exp' => time() + 43200
     ];
@@ -40,6 +40,7 @@ class AuthController extends Controller
 
   public function login()
   {
+    // TODO: Limit group access
     $oClient = new TequilaClient("https://tequila.epfl.ch/cgi-bin/tequila/");
     $oClient->setParam(
       array(
@@ -47,7 +48,7 @@ class AuthController extends Controller
         'service'   => "Canap-Gest",
         'language'  => "francais",
         'usecookie' => "on",
-        // 'allows'    => "categorie=epfl-guests",
+        // 'allows'    => "group=formateurs-epfl",
       )
     );
     $oClient->setRequested(
@@ -67,13 +68,13 @@ class AuthController extends Controller
       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:8443/?key=" . $_GET["key"]);
   }
 
   public function logout()
-- 
GitLab