81 lines
2.0 KiB
PHP
81 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V1;
|
|
|
|
use App\Http\Controllers\Api\V1\Auth\Register\AuthRegisterRequest;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Api\V1\Auth\AuthLoginRequest;
|
|
use App\Http\Requests\Api\V1\Auth\AuthVerifyRequest;
|
|
use App\Models\User;
|
|
use App\Repositories\UserRepository;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
class AuthController extends Controller
|
|
{
|
|
/**
|
|
* (Auth) Guest token (walk-in-user)
|
|
*/
|
|
public function guestToken(): JsonResponse
|
|
{
|
|
return response()->rest(
|
|
data: UserRepository::guestUser()->createToken(bin2hex(random_bytes(25)))->plainTextToken,
|
|
code: 201
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Register user
|
|
*/
|
|
public function register(AuthRegisterRequest $request): JsonResponse
|
|
{
|
|
UserRepository::registerUser($request)();
|
|
|
|
sendSMSVerification($request->phone_number);
|
|
|
|
return response()->rest(
|
|
data: [],
|
|
code: 201,
|
|
message: sprintf('%s: %s', __('Verification code sent to'), $request->phone_number)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* (Auth) Login
|
|
*/
|
|
public function login(AuthLoginRequest $request): JsonResponse
|
|
{
|
|
sendSMSVerification($request->phone_number);
|
|
|
|
return response()->rest(
|
|
data: [],
|
|
code: 201,
|
|
message: sprintf('%s: %s', __('Verification code sent to'), $request->phone_number)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* (Auth) Verify the code
|
|
*/
|
|
public function verify(AuthVerifyRequest $request): JsonResponse
|
|
{
|
|
$user = User::where('phone_number', $request->phone_number)->firstOr(UserRepository::registerUser($request));
|
|
|
|
return response()->rest(
|
|
data: $user->createToken(bin2hex(random_bytes(20)))->plainTextToken,
|
|
code: 201
|
|
);
|
|
}
|
|
|
|
/**
|
|
* (Auth)* Delete user
|
|
*
|
|
* @authenticated
|
|
*/
|
|
public function delete(): JsonResponse
|
|
{
|
|
auth()->user()->delete();
|
|
|
|
return response()->rest();
|
|
}
|
|
}
|