From 3549f7db49f94e6fd8ccadc152c7e9b546d4559e Mon Sep 17 00:00:00 2001
From: nicrausaz <n.crausaz99@gmail.com>
Date: Wed, 8 May 2019 14:45:39 +0200
Subject: [PATCH] Retours & page d'erreur

---
 .../Http/Controllers/ApplicantsController.php |  14 +++++------
 .../Http/Controllers/CommentsController.php   |   8 +++---
 .../app/Http/Controllers/FilesController.php  |   2 +-
 .../Http/Controllers/MarkersController.php    |  23 +++---------------
 .../Http/Controllers/PositionsController.php  |  12 ++++-----
 .../app/Http/Controllers/StatusController.php |   4 +--
 canapGEST/Documentation/journal_travail.xlsx  | Bin 13394 -> 13434 bytes
 canapGEST/Site/src/plugins/axios.js           |   3 +++
 canapGEST/Site/src/router/index.js            |   4 +--
 canapGEST/Site/src/views/ErrorView.vue        |  13 +++++-----
 10 files changed, 34 insertions(+), 49 deletions(-)

diff --git a/canapGEST/API/app/Http/Controllers/ApplicantsController.php b/canapGEST/API/app/Http/Controllers/ApplicantsController.php
index 9cd0c3e..93ad260 100644
--- a/canapGEST/API/app/Http/Controllers/ApplicantsController.php
+++ b/canapGEST/API/app/Http/Controllers/ApplicantsController.php
@@ -74,10 +74,10 @@ class ApplicantsController extends Controller
           ->get();
         }
       } else {
-        return abort(403, lang::get('http.unauthorized'));
+        return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
       }
     } else {
-      return abort(404, lang::get('http.notfound'));
+      return response()->json(['error' => 404, 'message' => lang::get('http.notfound')], 404);
     }
   }
 
@@ -90,12 +90,12 @@ class ApplicantsController extends Controller
       $data = AccessLevelHelper::hasPermittedRole($this->user_role, 'formateur') ? $this->getOne($id, true) : $this->getOne($id, false);
 
       if ($data['personal_data'] == null) {
-        return abort(403, lang::get('http.unauthorized'));
+        return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
       } else {
         return response()->json($data, 200);
       }
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -108,7 +108,7 @@ class ApplicantsController extends Controller
       DB::table('applicant')->where('applicant_id', $id)->delete();
       return ["message" => lang::get('http.success.deleted.application')];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -120,12 +120,12 @@ class ApplicantsController extends Controller
       $tmp_file_path = sys_get_temp_dir() . '\\' .$id .'-export.json';
       $json = AccessLevelHelper::hasPermittedRole($this->user_role, 'formateur') ? json_encode($this->getOne($id, true)) : json_encode($this->getOne($id, false));
       if (json_decode($json)->personal_data == null) {
-        return abort(403, lang::get('http.unauthorized'));
+        return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
       }
       File::put($tmp_file_path, $json);
       return response()->download($tmp_file_path, $id .'-export.json', ['Content-Type' => 'application/json'])->deleteFileAfterSend(true);
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
diff --git a/canapGEST/API/app/Http/Controllers/CommentsController.php b/canapGEST/API/app/Http/Controllers/CommentsController.php
index 8e93099..f47149e 100644
--- a/canapGEST/API/app/Http/Controllers/CommentsController.php
+++ b/canapGEST/API/app/Http/Controllers/CommentsController.php
@@ -35,7 +35,7 @@ class CommentsController extends Controller
       $private_comments = DB::table('comment')->where('fk_applicant_id', $id)->where('comment_is_private', 1)->where('comment_owner_sciper', $this->user_sciper)->get();
       return ["public" => $public_comments, "private" => $private_comments];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -70,7 +70,7 @@ class CommentsController extends Controller
       ]);
       return ["message" => lang::get('http.success.created.comment'), "id" => $inserted_id];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -81,7 +81,7 @@ class CommentsController extends Controller
       DB::table('comment')->where('comment_id', $id)->where('comment_owner_sciper', $this->user_sciper)->delete();
       return ["message" => lang::get('http.success.deleted.comment')];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -105,7 +105,7 @@ class CommentsController extends Controller
       ]);
       return ["message" => lang::get('http.success.updated.comment'), "id" => $id];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
