diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 660e753e..39e16ac7 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -22,12 +22,9 @@ class LoginController extends Controller protected function redirectTo() { - if(\Auth::User()->getAcces(2)) - { - return '/admin'; - } else if(\Auth::User()->getAcces(1)){ - return '/ecc'; - } + + return '/admin'; + } /** * Where to redirect users after login. diff --git a/app/Http/Controllers/EventController.php b/app/Http/Controllers/EventController.php index 87d4cacb..ffdb46d2 100644 --- a/app/Http/Controllers/EventController.php +++ b/app/Http/Controllers/EventController.php @@ -84,7 +84,7 @@ class EventController extends Controller } } clog('add','success','a ajouté un évènement',null,'App\Event',$event->id); - return redirect('/admin/calendar')->with('success','Événement ajouter à l\'horaire'); + return redirect('/admin/schedule')->with('success','Événement ajouter à l\'horaire'); } /** @@ -175,7 +175,7 @@ class EventController extends Controller } } clog('edit','success','a modifié un évènement',null,'App\Event',$event->id); - return redirect('/admin/calendar')->with('success','Modification à l\'événement sauvegarder à l\'horaire'); + return redirect('/admin/schedule')->with('success','Modification à l\'événement sauvegarder à l\'horaire'); } /** diff --git a/app/Http/Controllers/RankController.php b/app/Http/Controllers/RankController.php index 523dc6bd..eb809eb5 100644 --- a/app/Http/Controllers/RankController.php +++ b/app/Http/Controllers/RankController.php @@ -24,7 +24,7 @@ class RankController extends Controller */ public function create() { - // + return view('admin.configs.ranks.add'); } /** @@ -35,7 +35,25 @@ class RankController extends Controller */ public function store(Request $request) { - // + $r = new Rank(); + + $r->name = $request->name; + $r->desc = $request->desc; + $r->acces_level = 1; + + $tpermission = []; + + foreach (\App\Permission::all() as $perm) + { + $tkey = $perm->ckey; + $tpermission[$tkey] = $request->$tkey; + } + + $r->permissions = json_encode($tpermission); + $r->save(); + + clog('add','success','Grade ajouté avec succès'); + return redirect('/admin/config/ranks')->with('success','Grade ajouté avec succès'); } /** @@ -57,7 +75,7 @@ class RankController extends Controller */ public function edit(Rank $rank) { - // + } /** @@ -67,9 +85,26 @@ class RankController extends Controller * @param \App\Rank $rank * @return \Illuminate\Http\Response */ - public function update(Request $request, Rank $rank) + public function update(Request $request, $rank) { - // + $r = Rank::find($rank); + + $r->name = $request->name; + $r->desc = $request->desc; + + $tpermission = []; + + foreach (\App\Permission::all() as $perm) + { + $tkey = $perm->ckey; + $tpermission[$tkey] = $request->$tkey; + } + + $r->permissions = json_encode($tpermission); + $r->save(); + + clog('edit','success','Grade modifié avec succès'); + return redirect('/admin/config/ranks')->with('success','Grade modifié avec succès'); } /** diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 8c5512fd..c64b3952 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -69,7 +69,7 @@ class UserController extends Controller } $user->avatar = rand(1,16); - $user->rank = request('rank'); + $user->rank_id = request('rank'); $user->job = request('job'); $user->password = bcrypt(request('psw')); $user->api_token = str_random(60); @@ -141,7 +141,7 @@ class UserController extends Controller $user->age = request('age'); } - $user->rank = request('rank'); + $user->rank_id = request('rank'); $user->job = request('job'); if (request('psw') != null) { $user->password = bcrypt(request('psw')); @@ -231,7 +231,7 @@ class UserController extends Controller $user->save(); - return back()->with('success', 'Modification enregistré'); + return redirect('/admin/profil')->with('success', 'Modification enregistré'); } public function UserAdress() @@ -247,7 +247,7 @@ class UserController extends Controller $user->save(); - return back()->with('success', 'Modification enregistré'); + return redirect('/admin/profil')->with('success', 'Modification enregistré'); } public function apiList() diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 76785d61..649e7b55 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -61,5 +61,6 @@ class Kernel extends HttpKernel 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'staff' => \App\Http\Middleware\AccesStaff::class, 'admin' => \App\Http\Middleware\AccesAdmin::class, + 'perm' => \App\Http\Middleware\CheckPerm::class, ]; } diff --git a/app/Http/Middleware/CheckPerm.php b/app/Http/Middleware/CheckPerm.php new file mode 100644 index 00000000..ced3b4df --- /dev/null +++ b/app/Http/Middleware/CheckPerm.php @@ -0,0 +1,25 @@ +p($permission) != 1) + { + clog('navigate','danger','L\'utilisateur n\'est pas autorisé à effectuer cette action',\Auth::user()->id); + return redirect('/admin')->with('error','Vous n\'êtes pas autorisé à effectuer cette action'); + } + return $next($request); + } +} diff --git a/app/Permission.php b/app/Permission.php index daa5175d..9f60eee4 100644 --- a/app/Permission.php +++ b/app/Permission.php @@ -10,28 +10,28 @@ class Permission extends Model const PERMISSIONS = [ 'news' => [ 'news_see' => [ - 'id' => 'news_see', + 'ckey' => 'news_see', 'communName' => 'Voir les nouvelles', 'desc' => 'L\'utilisateur peut-il consulter les nouvelles', 'icon' => 'fa-eye', 'valeur' => 0 ], 'news_add' => [ - 'id' => 'news_add', + 'ckey' => 'news_add', 'communName' => 'Ajouter une nouvelles', 'desc' => 'L\'utilisateur peut-il ajouter une nouvelle', 'icon' => 'fa-plus', 'valeur' => 0 ], 'news_edit' => [ - 'id' => 'news_edit', + 'ckey' => 'news_edit', 'communName' => 'Modifier une nouvelles', 'desc' => 'L\'utilisateur peut-il modifier une nouvelle', 'icon' => 'fa-edit', 'valeur' => 0 ], 'news_delete' => [ - 'id' => 'news_delete', + 'ckey' => 'news_delete', 'communName' => 'Supprimer une nouvelles', 'desc' => 'L\'utilisateur peut-il supprimer une nouvelle', 'icon' => 'fa-close', @@ -40,28 +40,28 @@ class Permission extends Model ], 'message' => [ 'msg_see' => [ - 'id' => 'msg_see', + 'ckey' => 'msg_see', 'communName' => 'Voir les messages', 'desc' => 'L\'utilisateur peut-il consulter les messages de la semaine', 'icon' => 'fa-eye', 'valeur' => 0 ], 'msg_add' => [ - 'id' => 'msg_add', + 'ckey' => 'msg_add', 'communName' => 'Ajouter un message', 'desc' => 'L\'utilisateur peut-il ajouter un message de la semaine', 'icon' => 'fa-eye', 'valeur' => 0 ], 'msg_edit' => [ - 'id' => 'msg_edit', + 'ckey' => 'msg_edit', 'communName' => 'Modifier un message', 'desc' => 'L\'utilisateur peut-il modifier les messages de la semaine', 'icon' => 'fa-eye', 'valeur' => 0 ], 'msg_delete' => [ - 'id' => 'msg_delete', + 'ckey' => 'msg_delete', 'communName' => 'Supprimer un message', 'desc' => 'L\'utilisateur peut-il supprimer un message de la semaine', 'icon' => 'fa-eye', @@ -70,28 +70,28 @@ class Permission extends Model ], 'inventory' => [ 'inventory_see' => [ - 'id' => 'inventory_see', + 'ckey' => 'inventory_see', 'communName' => 'Voir l\'inventaire', 'desc' => 'L\'utilisateur peut-il consulter l\'inventaire', 'icon' => 'fa-eye', 'valeur' => 0 ], 'inventory_add' => [ - 'id' => 'inventory_add', + 'ckey' => 'inventory_add', 'communName' => 'Ajouter item a l\'inventaire', 'desc' => 'L\'utilisateur peut-il ajouter un item a l\'inventaire', 'icon' => 'fa-eye', 'valeur' => 0 ], 'inventory_edit' => [ - 'id' => 'inventory_edit', + 'ckey' => 'inventory_edit', 'communName' => 'Modifier un item de l\'inventaire', 'desc' => 'L\'utilisateur peut-il modifier un item de l\'inventaire', 'icon' => 'fa-eye', 'valeur' => 0 ], 'inventory_delete' => [ - 'id' => 'inventory_delete', + 'ckey' => 'inventory_delete', 'communName' => 'Supprimer un item de l\'inventaire', 'desc' => 'L\'utilisateur peut-il supprimer un item de l\'inventaire', 'icon' => 'fa-eye', @@ -100,44 +100,182 @@ class Permission extends Model ], 'booking' => [ 'booking_see' => [ - 'id' => 'booking_see', + 'ckey' => 'booking_see', 'communName' => 'Voir les réservations', 'desc' => 'L\'utilisateur peut-il consulter la liste des réservations', 'icon' => 'fa-eye', 'valeur' => 0 ], - 'booking_see_self' => [ - 'id' => 'booking_see_self', - 'communName' => 'Voir ses propres réservations', - 'desc' => 'L\'utilisateur peut-il consulter la liste de ses réservations', - 'icon' => 'fa-eye', - 'valeur' => 0 - ], 'booking_add' => [ - 'id' => 'booking_add', - 'communName' => 'Ajouter item a l\'inventaire', - 'desc' => 'L\'utilisateur peut-il ajouter un item a l\'inventaire', + 'ckey' => 'booking_add', + 'communName' => 'Ajouter une réservation', + 'desc' => 'L\'utilisateur peut-il ajouter une réservation', 'icon' => 'fa-eye', 'valeur' => 0 ], 'booking_edit' => [ - 'id' => 'booking_edit', - 'communName' => 'Modifier un item de l\'inventaire', - 'desc' => 'L\'utilisateur peut-il modifier un item de l\'inventaire', + 'ckey' => 'booking_edit', + 'communName' => 'Modifier une réservation', + 'desc' => 'L\'utilisateur peut-il modifier une réservation', 'icon' => 'fa-eye', 'valeur' => 0 ], 'booking_delete' => [ - 'id' => 'booking_delete', - 'communName' => 'Supprimer un item de l\'inventaire', - 'desc' => 'L\'utilisateur peut-il supprimer un item de l\'inventaire', + 'ckey' => 'booking_delete', + 'communName' => 'Supprimer une réservation', + 'desc' => 'L\'utilisateur peut-il supprimer une réservation', 'icon' => 'fa-eye', 'valeur' => 0 ] + ], + 'user' => [ + 'user_see' => [ + 'ckey' => 'user_see', + 'communName' => 'Voir la liste des utilisateurs', + 'desc' => 'L\'utilisateur peut-il consulter la liste des utilisateurs', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'user_add' => [ + 'ckey' => 'user_add', + 'communName' => 'Ajouter un utilisateur', + 'desc' => 'L\'utilisateur peut-il ajouter un autre utilisateur', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'user_edit' => [ + 'ckey' => 'user_edit', + 'communName' => 'Modifier un utilisateur', + 'desc' => 'L\'utilisateur peut-il modifier un autre utilisateur', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'user_delete' => [ + 'ckey' => 'user_delete', + 'communName' => 'Supprimer un utilisateur', + 'desc' => 'L\'utilisateur peut-il supprimer un autre utilisateur', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + ], + 'config' => [ + 'config_see' => [ + 'ckey' => 'config_see', + 'communName' => 'Voir les configurations', + 'desc' => 'L\'utilisateur peut-il consulter les configurations', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'config_edit' => [ + 'ckey' => 'config_edit', + 'communName' => 'Modifier les configurations', + 'desc' => 'L\'utilisateur peut-il modifier les configurations', + 'icon' => 'fa-eye', + 'valeur' => 0 + ] + ], + 'statistique' => [ + 'stats_see' => [ + 'ckey' => 'stats_see', + 'communName' => 'Voir les statistiques', + 'desc' => 'L\'utilisateur peut-il consulter les statistiques', + 'icon' => 'fa-eye', + 'valeur' => 0 + ] + ], + 'schedule' => [ + 'schedule_see' => [ + 'ckey' => 'schedule_see', + 'communName' => 'Voir l\'horaire', + 'desc' => 'L\'utilisateur peut-il consulter l\'horaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'schedule_add' => [ + 'ckey' => 'schedule_add', + 'communName' => 'Ajouter un évènement à l\'horaire', + 'desc' => 'L\'utilisateur peut-il ajouter un évènement à l\'horaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'schedule_edit' => [ + 'ckey' => 'schedule_edit', + 'communName' => 'Modifier un évènement à l\'horaire', + 'desc' => 'L\'utilisateur peut-il modifier un évènement à l\'horaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'schedule_delete' => [ + 'ckey' => 'schedule_delete', + 'communName' => 'Supprimer un évènement à l\'horaire', + 'desc' => 'L\'utilisateur peut-il supprimer un évènement à l\'horaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ] + ], + 'article' => [ + 'article_see' => [ + 'ckey' => 'article_see', + 'communName' => 'Voir les articles', + 'desc' => 'L\'utilisateur peut-il consulter les articles', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'article_add' => [ + 'ckey' => 'article_add', + 'communName' => 'Ajouter un article', + 'desc' => 'L\'utilisateur peut-il ajouter un article', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'article_edit' => [ + 'ckey' => 'article_edit', + 'communName' => 'Modifier un article', + 'desc' => 'L\'utilisateur peut-il modifier un évènement à l\'horaire', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'article_delete' => [ + 'ckey' => 'article_delete', + 'communName' => 'Supprimer un article', + 'desc' => 'L\'utilisateur peut-il supprimer un article', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + ], + 'picture' => [ + 'picture_see' => [ + 'ckey' => 'picture_see', + 'communName' => 'Voir les images', + 'desc' => 'L\'utilisateur peut-il consulter les images', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'picture_add' => [ + 'ckey' => 'picture_add', + 'communName' => 'Ajouter une image', + 'desc' => 'L\'utilisateur peut-il ajouter une image', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'picture_edit' => [ + 'ckey' => 'picture_edit', + 'communName' => 'Modifier une image', + 'desc' => 'L\'utilisateur peut-il modifier une image', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], + 'picture_delete' => [ + 'ckey' => 'picture_delete', + 'communName' => 'Supprimer une image', + 'desc' => 'L\'utilisateur peut-il supprimer une image', + 'icon' => 'fa-eye', + 'valeur' => 0 + ], ] ]; - public static function all($columns = null) + public static function all($value = null,$columns = null) { $permissions = collect(); @@ -146,11 +284,18 @@ class Permission extends Model foreach ($cat as $c) { $p = new Permission(); - $p->id = $c['id']; + $p->ckey = $c['ckey']; $p->communName = $c['communName']; $p->desc = $c['desc']; $p->icon = $c['icon']; - $p->value = $c['valeur']; + if ($value == null) + { + $p->value = $c['valeur']; + } + else + { + $p->value = $value; + } $permissions->push($p); } } @@ -158,8 +303,19 @@ class Permission extends Model return $permissions; } - public static function allToString() + public static function allToArray() { - return \GuzzleHttp\json_encode(Permission::all()); + return self::PERMISSIONS; + } + + public static function allToString($value = null) + { + $perm = []; + foreach (Permission::all($value) as $p) + { + $perm[$p->ckey] = $p->value; + } + + return \GuzzleHttp\json_encode($perm); } } diff --git a/app/Rank.php b/app/Rank.php index 18e499e8..92f07c20 100644 --- a/app/Rank.php +++ b/app/Rank.php @@ -10,4 +10,22 @@ class Rank extends Model { return collect(json_decode($this->permissions,true)); } + + public function permission($permission) + { + foreach ($this->permissions() as $perm => $value) + { + if ($permission == $perm) + { + return $value; + } + } + + return 0; + } + + public function p($perm) + { + return $this->permission($perm); + } } diff --git a/app/User.php b/app/User.php index 6fe3f330..32b5fae3 100644 --- a/app/User.php +++ b/app/User.php @@ -27,6 +27,11 @@ class User extends Authenticatable 'password', 'remember_token', ]; + public function rank() + { + return $this->belongsTo('App\Rank'); + } + public function logs() { return $this->hasMany(Log::class); @@ -279,4 +284,14 @@ class User extends Authenticatable { return $this->hasMany('App\News'); } + + public function permission($perm) + { + return $this->rank->permission($perm); + } + + public function p($perm) + { + return $this->permission($perm); + } } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 6f8f739b..bbb8c931 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -19,7 +19,7 @@ class CreateUsersTable extends Migration $table->string('lastname'); $table->string('email')->unique(); $table->string('password'); - $table->string('rank')->default(1); + $table->string('rank_id')->default(1); $table->string('adress')->default('unknown'); $table->string('telephone')->default('unknown'); $table->string('age'); diff --git a/database/seeds/RanksTableSeeder.php b/database/seeds/RanksTableSeeder.php index 34d0537c..170727f4 100644 --- a/database/seeds/RanksTableSeeder.php +++ b/database/seeds/RanksTableSeeder.php @@ -16,7 +16,7 @@ class RanksTableSeeder extends Seeder 'name' => "SuperAdmin", 'acces_level' => '2', 'desc' => 'Compte SuperAdmin donne toutes les permissions ne peux être modifié', - 'permissions' => \App\Permission::allToString() + 'permissions' => \App\Permission::allToString(1) ] ]); } diff --git a/database/seeds/UsersTableSeeder.php b/database/seeds/UsersTableSeeder.php index e5f20ab1..6e303df5 100644 --- a/database/seeds/UsersTableSeeder.php +++ b/database/seeds/UsersTableSeeder.php @@ -17,7 +17,7 @@ class UsersTableSeeder extends Seeder 'lastname' => 'Autre', 'email' => 'visiteur@exvps.ca', 'password' => bcrypt('f329er8kl2jHJGHdEj12567'), - 'rank' => '1', + 'rank_id' => '1', 'adress' => 'Inconnu', 'age' => '99', 'avatar' => '3', @@ -30,7 +30,7 @@ class UsersTableSeeder extends Seeder 'lastname' => 'Administrateur', 'email' => 'admin@exvps.ca', 'password' => bcrypt('SuperAdmin'), - 'rank' => '1', + 'rank_id' => '1', 'adress' => 'Inconnu', 'age' => '99', 'avatar' => '3', diff --git a/resources/views/admin/article/index.blade.php b/resources/views/admin/article/index.blade.php index cc771dab..7ea11e73 100644 --- a/resources/views/admin/article/index.blade.php +++ b/resources/views/admin/article/index.blade.php @@ -24,8 +24,12 @@
-   Modifier l'article -   Gérer les photos + @if(\Auth::user()->p('article_edit') == 1) +   Modifier l'article + @endif + @if(\Auth::user()->p('article_edit') == 1 && \Auth::user()->p('picture_add')) +   Gérer les photos + @endif
diff --git a/resources/views/admin/configs/ranks/add.blade.php b/resources/views/admin/configs/ranks/add.blade.php new file mode 100644 index 00000000..11409aa2 --- /dev/null +++ b/resources/views/admin/configs/ranks/add.blade.php @@ -0,0 +1,87 @@ +@extends('layouts.admin.main') + +@section('content') +
+
+
+

Ajouter un grade

+
+
+
+ @csrf + +
+
+
+ + + Nom du grade +
+
+
+
+ + + Description du grade +
+
+
+
+

Permissions du Grade

+

+ Choisissez quels permissions doivent être associé avec ce grade. +

+
+ @foreach(\App\Permission::allToArray() as $key => $cat) +
+ + +
+
+
+ @foreach($cat as $r) +
+ +
{{$r['communName']}}
+
+ + + +
+

+ {{$r['desc']}} +

+
+ @endforeach +
+
+
+
+ @endforeach +
+
+
+ +
+
+
+
+
+
+@endsection + +@section('custom_scripts') + + +@endsection \ No newline at end of file diff --git a/resources/views/admin/configs/ranks/show.blade.php b/resources/views/admin/configs/ranks/show.blade.php index 292a49df..839c00e1 100644 --- a/resources/views/admin/configs/ranks/show.blade.php +++ b/resources/views/admin/configs/ranks/show.blade.php @@ -32,7 +32,7 @@ Choisissez quels permissions doivent être associé avec ce grade.

- @foreach(\App\Permission::all() as $key => $cat) + @foreach(\App\Permission::allToArray() as $key => $cat)