Files
Kent-logistics-Laravel/app/Http/Controllers/UserAuthController.php

153 lines
4.6 KiB
PHP
Raw Normal View History

2025-11-07 12:08:34 +05:30
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use PHPOpenSourceSaver\JWTAuth\Facades\JWTAuth;
use App\Models\User;
class UserAuthController extends Controller
{
2025-12-01 11:44:43 +05:30
public function refreshToken()
{
2025-12-02 18:07:15 +05:30
\Log::info('🔄 refreshToken() called');
2025-12-01 11:44:43 +05:30
try {
2025-12-02 18:07:15 +05:30
// Get current token
$currentToken = JWTAuth::getToken();
if (!$currentToken) {
\Log::warning('⚠ No token provided in refreshToken()');
return response()->json([
'success' => false,
'message' => 'Token not provided',
], 401);
}
\Log::info('📥 Current Token:', ['token' => (string) $currentToken]);
// Try refreshing token
$newToken = JWTAuth::refresh($currentToken);
\Log::info('✅ Token refreshed successfully', ['new_token' => $newToken]);
2025-12-01 11:44:43 +05:30
return response()->json([
'success' => true,
'token' => $newToken,
]);
2025-12-02 18:07:15 +05:30
} catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
\Log::error('❌ TokenExpiredException in refreshToken()', [
'message' => $e->getMessage(),
]);
return response()->json([
'success' => false,
'message' => 'Token expired, cannot refresh.',
], 401);
} catch (\Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
\Log::error('❌ TokenInvalidException in refreshToken()', [
'message' => $e->getMessage(),
]);
return response()->json([
'success' => false,
'message' => 'Invalid token.',
], 401);
} catch (\Tymon\JWTAuth\Exceptions\JWTException $e) {
\Log::error('❌ JWTException in refreshToken()', [
'message' => $e->getMessage(),
]);
2025-12-01 11:44:43 +05:30
return response()->json([
'success' => false,
'message' => 'Could not refresh token.',
], 401);
2025-12-02 18:07:15 +05:30
} catch (\Exception $e) {
\Log::error('❌ General Exception in refreshToken()', [
'message' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
return response()->json([
'success' => false,
'message' => 'Unexpected error while refreshing token.',
], 500);
2025-12-01 11:44:43 +05:30
}
}
2025-11-07 12:08:34 +05:30
/**
* User Login
*/
public function login(Request $request)
{
$request->validate([
'login_id' => 'required|string', // can be email, mobile, or customer_id
'password' => 'required|string',
]);
// Find user by email OR mobile_no OR customer_id
$user = User::where('email', $request->login_id)
->orWhere('mobile_no', $request->login_id)
->orWhere('customer_id', $request->login_id)
->first();
if (!$user) {
return response()->json([
'success' => false,
'message' => 'User not found with given credentials.',
], 404);
}
// Check hashed password
if (!Hash::check($request->password, $user->password)) {
return response()->json([
'success' => false,
'message' => 'Incorrect password.',
], 401);
}
// Generate JWT token
$token = JWTAuth::fromUser($user);
return response()->json([
'success' => true,
'message' => 'Login successful.',
'token' => $token,
'user' => [
'id' => $user->id,
'customer_id' => $user->customer_id,
'customer_name' => $user->customer_name,
'company_name' => $user->company_name,
'email' => $user->email,
'mobile_no' => $user->mobile_no,
'address' => $user->address,
'pincode' => $user->pincode,
]
]);
}
2025-12-01 11:44:43 +05:30
2025-11-07 12:08:34 +05:30
/**
* User Logout
*/
public function logout(Request $request)
{
try {
JWTAuth::invalidate(JWTAuth::getToken());
return response()->json([
'success' => true,
'message' => 'Logout successful.',
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => 'Failed to logout. Token may be invalid or expired.',
], 500);
}
}
}