Edit File: AuthController.php
<?php namespace App\Http\Controllers\Api\User; use App\Http\Requests\Api\User\Auth\VerifyLoginRequest; use App\Traits\ResponseTrait; use App\Http\Controllers\Controller; use App\Http\Resources\Api\UserResource; use App\Http\Requests\Api\User\Auth\LoginRequest; use App\Http\Requests\Api\User\Auth\ActivateRequest; use App\Http\Requests\Api\User\Auth\CompleteInterestRequest; use App\Http\Requests\Api\User\Auth\CompleteProfileRequest; use App\Http\Requests\Api\User\Auth\LoginOrRegisterRequest; use App\Http\Requests\Api\User\Auth\RegisterRequest; use App\Http\Requests\Api\User\Auth\ResendCodeRequest; use App\Models\User; use App\Http\Requests\Api\User\Auth\UpdateLocationRequest; use App\Services\Auth\AuthenticationService; use Illuminate\Http\JsonResponse; class AuthController extends Controller { use ResponseTrait; protected $service; public function __construct() { $this->service = new AuthenticationService(User::class); } public function loginOrRegister(LoginOrRegisterRequest $request) { $data = $this->service->loginOrRegister($request->validated()); return $this->response($data['key'], $data['msg'], $data['user']->getResource()); } /** * Register a new user. * @param RegisterRequest $request * @return JsonResponse */ public function register(RegisterRequest $request): JsonResponse { $data = $this->service->register($request->validated()); return $this->response($data['key'], $data['msg'], $data['user'] == [] ? [] : new UserResource($data['user'])); } /** * Resend the activation code. * @param ResendCodeRequest $request * @return JsonResponse */ public function resendCode(ResendCodeRequest $request): JsonResponse { $data = $this->service->resendCode($request); return $this->response($data['key'], $data['msg'], new UserResource($data['user'])); } /** * Activate the user. * @param ActivateRequest $request * @return JsonResponse */ public function activate(ActivateRequest $request): JsonResponse { $data = $this->service->activate($request); $token = $data['user']->login(); return $this->response($data['key'], $data['msg'], UserResource::make($data['user'])->setToken($token)); } /** * Login the user. * @param LoginRequest $request * @return JsonResponse */ public function login(LoginRequest $request): JsonResponse { $data = $this->service->login($request); $user = UserResource::make($data['user']); switch ($data['key']) { case 'fail': $response = $this->failMsg($data['msg']); break; case 'blocked': $response = $this->blockedReturn($user, $data['msg']); break; case 'needActive': $response = $this->phoneActivationReturn($user, $data['msg']); break; case 'needVerification': $response = $this->verificationCodeReturn($user, $data['msg']); break; default: $token = $data['user']->login(); $response = $this->response('success', __('apis.signed'), $user->setToken($token)); break; } return $response; } /** * Verify the login. * Used only for login with code. * @param VerifyLoginRequest $request * @return JsonResponse */ public function verifyLogin(VerifyLoginRequest $request): JsonResponse { $data = $this->service->verifyLogin($request); if ($data['key'] == 'fail') { return $this->failMsg($data['msg']); } $token = $data['user']->login(); return $this->response($data['key'], $data['msg'], UserResource::make($data['user'])->setToken($token)); } public function completeProfile(CompleteProfileRequest $request): JsonResponse { $data = $this->service->completeProfile($request->validated()); return $this->response($data['key'], $data['msg'] , isset($data['user']) ? UserResource::make($data['user']) : null); } public function completeInterests(CompleteInterestRequest $request): JsonResponse { $data = $this->service->completeInterests($request->validated()); return $this->response($data['key'], $data['msg'] , isset($data['user']) ? UserResource::make($data['user']) : null); } public function updateLocation(UpdateLocationRequest $request): JsonResponse { $data = $this->service->updateLocation($request->validated()); return $this->response($data['key'], $data['msg'], UserResource::make($data['user'])); } /** * Logout the user. * @return JsonResponse */ public function logout(): JsonResponse { $data = $this->service->logout(); return $this->successMsg($data['msg']); } /** * Delete the user account. * @return JsonResponse */ public function deleteAccount(): JsonResponse { $data = $this->service->deleteAccount(); return $this->successMsg($data['msg']); } }
Back to File Manager