elektronika_bagisto/packages/Sarga/API/Http/Controllers/Authentication.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,
]);
}
}