75 lines
2.4 KiB
PHP
75 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Sarga\API\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Validation\ValidationException;
|
|
use Webkul\RestApi\Http\Resources\V1\Shop\Customer\CustomerResource;
|
|
|
|
class Authentication extends \Webkul\RestApi\Http\Controllers\V1\Shop\Customer\AuthController
|
|
{
|
|
/**
|
|
* Register the customer.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function register(Request $request)
|
|
{
|
|
$request->validate([
|
|
'first_name' => 'required|string',
|
|
'last_name' => 'required|string',
|
|
'email' => 'required|email|unique:customers,email',
|
|
'password' => 'required|confirmed|min:6',
|
|
]);
|
|
|
|
$this->customerRepository->create([
|
|
'first_name' => $request->first_name,
|
|
'last_name' => $request->last_name,
|
|
'email' => $request->email,
|
|
'password' => bcrypt($request->password),
|
|
'is_verified' => 1,
|
|
'channel_id' => core()->getCurrentChannel()->id,
|
|
'customer_group_id' => $this->customerGroupRepository->findOneWhere(['code' => 'general'])->id,
|
|
]);
|
|
|
|
return response([
|
|
'message' => 'Your account has been created successfully.',
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Login the customer.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function login(Request $request)
|
|
{
|
|
$request->validate([
|
|
'email' => 'required|email',
|
|
'password' => 'required',
|
|
'device_name' => 'required',
|
|
]);
|
|
|
|
$customer = $this->customerRepository->where('email', $request->email)->first();
|
|
|
|
if (! $customer || ! Hash::check($request->password, $customer->password)) {
|
|
throw ValidationException::withMessages([
|
|
'email' => ['The provided credentials are incorrect.'],
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Preventing multiple token creation.
|
|
*/
|
|
$customer->tokens()->delete();
|
|
|
|
return response([
|
|
'data' => new CustomerResource($customer),
|
|
'message' => 'Logged in successfully.',
|
|
'token' => $customer->createToken($request->device_name, ['role:customer'])->plainTextToken,
|
|
]);
|
|
}
|
|
} |