2025-08-05 14:10:01 +02:00

145 lines
4.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
// use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
// use Junges\ACL\Models\Group;
// use Junges\ACL\Models\Permission;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use App\Models\User;
class Utenti extends Controller
{
public function createRole($ruolo)
{
$role=Role::create(['name'=>$ruolo]);
return json_encode(Role::all()->pluck('name'));
}
function createPermission($permesso){
$permission=Permission::create(['name'=>$permesso]);
return json_encode(Permission::all()->pluck('name'));
}
function userClass() {
$user=new User();
return get_class_methods($user);
}
// post del create user
function createUser(Request $params){
User::addUser($params);
return redirect('/admin/users/new');
}
// mostra il form della creazione dell'utente
function addUser(){
$roles = Role::all();
$users = User::all();
return view('users.create',['ruoli'=>$roles,'users'=>$users]);
}
function listUser(){
$users = User::all();
return view('users.list',['users'=>$users]);
}
function getUsers(){
return User::getUsers();
}
function listRoles(){
$roles = Role::all();
return $roles;
}
function deleteUser($id) {
User::destroy($id);
return redirect('/admin/users/new');
}
function givePermissionToUser()
{
$users=User::all();
$permissions=Permission::all();
return view('users.assignperm',['users'=>$users,'permissions'=>$permissions]);
}
function assignPermission(Request $request)
{
//$user=User::getUserbyId($request['user']);
$user=User::findOrFail($request['user']);
foreach($request['permesso'] as $key => $value){
if($value=='true')
{
$key=str_replace('\'','',$key);
$user->givePermissionTo($key);
// $permission['allowed'][]=$key;
}
else
{
$key=str_replace('\'','',$key);
$user->revokePermissionTo($key);
// $permission['denied'][]=$key;
}
}
return redirect('/admin/users/givepermission');
}
function giveRoleToUser()
{
$users=User::all();
$roles=Role::all();
return view('users.assignrole',['users'=>$users,'roles'=>$roles]);
}
function assignRole(Request $request)
{
//$user=User::getUserbyId($request['user']);
$user=User::findOrFail($request['user']);
$user->assignRole($request['role']);
return redirect('/admin/users/giverole');
}
public function changePassword(Request $request)
{
$user = Auth::user();
$request->validate([
'current_password' => 'required|string|min:5',
'new_password' => 'required|string|min:8|confirmed',
]);
if (Hash::check($request->current_password, $user->password))
{
$user->password = Hash::make($request->new_password);
$user->save();
return redirect()->route('changePassword')->with('success','Password changed successfully!');
} else {
return redirect()->back()->withErrors(['current_password' => 'Current password does not match']);
}
}
public function login(Request $request)
{
// Crea un token unico di accesso per l'utente
$request->validate([
'email' => 'required|email',
'password' => 'required|string|min:3',
]);
$user=User::where('email',$request->email)->first();
if(!$user || !Hash::check($request->password, $user->password)){
return response()->json(['error'=>'The provided credentials are incorrect.'], 401);
}
$token=$user->createToken($user->name.'_Api-AuthToken')->plainTextToken;
return response()->json(['token'=>$token]);
}
}