HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/gestion-formularios.bdfschool/app/Http/Middleware/UsersAuth.php
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class UsersAuth
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request, Closure $next, ...$permissions)
    {
        if (auth()->check()) {
            if (auth()->user()->deleted) {
                auth()->logout();
                return redirect(route('login'))->with(['error_message' => 'Su cuenta ha sido eliminada'])->with(['error_message_title' => 'ERROR DE VALIDACIÓN']);
            }

            // Manejar redirección si viene desde el correo
            if ($request->query('from_email')) {
                $register_id = $request->query('id');
                $request->session()->put('from_email', true);
                $request->session()->put('register_id', $register_id);
            }

            // Verificar permiso si se proporciona
            if(auth()->user()->profile_id != 1){
                if ($permissions) {
                    $hasPermission = false;
                    foreach ($permissions as $permission) {
                        if (auth()->user()->hasPermission($permission)) {
                            $hasPermission = true;
                            break;
                        }
                    }
    
                    if (!$hasPermission) {
                        return redirect(route('dashboard'))->with([
                            'danger_message' => 'No tienes los permisos necesarios',
                            'danger_message_title' => 'ERROR DE VALIDACIÓN'
                        ]);
                    }
                }
    
            }
           
            if(!auth()->user()->account_confirmed){
                return redirect(route('logout'))->with(['warning_message' => 'Su cuenta aún no ha sido confirmada.'])->with(['warning_message_title' => 'Cuenta no confirmada']);
            }
            
            if(auth()->user()->validate_password){
                return redirect(route('change-password-required'))->with(['warning_message' => 'Realice el cambio de contraseña para continuar'])->with(['warning_message_title' => 'Cambio de Contraseña Obligatorio']);
            }
           
            if(empty(auth()->user()->connection_token) || auth()->user()->connection_token != session('connection')){
                return redirect(route('session-finish'));
            }
            return $next($request);
        } else {
            return redirect(route('login'));
        }
    }
}