Skip to content

Commit 43b27e8

Browse files
committed
google auth update
1 parent 9324df3 commit 43b27e8

File tree

4 files changed

+91
-13
lines changed

4 files changed

+91
-13
lines changed

app/Http/Controllers/Auth/SocialAuthController.php

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,39 @@ public function redirectToGoogle(Request $request)
1919
// 1. Validation (s'assurer que l'URL d'origine est valide)
2020
$request->validate(['origin_url' => 'required|url']);
2121
$originUrl = $request->input('origin_url');
22-
2322
// 2. Stocker l'URL du frontend dans la session (ou passer un paramètre crypté dans 'state')
2423
// Utiliser la session est le plus simple pour cet exemple
25-
session()->put('socialite_origin_url', $originUrl);
26-
24+
$state = base64_encode(json_encode([
25+
'origin_url' => $originUrl
26+
]));
2727
// 3. Rediriger vers Google
28-
return Socialite::driver('google')->stateless()->redirect();
28+
return Socialite::driver('google')->stateless()->with(['state' => $state]) ->redirect();
2929
}
3030
public function handleGoogleCallback(Request $request): RedirectResponse
3131
{
32-
$frontendUrl = env('FRONTEND_URL', 'http://localhost:3000');
33-
32+
$stateData = json_decode(base64_decode($request->input('state')), true);
33+
$originUrl = $stateData['origin_url'] ?? null;
3434
try{
3535
$googleUser = Socialite::driver('google')->stateless()->user();
3636
} catch (\Exception $e) {
3737
Log::error("Erreur de callback Google: " . $e->getMessage());
38-
return redirect("{$frontendUrl}/login?error=google_auth_failed");
38+
return redirect("{$originUrl}/login?error=google_auth_failed");
3939
}
4040
$email = $googleUser->getEmail();
4141
$user = User::where('email', $email)->first();
42-
42+
$role_id=0;
4343
if($user){
44+
if (str_contains($originUrl, 'seller.akevas.com')) {
45+
$frontendUrl = "https://seller.akevas.com";
46+
$role_id = 2;
47+
} elseif (str_contains($originUrl, 'delivery.akevas.com')) {
48+
$frontendUrl = "https://delivery.akevas.com";
49+
$role_id = 4;
50+
} else {
51+
$frontendUrl = "https://akevas.com";
52+
$role_id = 3;
53+
}
54+
4455
if (is_null($user->google_id)) {
4556
$user->google_id = $googleUser->getId();
4657
}
@@ -51,7 +62,11 @@ public function handleGoogleCallback(Request $request): RedirectResponse
5162
return redirect("{$frontendUrl}/login?code=401");
5263
}
5364

54-
$scope = $this->getUserScope($user->role_id);
65+
if($user->role_id != $role_id){
66+
67+
return redirect("{$frontendUrl}/login?code=500");
68+
}else{
69+
$scope = $this->getUserScope($user->role_id);
5570
$tokenResult = $user->createToken('GoogleAuthToken', [$scope]);
5671
$accessToken = $tokenResult->accessToken;
5772

@@ -61,15 +76,15 @@ public function handleGoogleCallback(Request $request): RedirectResponse
6176
$domain = (config('app.env') === 'production') ? '.akevas.com' : null;
6277
$secure = config('app.env') === 'production';
6378

64-
$origin = $request->headers->get('origin');
6579

66-
if(str_contains($origin, 'seller.akevas.com')){
80+
81+
if(str_contains($originUrl, 'seller.akevas.com')){
6782
$cookieNameAccess = 'accessTokenSeller';
6883
$cookieNameRefresh = 'refreshTokenSeller';
69-
}elseif(str_contains($origin, 'delivery.akevas.com')){
84+
}elseif(str_contains($originUrl, 'delivery.akevas.com')){
7085
$cookieNameAccess = 'accessTokenDelivery';
7186
$cookieNameRefresh = 'refreshTokenDelivery';
72-
}else if (str_contains($origin, 'localhost')) {
87+
}else if (str_contains($originUrl, 'localhost')) {
7388
$cookieNameAccess = 'accessTokenSeller';
7489
$cookieNameRefresh = 'refreshTokenSeller';
7590
}else{
@@ -82,6 +97,8 @@ public function handleGoogleCallback(Request $request): RedirectResponse
8297
->cookie($cookieNameRefresh, $refreshToken,
8398
60*24*30, // Longue durée de vie
8499
'/', $domain, $secure, true, false, 'none');
100+
}
101+
85102
}
86103

87104
protected function getUserScope(int $roleId): string

app/Http/Controllers/Seller/ProductController.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use App\Services\GenerateUrlResource;
1717
use App\Models\ProductAttributesValue;
1818
use App\Http\Resources\ProductResource;
19+
use App\Http\Resources\ProductEditResource;
1920

2021
class ProductController extends Controller
2122
{
@@ -278,4 +279,9 @@ public function restoreProduct($id){
278279
$product->save();
279280
return response()->json(['message' => 'Product restore successfully']);
280281
}
282+
283+
public function getEditProduct($url){
284+
$product=Product::where('product_url',$url)->first();
285+
return response()->json(new ProductEditResource($product));
286+
}
281287
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
namespace App\Http\Resources;
4+
5+
use App\Models\Town;
6+
use App\Models\Category;
7+
use Illuminate\Http\Request;
8+
use App\Http\Resources\ImageResource;
9+
use App\Http\Resources\CategoryResource;
10+
use App\Http\Resources\WholeSalePriceResource;
11+
use Illuminate\Http\Resources\Json\JsonResource;
12+
13+
class ProductEditResource extends JsonResource
14+
{
15+
/**
16+
* Transform the resource into an array.
17+
*
18+
* @return array<string, mixed>
19+
*/
20+
public function toArray(Request $request): array
21+
{
22+
return [
23+
"id" => $this->id,
24+
"product_name" => $this->product_name,
25+
"product_description" => $this->product_description,
26+
"isRejet"=>$this->isRejet,
27+
"shop_name" => $this->shop->shop_name,
28+
"user_id"=>$this->shop->user_id,
29+
"shop_key" => $this->shop->shop_key,
30+
"shop_created_at" => $this->shop->created_at,
31+
"product_gender" => $this->product_gender,
32+
"shop_profile" => URL("/storage/" . $this->shop->shop_profile),
33+
"reviewCount"=>$this->reviews->count(),
34+
"product_url" => $this->product_url,
35+
"is_only_wholesale"=>$this->is_only_wholesale,
36+
"whatsapp_number"=>$this->whatsapp_number,
37+
"isVariation" => $this->variations->isNotEmpty() ? true : null,
38+
"productWholeSales"=>WholeSalePriceResource::collection($this->wholesalePrices),
39+
"product_images" => ImageResource::collection($this->images),
40+
"product_profile" => URL("/storage/" . $this->product_profile),
41+
"product_price" => $this->product_price,
42+
"isWholeSale"=>$this->is_wholesale,
43+
"product_quantity" => $this->product_quantity,
44+
"parent_category" => CategoryResource::collection($this->categories->whereNull('parent_id')),
45+
"child_category" => CategoryResource::collection($this->categories->whereNotNull('parent_id')),
46+
"residence"=>Town::where('id',$this->product_residence)->select('town_name')->first()->town_name,
47+
"status" => $this->status,
48+
"isSubscribe" => $this->isSubscribe,
49+
"variations" => $this->getVariations(),
50+
"created_at" => $this->created_at,
51+
"subscribe_id" => $this->subscribe_id
52+
];
53+
}
54+
}

routes/api.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@
202202
Route::get('/seller/orders/stats', [OrderListController::class, 'getOrderStats']);
203203
Route::get('/seller/order/{id}',[OrderListController::class,'getOrderById']);
204204

205+
Route::get('/seller/edit/product/{url}',[ProductController::class,'getEditProduct']);
205206

206207
});
207208

0 commit comments

Comments
 (0)