glastree_on_gitea
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\ActivityLog;
|
||||
use App\Models\RolePreset;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class RuoloController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$ruoli = RolePreset::withCount('users')->get();
|
||||
return view('admin.ruoli.index', compact('ruoli'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('admin.ruoli.create');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'name' => 'required|string|max:50|unique:role_presets,name',
|
||||
'description' => 'nullable|string|max:255',
|
||||
'permissions' => 'required|array',
|
||||
'permissions.*' => 'in:0,1,2',
|
||||
]);
|
||||
|
||||
$ruolo = RolePreset::create([
|
||||
'name' => $validated['name'],
|
||||
'description' => $validated['description'] ?? null,
|
||||
'permissions' => $validated['permissions'],
|
||||
]);
|
||||
|
||||
ActivityLog::log('create', 'ruoli', 'Creato ruolo: ' . $ruolo->name, [
|
||||
'role_id' => $ruolo->id,
|
||||
'permissions' => $validated['permissions'],
|
||||
]);
|
||||
|
||||
return redirect('/admin/ruoli')->with('success', 'Ruolo creato.');
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$ruolo = RolePreset::findOrFail($id);
|
||||
$usersCount = $ruolo->users()->count();
|
||||
return view('admin.ruoli.edit', compact('ruolo', 'usersCount'));
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$ruolo = RolePreset::findOrFail($id);
|
||||
|
||||
$validated = $request->validate([
|
||||
'description' => 'nullable|string|max:255',
|
||||
'permissions' => 'required|array',
|
||||
'permissions.*' => 'in:0,1,2',
|
||||
]);
|
||||
|
||||
$old = $ruolo->permissions;
|
||||
|
||||
$ruolo->description = $validated['description'];
|
||||
$ruolo->permissions = $validated['permissions'];
|
||||
$ruolo->save();
|
||||
|
||||
ActivityLog::log('update', 'ruoli', 'Modificato ruolo: ' . $ruolo->name, [
|
||||
'role_id' => $ruolo->id,
|
||||
'old_permissions' => $old,
|
||||
'new_permissions' => $validated['permissions'],
|
||||
]);
|
||||
|
||||
if ($request->input('update_users') === '1') {
|
||||
foreach ($ruolo->users as $user) {
|
||||
$user->permissions = $ruolo->permissions;
|
||||
$user->save();
|
||||
}
|
||||
return redirect('/admin/ruoli')->with('success', 'Ruolo aggiornato e permessi propagati a ' . $ruolo->users()->count() . ' utenti.');
|
||||
}
|
||||
|
||||
return redirect('/admin/ruoli')->with('success', 'Ruolo aggiornato.');
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$ruolo = RolePreset::findOrFail($id);
|
||||
|
||||
if ($ruolo->users()->count() > 0) {
|
||||
return redirect('/admin/ruoli')->with('error', 'Impossibile eliminare: ci sono ' . $ruolo->users()->count() . ' utenti con questo ruolo.');
|
||||
}
|
||||
|
||||
$name = $ruolo->name;
|
||||
|
||||
ActivityLog::log('delete', 'ruoli', 'Eliminato ruolo: ' . $name, [
|
||||
'role_id' => $id,
|
||||
'permissions' => $ruolo->permissions,
|
||||
]);
|
||||
|
||||
$ruolo->delete();
|
||||
|
||||
return redirect('/admin/ruoli')->with('success', 'Ruolo eliminato.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user