Roberto Santini 3 år sedan
förälder
incheckning
254e548d8b

+ 92
- 0
app/Http/Controllers/RoleController.php Visa fil

@@ -0,0 +1,92 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers;
4
+
5
+use Illuminate\Http\Request;
6
+use App\Models\Role;
7
+use App\Models\Permission;
8
+use Yajra\DataTables\DataTables;
9
+use App\DataTables\RoleDataTableEditor;
10
+use App\DataTables\RoleDataTable;
11
+use App\Models\User;
12
+use Session;
13
+use Auth;
14
+
15
+class RoleController extends Controller
16
+{
17
+  public static $permission_group = "Ruoli e permessi";
18
+  public static $permissions = [
19
+    'edit-roles-permissions' => 'Permetti di gestire i ruoli/permessi'
20
+  ];
21
+
22
+  public function __construct(){
23
+    $this->middleware('permission:edit-roles-permissions');
24
+  }
25
+
26
+  public function index(RoleDataTable $dataTable)
27
+  {
28
+    return $dataTable->render('role.index');
29
+  }
30
+
31
+  public function store(RoleDataTableEditor $editor)
32
+  {
33
+    $request = request();
34
+    $input = $request->all();
35
+
36
+    if($request->has('action')){
37
+      switch($input['action']){
38
+        case 'create':
39
+        if(!Auth::user()->can('create-roles-permissions')) return;
40
+        break;
41
+
42
+        case 'edit':
43
+        if(!Auth::user()->can('edit-roles-permissions')) return;
44
+        break;
45
+
46
+        case 'remove':
47
+        if(!Auth::user()->can('remove-roles-permissions')) return;
48
+        break;
49
+      }
50
+    }
51
+
52
+
53
+    return $editor->process(request());
54
+  }
55
+
56
+  public function updatePermission(Request $request){
57
+    $input = $request->all();
58
+    $permissions = [];
59
+    $role = Role::find($input['role_id']);
60
+
61
+    if($request->has('permesso')){
62
+      foreach($input['permesso'] as $key => $value){
63
+        $p = Permission::find($value);
64
+        if($p != null){
65
+          array_push($permissions, $p->name);
66
+        }
67
+      }
68
+
69
+      $role->syncPermissions($permissions);
70
+    }
71
+
72
+    Session::flash('flash_message', 'Permessi aggiornati!');
73
+    return redirect()->route('roles.index');
74
+  }
75
+
76
+  public function role_user(Request $request)
77
+  {
78
+    $input = $request->all();
79
+    if($request->has('role_id')){
80
+      $role = Role::find($input['role_id']);
81
+      return view('role.user', ['role' => $role]);
82
+    }
83
+  }
84
+
85
+  public function rimuovi_utente(Request $request){
86
+    $input = $request->all();
87
+    $role = Role::find($input['role_id']);
88
+    $user = User::find($input['user_id']);
89
+
90
+    $user->removeRole($role->name);
91
+  }
92
+}

+ 11
- 16
database/seeders/ConfigSeeder.php Visa fil

@@ -4,7 +4,6 @@ namespace Database\Seeders;
4 4
 
5 5
 use Illuminate\Database\Seeder;
6 6
 use App\Models\Config;
7
-use App\Models\Azienda;
8 7
 
9 8
 class ConfigSeeder extends Seeder