diff --git a/canapGEST/API/app/Http/Controllers/FilesController.php b/canapGEST/API/app/Http/Controllers/FilesController.php
index 803dbbe..00004d8 100644
--- a/canapGEST/API/app/Http/Controllers/FilesController.php
+++ b/canapGEST/API/app/Http/Controllers/FilesController.php
@@ -35,7 +35,7 @@ class FilesController extends Controller
       $file = DB::table('file')->where('file_id', $id)->first();
       return response()->download($file->file_path);
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 }
diff --git a/canapGEST/API/app/Http/Controllers/MarkersController.php b/canapGEST/API/app/Http/Controllers/MarkersController.php
index 1a166d6..82b7f95 100644
--- a/canapGEST/API/app/Http/Controllers/MarkersController.php
+++ b/canapGEST/API/app/Http/Controllers/MarkersController.php
@@ -21,23 +21,6 @@ class MarkersController extends Controller
     $this->user_permissions = $this->request->get('user_permissions');
   }
 
-  // public function getApplicantMarkers($id)
-  // {
-  //   // Not usefull anymore
-  //   $applicant_job = DB::table('applicant')
-  //     ->join('position', 'applicant.fk_position', '=', 'position.position_id')
-  //     ->join('job', 'position.fk_job', '=', 'job.job_id')
-  //     ->where('applicant_id', $id)
-  //     ->pluck('job_short_value')->first();
-
-  //   $has_access = AccessLevelHelper::hasAccessToJob($applicant_job, $this->user_permissions);
-  //   if ($has_access) {
-  //     return DB::table('marker')->where('fk_applicant_id', $id)->get();
-  //   } else {
-  //     return abort(403, lang::get('http.unauthorized'));
-  //   }
-  // }
-
   public function getUserMarkerOnApplicant($id)
   {
     $marker = DB::table('marker')->where('fk_applicant_id', $id)->where('marker_owner_sciper', $this->user_sciper)->first();
@@ -69,7 +52,7 @@ class MarkersController extends Controller
       ]);
       return ["message" => lang::get('http.success.created.marker'), "id" => $inserted_id];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -85,7 +68,7 @@ class MarkersController extends Controller
       DB::table('marker')->where('marker_id', $id)->update(['marker_value' => $new_value]);
       return ["message" => lang::get('http.success.updated.marker'), "id" => $id];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -96,7 +79,7 @@ class MarkersController extends Controller
       DB::table('marker')->where('marker_id', $id)->where('marker_owner_sciper', $this->user_sciper)->delete();
       return ["message" => lang::get('http.success.deleted.marker')];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 }
diff --git a/canapGEST/API/app/Http/Controllers/PositionsController.php b/canapGEST/API/app/Http/Controllers/PositionsController.php
index 770f772..0ca0d8c 100644
--- a/canapGEST/API/app/Http/Controllers/PositionsController.php
+++ b/canapGEST/API/app/Http/Controllers/PositionsController.php
@@ -64,7 +64,7 @@ class PositionsController extends Controller
       ]);
       return ["message" => lang::get('http.success.created.position'), "id" => $inserted_id];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -95,7 +95,7 @@ class PositionsController extends Controller
       ]);
       return ["message" => lang::get('http.success.updated.position'), "id" => $id];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -107,13 +107,13 @@ class PositionsController extends Controller
 
     if ($wanted_position_exists && $has_permitted_role) {
       if ($wanted_position_in_use) {
-        return abort(403, lang::get('http.error.deleted.position'));
+        return response()->json(['error' => 403, 'message' => lang::get('http.error.deleted.position')], 403);
       } else {
         DB::table('position')->where('position_id', $id)->delete();
         return ["message" => lang::get('http.success.deleted.position')];
       }
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -132,7 +132,7 @@ class PositionsController extends Controller
       ]);
       return ["message" => lang::get('http.success.created.location'), "id" => $inserted_id];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 
