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
/
Models
/
Viewing: User.php
<?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { /** @use HasFactory<\Database\Factories\UserFactory> */ use HasFactory, HasApiTokens, Notifiable; /** * The attributes that are mass assignable. * * @var list<string> */ protected $fillable = [ 'name', 'email', 'password', 'estado', 'empresa_id', 'role_id', 'actividad_id' ]; /** * The attributes that should be hidden for serialization. * * @var list<string> */ protected $hidden = [ 'password', 'remember_token', ]; /** * Get the attributes that should be cast. * * @return array<string, string> */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', 'estado' => 'boolean', ]; } /** * Relación con la empresa */ public function empresa() { return $this->belongsTo(Empresa::class); } /** * Relación con el rol */ public function role() { return $this->belongsTo(Role::class); } /** * Relación con la actividad (Restaurante, Compra-Venta, etc.) */ public function actividad() { return $this->belongsTo(Actividad::class); } /** * Permisos directos del usuario (personalizados) */ public function permisosDirectos() { return $this->belongsToMany(Permiso::class, 'user_permiso', 'user_id', 'permiso_id') ->withTimestamps(); } /** * Obtener todos los permisos del usuario (rol + directos) */ public function todosLosPermisos() { $permisosRol = $this->role ? $this->role->permisos : collect([]); $permisosDirectos = $this->permisosDirectos; return $permisosRol->merge($permisosDirectos)->unique('id'); } /** * Verificar si el usuario tiene un permiso específico */ public function tienePermiso(string $permisoSlug): bool { $masterEmail = env('MASTER_USER_EMAIL', 'pcapacho24@gmail.com'); if ($this->email === $masterEmail) { return true; } // Verificar en permisos directos primero if ($this->permisosDirectos()->where('slug', $permisoSlug)->exists()) { return true; } // Luego verificar en permisos del rol if ($this->role && $this->role->tienePermiso($permisoSlug)) { return true; } return false; } /** * Verificar si el usuario tiene acceso a un módulo */ public function tieneAccesoModulo(string $modulo, string $tipo = 'lectura'): bool { $masterEmail = env('MASTER_USER_EMAIL', 'pcapacho24@gmail.com'); if ($this->email === $masterEmail) { return true; } // Si el usuario tiene una actividad asignada, verificar si la actividad permite el módulo if ($this->actividad) { return $this->actividad->tieneAccesoModulo($modulo, $tipo); } // Si no tiene actividad, verificar en permisos directos if ($this->permisosDirectos()->where('modulo', $modulo)->exists()) { return true; } // Verificar en permisos del rol if ($this->role && $this->role->tieneAccesoModulo($modulo)) { return true; } return false; } /** * Verificar si el usuario pertenece a una actividad específica */ public function perteneceActividad(string $actividadSlug): bool { $masterEmail = env('MASTER_USER_EMAIL', 'pcapacho24@gmail.com'); if ($this->email === $masterEmail) { return true; } return $this->actividad && strtolower($this->actividad->slug) === strtolower($actividadSlug); } /** * Obtener el nombre de la actividad del usuario */ public function getNombreActividad(): ?string { return $this->actividad?->nombre; } /** * Verificar si el usuario es de Restaurante */ public function esRestaurante(): bool { return $this->perteneceActividad('restaurante'); } /** * Verificar si el usuario es de Compra-Venta */ public function esCompraVenta(): bool { return $this->perteneceActividad('compra-venta'); } /** * Asignar permiso directo al usuario */ public function asignarPermiso(Permiso $permiso) { return $this->permisosDirectos()->syncWithoutDetaching([$permiso->id]); } /** * Remover permiso directo del usuario */ public function removerPermiso(Permiso $permiso) { return $this->permisosDirectos()->detach($permiso->id); } /** * Sincronizar permisos directos del usuario */ public function sincronizarPermisos(array $permisosIds) { return $this->permisosDirectos()->sync($permisosIds); } /** * Verificar si el usuario es administrador */ public function esAdministrador(): bool { return $this->role && $this->role->nivel >= 4; } /** * Verificar si el usuario tiene un nivel mínimo */ public function tieneNivelMinimo(int $nivel): bool { return $this->role && $this->role->nivel >= $nivel; } /** * Verificar si este usuario es el Master (no editable/eliminable) */ public function esMaster(): bool { $masterEmail = env('MASTER_USER_EMAIL', 'pcapacho24@gmail.com'); return $this->email === $masterEmail; } /** * Verificar si el usuario actual puede editar a otro usuario */ public function puedeEditar(User $otroUsuario): bool { // El master puede editar a todos if ($this->esMaster()) { return true; } // Nadie puede editar al master excepto él mismo if ($otroUsuario->esMaster() && !$this->esMaster()) { return false; } return true; } /** * Verificar si el usuario actual puede eliminar a otro usuario */ public function puedeEliminar(User $otroUsuario): bool { // No se puede eliminar a sí mismo if ($this->id === $otroUsuario->id) { return false; } // Nadie puede eliminar al master if ($otroUsuario->esMaster()) { return false; } return true; } }
Coded With 💗 by
0x6ick