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!');
}
}