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/dashboard.orbiwheels.com/app/Http/Controllers/Auth/AuthenticationController.php
<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use App\Http\Requests\Auth\TransporterLoginRequest;
use App\Models\Transporter;
use App\Providers\AppServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;

class AuthenticationController extends Controller
{
    public function create()
    {
        return view('auth.index');
    }


    public function store(LoginRequest $request)
    {
        $credentials = $request->only('email', 'password');
        if (Auth::guard('web')->attempt($credentials)) {
            return redirect()->route('admin.home');
        }
        return back()->withErrors(['email' => 'Invalid email or password.'])->withInput();
    }

    public function logout(Request $request)
    {
        Auth::guard('web')->logout();

        return redirect()->route('admin.login');
    }


    // Transporter Authentication
    public function transporterCreate()
    {
        return view('auth.transporter_index');
    }

    public function transporterLogin(TransporterLoginRequest $request)
    {
        $credentials = $request->only('email', 'password');
        if (Auth::guard('trans')->attempt($credentials)) {
            return redirect()->route('home');
        }
        return back()->withErrors(['email' => 'Invalid email or password.'])->withInput();
    }

    public function transporterLogout(Request $request)
    {
        Auth::guard('trans')->logout();
        return redirect()->route('login');
    }
    public function profile(Request $request)
    {
        $transporter = Auth::guard('trans')->user();

        if (!$transporter) {
            return redirect()->route('login')->with('error', 'Please login first.');
        }

        $transporter->load('documents');

        $progress = 0;
        $message = null;

        $documentsVerified = $transporter->documents()->where('is_verified', 1)->exists()
            && !$transporter->documents()->where('is_verified', 0)->exists();

        $driverVerified = $transporter->drivers()->where('is_verified', 1)->exists();
        $vehicleVerified = $transporter->vehicles()->where('is_verified', 1)->exists();

        if ($documentsVerified) $progress += 50;
        if ($driverVerified) $progress += 25;
        if ($vehicleVerified) $progress += 25;

        if ($progress == 50) {
            $message = "Please add at least one Driver and one Vehicle.";
        } elseif ($progress == 75) {
            if ($driverVerified && !$vehicleVerified) {
                $message = "Please add at least one Vehicle.";
            } elseif ($vehicleVerified && !$driverVerified) {
                $message = "Please add at least one Driver.";
            }
        }

        return view('transporter.profile.view', compact('transporter', 'progress', 'message'));
    }
    public function profileEdit(Request $request)
    {
        $transporter = Auth::guard('trans')->user();

        if (!$transporter) {
            return redirect()->route('login')->with('error', 'Please login first.');
        }

        return view('transporter.profile.edit', compact('transporter'));
    }

    public function profileUpdate(Request $request)
    {
        // dd($request->all());
        $validated = $request->validate([
            'company_name' => 'required|string',
            'contact_person' => 'required|string',
            'first_name' => 'required|string',
            'last_name' => 'required|string',
            // 'email' => 'required|string|email',
            'phone' => 'required|digits:10',
            'address' => 'required|string|max:255',
            'transporter_type' => 'required|in:1,2',
            'image' => 'nullable|image|mimes:jpg,jpeg,png,webp|max:2048',

        ]);

        $loggedIn = Auth::guard('trans')->user();
        if (!$loggedIn) {
            return redirect()->route('login')
                ->with('error', 'Please login first.');
        }

        $transporter = Transporter::find($loggedIn->id);
        if ($request->hasFile('image')) {
            if ($transporter->image && Storage::disk('public')->exists($transporter->image)) {
                Storage::disk('public')->delete($transporter->image);
            }

            $imagePath = $request->file('image')->store("uploads/transporter/{$transporter->id}", 'public');

            $validated['image'] = $imagePath;
        }
        if (!$transporter) {
            return redirect()->back()
                ->with('error', 'Transporter not found in database.');
        }

        $transporter->update($validated);

        return redirect()
            ->route('profile')
            ->with('success', 'Profile updated successfully!');
    }
}