rest( data: UserRepository::guestUser()->createToken(Str::random(20))->plainTextToken, code: 201 ); } /** * Register user * * Register a new user and send a verification code to their phone number. Then make another request to verification route. */ 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) ); } /** * Login * * Send a verification code to the phone number. Then make another request to verify route. */ 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) ); } /** * Verify the code * * After verification, bearer token will be returned. */ 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(); } }