HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/spion/app/Http/Controllers/UserController.php
<?php

namespace App\Http\Controllers;

use App\Mail\SendOTP;
use App\Models\Template;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;

class UserController extends Controller
{
    public function profile()
    {
        $user = auth()->user(); 
        // if (!$user) {
        //     return redirect()->route('login'); 
        // }
        if (Auth::check()) {
            return view('user.profile', compact('user'));
        }
        return redirect()->route('home.website');
    }
    
    public function wishlist(Request $request)
    {
        $user = auth()->user();
        
        if (!$user) {
            return response()->json(['error' => 'User not authenticated'], 401);
        }
    
        $limit = 6; 
        $currentPage = $request->current_page ?: 1; 
        $offset = ($currentPage - 1) * $limit; 
    
        $templatesCount = Template::whereHas('wishlists', function($query) use ($user) {
            $query->where('user_id', $user->id);
        })->count();
    
        $templates = Template::whereHas('wishlists', function($query) use ($user) {
            $query->where('user_id', $user->id);
        })
        ->offset($offset)
        ->limit($limit)
        ->get()
        ->map(function ($template) {
            $template->is_in_wishlist = true;
            return $template;
        });
    
        $lastPage = ceil($templatesCount / $limit);
    
        if ($request->ajax()) {
            return response()->json([
                'templates' => $templates,
                'templatesCount' => $templatesCount,
                'current_page' => $currentPage,
                'limit' => $limit,
                'last_page' => $lastPage,
            ]);
        }
    
        return view('user.wishlist', compact('templates'));
    }
    
     
    public function logout()
    {
        Auth::logout();
        return redirect()->route('home.website')->with('success', 'Logged out successfully!');
    }
    public function requestOtp(Request $request)
    {
        $otp = rand(1000,9999);
        Log::info("otp = ".$otp);
        $user = User::where('email','=',$request->email)->update(['otp' => $otp]);

        if($user){
            Mail::to($request->email)->send(new SendOTP($user));

            return response(["status" => 200, "message" => "OTP sent successfully"]);
        }
        else{
            return response(["status" => 401, 'message' => 'Invalid']);
        }
    }

    public function verifyOtp(Request $request){

        $user  = User::where([['email','=',$request->email],['otp','=',$request->otp]])->first();
        if($user){
            auth()->login($user, true);
            User::where('email','=',$request->email)->update(['otp' => null]);
            //$accessToken = auth()->user()->createToken('authToken')->accessToken;

            //return response(["status" => 200, "message" => "Success", 'user' => auth()->user(), 'access_token' => $accessToken]);
            return response(["status" => 200, "message" => "Success", 'user' => auth()->user()]);
        }
        else{
            return response(["status" => 401, 'message' => 'OTP verification failed']);
        }
    }
}