customer auth fix

This commit is contained in:
merdan 2022-02-06 20:29:52 +05:00
parent 8374d906eb
commit dbd929b4c7
1 changed files with 21 additions and 14 deletions

View File

@ -4,12 +4,14 @@ namespace Sarga\API\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Webkul\API\Http\Controllers\Shop\SessionController; use Webkul\API\Http\Controllers\Shop\SessionController;
use Webkul\API\Http\Resources\Customer\Customer as CustomerResource; use Webkul\API\Http\Resources\Customer\Customer as CustomerResource;
use Webkul\Customer\Repositories\CustomerGroupRepository; use Webkul\Customer\Repositories\CustomerGroupRepository;
use Webkul\RestApi\Http\Controllers\V1\Shop\Customer\AuthController;
class Customers extends SessionController class Customers extends AuthController
{ {
/** /**
* Method to store user's sign up form data to DB. * Method to store user's sign up form data to DB.
@ -24,7 +26,8 @@ class Customers extends SessionController
'last_name' => 'required|string', 'last_name' => 'required|string',
'phone' => 'required|digits:8|unique:customers,phone', 'phone' => 'required|digits:8|unique:customers,phone',
'password' => 'required|min:6', 'password' => 'required|min:6',
'gender' => 'in:Male,Female' 'gender' => 'in:Male,Female',
'device_name'=> 'required'
]); ]);
if ($validation->fails()) { if ($validation->fails()) {
@ -57,10 +60,10 @@ class Customers extends SessionController
Event::dispatch('customer.after.login', $request->get('phone')); Event::dispatch('customer.after.login', $request->get('phone'));
return response()->json([ return response([
'token' => $jwtToken, 'data' => new \Webkul\RestApi\Http\Resources\V1\Shop\Customer\CustomerResource($customer),
'message' => 'Logged in successfully.', 'message' => 'Registered in successfully.',
'data' => new CustomerResource($customer), 'token' => $customer->createToken($request->device_name, ['role:customer'])->plainTextToken,
]); ]);
} }
@ -75,6 +78,7 @@ class Customers extends SessionController
$validation = Validator::make($request->all(), [ $validation = Validator::make($request->all(), [
'phone' => 'required|digits:8', 'phone' => 'required|digits:8',
'password' => 'required|min:6', 'password' => 'required|min:6',
'device_name' => 'required',
]); ]);
if ($validation->fails()) { if ($validation->fails()) {
@ -82,22 +86,25 @@ class Customers extends SessionController
return response()->json(['errors'=>$validation->getMessageBag()->all()],422); return response()->json(['errors'=>$validation->getMessageBag()->all()],422);
} }
$jwtToken = null; $customer = $this->customerRepository->where('phone', $request->phone)->first();
if (! $jwtToken = auth()->guard($this->guard)->attempt($request->only(['phone', 'password']))) { if (! $customer || ! Hash::check($request->password, $customer->password)) {
return response()->json([ return response()->json([
'error' => 'Invalid Phone Number or Password', 'error' => 'The provided credentials are incorrect.',
], 401); ], 401);
} }
Event::dispatch('customer.after.login', $request->get('phone')); Event::dispatch('customer.after.login', $request->get('phone'));
$customer = auth($this->guard)->user(); /**
* Preventing multiple token creation.
*/
$customer->tokens()->delete();
return response()->json([ return response([
'token' => $jwtToken, 'data' => new \Webkul\RestApi\Http\Resources\V1\Shop\Customer\CustomerResource($customer),
'message' => 'Logged in successfully.', 'message' => 'Logged in successfully.',
'data' => new CustomerResource($customer), 'token' => $customer->createToken($request->device_name, ['role:customer'])->plainTextToken,
]); ]);
} }
@ -108,7 +115,7 @@ class Customers extends SessionController
*/ */
public function store(Request $request) public function store(Request $request)
{ {
$customer = auth($this->guard)->user(); $customer = $request->user();
$validation = Validator::make($request->all(), [ $validation = Validator::make($request->all(), [
'first_name' => 'required', 'first_name' => 'required',