@@ -153,7 +153,7 @@ class PositionsController extends Controller
       ]);
       return ["message" => lang::get('http.success.created.job'), "id" => $inserted_id];
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 }
diff --git a/canapGEST/API/app/Http/Controllers/StatusController.php b/canapGEST/API/app/Http/Controllers/StatusController.php
index 81e28a2..cda9a93 100644
--- a/canapGEST/API/app/Http/Controllers/StatusController.php
+++ b/canapGEST/API/app/Http/Controllers/StatusController.php
@@ -45,10 +45,10 @@ class StatusController extends Controller
         DB::table('applicant')->where('applicant_id', $id)->update(['fk_status' => $new_status]);
         return ["message" => lang::get('http.success.updated.status'), "id" => $id];
       } else {
-        return abort(404, lang::get('http.notfound'));
+        return response()->json(['error' => 404, 'message' => lang::get('http.notfound')], 404);
       }
     } else {
-      return abort(403, lang::get('http.unauthorized'));
+      return response()->json(['error' => 403, 'message' => lang::get('http.unauthorized')], 403);
     }
   }
 }
\ No newline at end of file
diff --git a/canapGEST/Documentation/journal_travail.xlsx b/canapGEST/Documentation/journal_travail.xlsx
index c37596b56131b66192fb845f233594cb0bc6d536..7078266c97cd726736da63548b1bab511b932ef6 100644
GIT binary patch
delta 4454
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

delta 4428
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
SGgJWxlTkDy2GlSB00019sxS)x

diff --git a/canapGEST/Site/src/plugins/axios.js b/canapGEST/Site/src/plugins/axios.js
index 927f930..660eb3b 100644
--- a/canapGEST/Site/src/plugins/axios.js
+++ b/canapGEST/Site/src/plugins/axios.js
@@ -1,5 +1,6 @@
 import axios from 'axios'
 import store from '@/store/store.js'
+import router from '@/router/index.js'
 
 const instance = axios.create({
   headers: { 'Authorization': "Bearer " + localStorage.getItem('stored_token') },
@@ -16,6 +17,8 @@ instance.interceptors.response.use(function (response) {
     // Erreur de token
     store.commit('moduleSnackbar/toggle', { open: true, message: error.response.data.error, type: 'warning' }, { root: true })
     store.dispatch('moduleUser/logout', false)
+  } else if (error.response.status == 403 || error.response.status == 404) {
+    router.push({ name: 'error', params: { status: error.response.data.error, message: error.response.data.message, route: '' } })
   } else {
     // Affichage des erreurs (snackbar)
     Object.values(error.response.data).forEach(errMsg => {
diff --git a/canapGEST/Site/src/router/index.js b/canapGEST/Site/src/router/index.js
index 80a69e4..a3319c5 100644
--- a/canapGEST/Site/src/router/index.js
+++ b/canapGEST/Site/src/router/index.js
@@ -19,14 +19,14 @@ router.beforeEach((to, from, next) => {
         // Routes limitées aux responsables
         let deniedRoutes = ['/openjobs']
         if (deniedRoutes.includes(to.fullPath)) {
-          return next({ name: 'error', params: { status: 403, route: to.path } })
+          return next({ name: 'error', params: { status: 403, route: to.path, message: 'Action non autorisée' } })
         }
       }
       if (routeLimitation == 'formateur' && userRole == 'responsable') {
         // Routes limitées aux formateurs
         let deniedRoutes = ['/favourites']
         if (deniedRoutes.includes(to.fullPath)) {
-          return next({ name: 'error', params: { status: 403, route: to.path } })
+          return next({ name: 'error', params: { status: 403, route: to.path, message: 'Action non autorisée' } })
         }
       }
       return next()
diff --git a/canapGEST/Site/src/views/ErrorView.vue b/canapGEST/Site/src/views/ErrorView.vue
index d0a4dc8..a63942c 100644
--- a/canapGEST/Site/src/views/ErrorView.vue
+++ b/canapGEST/Site/src/views/ErrorView.vue
@@ -1,8 +1,9 @@
 <template>
-  <div id="error-view" class="align-center">
-    <h1>ERREUR !</h1>
-    {{status}}
+  <div id="error-view" class="text-xs-center">
+    <h1>Erreur {{status}}</h1>
     {{route}}
+    <p>{{message}}</p>
+    <v-btn @click="$router.push('/')">Retour</v-btn>
   </div>
 </template>
 
@@ -11,10 +12,8 @@ export default {
   name: 'error-view',
   props: {
     status: Number,
-    route: String
+    route: String,
+    message: String
   }
 }
 </script>
-
-<style>
-</style>
-- 
GitLab