10 9
 {
@@ -16,21 +15,17 @@ class ConfigSeeder extends Seeder
16 15
   public function run()
17 16
   {
18 17
     // Configurazione
19
-    foreach(Azienda::all() as $azienda){
20
-      foreach(Config::getConfig() as $key => $group){
21
-        $order = 1;
22
-        foreach($group as $key2 => $c){
23
-          $config = Config::where([['key', $c['key']], ['azienda_id', $azienda->id]])->first();
24
-          if($config == null){
25
-            $config = new Config;
26
-            $config->fill($c);
27
-            $config->order = $order;
28
-            $config->group = $key;
29
-            $config->key = $c['key'];
30
-            $config->azienda()->associate($azienda);
31
-            $config->save();
32
-            $order++;
33
-          }
18
+    foreach(Config::getConfig() as $key => $group){
19
+      $order = 1;
20
+      foreach($group as $key2 => $c){
21
+        $config = Config::find($c['key']);
22
+        if($config == null){
23
+          $config = new Config;
24
+          $config->fill($c);
25
+          $config->order = $order;
26
+          $config->group = $key;
27
+          $config->save();
28
+          $order++;
34 29
         }
35 30
       }
36 31
     }

+ 116
- 0
resources/views/role/index.blade.php Visa fil

@@ -0,0 +1,116 @@
1
+<x-app-layout>
2
+  <x-slot name="header">
3
+    <h1 class="page-header-title">
4
+      <div class="page-header-icon"><i class="fas fa-users-cog"></i></div>
5
+      Ruoli e Permessi
6
+    </h1>
7
+    <div class="page-header-subtitle">Elenco di ruoli e permessi che puoi assegnare agli utenti</div>
8
+  </x-slot>
9
+
10
+  <style>
11
+  thead input{
12
+    width: 100%;
13
+  }
14
+  thead select{
15
+    width: 100%;
16
+  }
17
+  </style>
18
+
19
+  <div class="container">
20
+    <div class="row">
21
+      <div class="col-xxl-6 col-xl-6 mb-4">
22
+        <div class="card h-100">
23
+          <div class="card-body h-100  justify-content-center">
24
+            @if(Session::has('flash_message'))
25
+            <div class="alert alert-success">
26
+              {{ Session::get('flash_message') }}
27
+            </div>
28
+            @endif
29
+
30
+            {{$dataTable_role->table()}}
31
+          </div>
32
+        </div>
33
+      </div>
34
+
35
+      <div class="col-xxl-6 col-xl-6 mb-4">
36
+        <div class="card h-100">
37
+          <div class="card-body h-100 " id="div_permessi">
38
+
39
+          </div>
40
+        </div>
41
+      </div>
42
+
43
+
44
+    </div>
45
+  </div>
46
+
47
+</x-app-layout>
48
+
49
+
50
+
51
+{{$dataTable_role->scripts()}}
52
+<script>
53
+
54
+
55
+$(document).ready(function(){
56
+  $.ajaxSetup({
57
+    headers: {
58
+      'X-CSRF-TOKEN': '{{csrf_token()}}'
59
+    }
60
+  });
61
+
62
+  $('button').removeClass('dt-button');
63
+  $("#dataTable_role").attr('width', '100%');
64
+
65
+  // Editor Inline
66
+  // $("#dataTable_role").on('dblclick', 'tbody td', function (e) {
67
+  //   if("{{ !Auth::user()->can('edit-roles-permissions') }}") return;
68
+  //   window.LaravelDataTables["dataTable_role-editor"].inline(this, {
69
+  //     onBlur: 'submit',
70
+  //     submit: 'allIfChanged'
71
+  //   });
72
+  // });
73
+
74
+  // Editor edit
75
+  $("#dataTable_role").on('click', 'a#editor_edit', function (e) {
76
+    e.preventDefault();
77
+    if("{{ !Auth::user()->can('edit-roles-permissions') }}") return;
78
+    window.LaravelDataTables["dataTable_role-editor"].edit( $(this).closest('tr'), {
79
+      title: 'Modifica',
80
+      buttons: 'Aggiorna'
81
+    });
82
+  });
83
+
84
+  // Editor delete
85
+  $("#dataTable_role").on('click', 'a#editor_delete', function (e) {
86
+    e.preventDefault();
87
+    if("{{ !Auth::user()->can('remove-roles-permissions') }}") return;
88
+    window.LaravelDataTables["dataTable_role-editor"].remove( $(this).closest('tr'), {
89
+      title: 'Cancella record',
90
+      message: 'Sei sicuro di voler eliminare il record selezionato?',
91
+      buttons: 'Cancella record'
92
+    } );
93
+  } );
94
+
95
+
96
+});
97
+
98
+function load_permessi(role_id){
99
+  $("#div_permessi").load("{!! url('permissions?role_id="+role_id+"') !!}");
100
+}
101
+
102
+function load_utenti(role_id){
103
+  $("#div_permessi").load("{!! url('roles/user?role_id="+role_id+"') !!}");
104
+}
105
+
106
+function convertToSlug(text)
107
+{
108
+    return text
109
+        .toLowerCase()
110
+        .replace(/ /g,'-')
111
+        .replace(/[^\w-]+/g,'')
112
+        ;
113
+}
114
+
115
+
116
+</script>

+ 21
- 0
resources/views/role/menu.blade.php Visa fil

@@ -0,0 +1,21 @@
1
+<div class="dropdown">
2
+  <a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
3
+    <i class="fas fa-bars"></i>
4
+  </a>
5
+
6
+  <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
7
+    @if(Auth::user()->can('edit-roles-permissions') && $entity->name != 'amministratore' && $entity->name != 'user')
8
+    <a class="dropdown-item" href="#" id='editor_edit'><i class='fas fa-pen'></i>Modifica</a>
9
+    @endif
10
+
11
+    @if(Auth::user()->can('remove-roles-permissions') && $entity->name != 'amministratore' && $entity->name != 'user')
12
+    <a class="dropdown-item" href="#" id='editor_delete'><i class='fas fa-trash'></i>Elimina</a>
13
+    @endif
14
+
15
+    @if(Auth::user()->can('edit-roles-permissions'))
16
+    <button class='dropdown-item' onclick='load_permessi({{$entity->id}})'><i class='fas fa-lock-open'></i> Permessi</button>
17
+    <button class='dropdown-item' onclick='load_utenti({{$entity->id}})'><i class='fas fa-lock-open'></i> Utenti</button>
18
+    @endif
19
+
20
+  </div>
21
+</div>

+ 44
- 0
resources/views/role/user.blade.php Visa fil

@@ -0,0 +1,44 @@
1
+<?php
2
+use App\Models\Permission;
3
+use App\Models\Role;
4
+?>
5
+
6
+
7
+<h2>Utenti con il ruolo {{ $role->name }}</h2>
8
+
9
+
10
+
11
+<ul style="list-style-type:none">
12
+  @foreach($role->users as $user)
13
+  <li>
14
+    <i class="far fa-trash-alt" onclick="rimuovi_utente({{ $user->id }})"></i> {{ $user->full_name }}
15
+  </li>
16
+  @endforeach
17
+</ul>
18
+
19
+<script>
20
+$(document).ready(function(){
21
+  $.ajaxSetup({
22
+    headers: {
23
+      'X-CSRF-TOKEN': '{{csrf_token()}}'
24
+    }
25
+  });
26
+});
27
+
28
+function rimuovi_utente(user_id){
29
+  $.ajax({
30
+    type: "POST",
31
+    async: false,
32
+    url: "{{ route('roles.rimuovi_utente') }}",
33
+    data: {
34
+      user_id: user_id,
35
+      role_id: "{{ $role->id }}",
36
+      _token : "{{csrf_token()}}",
37
+    },
38
+    success: function(data){
39
+      load_utenti("{{ $role->id }}");
40
+    },
41
+    error: function(XMLHttpRequest, textStatus, exception) { alert("Ajax failure\n" + XMLHttpRequest.responseText + "\n" + exception); },
42
+  });
43
+}
44
+</script>

Laddar…
Avbryt
Spara