Edit File: AuthController.php
<?php namespace App\Http\Controllers\Api; use App\Models\User; use App\Models\Device; use App\Models\Setting; use App\Traits\ApiTrait; use App\Models\userDevices; use App\Traits\DeviceTrait; use Illuminate\Support\Arr; use Illuminate\Support\Str; use App\Rules\CheckCodeRule; use App\Traits\GeneralTrait; use Illuminate\Http\Request; use App\Models\Authentication; use App\Models\DelegateCompany; use App\Models\DelegateJoinrequest; use App\Http\Controllers\Controller; use App\Http\Resources\UserResource; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use App\Http\Resources\UserCollection; use App\Http\Resources\CompanyResource; use App\Http\Resources\DelegateResource; use Illuminate\Support\Facades\Validator; use App\Http\Requests\Api\Auth\LoginRequest; use App\Http\Requests\Api\Auth\LogoutRequest; use App\Http\Requests\Api\Auth\RegisterRequest; use App\Http\Requests\Api\Auth\ActivationRequest; use App\Http\Requests\Api\Auth\ResendCodeRequest; use App\Http\Requests\Api\Auth\MobileLoginRequest; use App\Http\Requests\Api\Auth\ResetPasswordRequest; use App\Http\Requests\Api\Auth\ForgetPasswordRequest; use App\Http\Requests\Api\Auth\SignUpWithSocialRequest; use App\Http\Requests\Api\Auth\DelegateLoginRequest; use App\Http\Requests\Api\Auth\DelegateOrCompanyRegisterRequest; use Log; class AuthController extends Controller { use ApiTrait, GeneralTrait; public function register( RegisterRequest $request ) { $number = $this->convert2english( $request->phone ); $phone = $this->phoneValidate( $number ); $Unique = $this->is_uniqueUser( 'phone', $phone,$request->country_key ); if ( $Unique ) { $msg = trans( 'auth.phone_unique' ); return $this->failMsg( $msg ); } // $request[ 'password' ] = Hash::make( $request[ 'password' ] ); $request[ 'remember_token' ] = Str::random( 10 ); $request[ 'phone' ] = $phone; $request[ 'status' ] = 'pending'; $user = User::create( $request->except( 'password_confirmation', 'device_id', 'device_type' ) ); $user->createOrUpdateDevice( $request->toArray() ); $user->sendVerificationCode(); $data[ 'token' ] = $user->createToken( 'Laravel Password Grant Client' )->accessToken; $data[ 'user' ] = new UserResource( $user ); return $this->successReturn( '', $data ); } public function delegateRegister( DelegateOrCompanyRegisterRequest $request ) { $number = $this->convert2english( $request->phone ); $phone = $this->phoneValidate( $number ); $Unique = $this->is_uniqueUser( 'phone', $phone ,$request->country_key ); if ( $Unique ) { $msg = trans( 'auth.phone_unique' ); return $this->failMsg( $msg ); } $company = $request->input( 'type' ); $request[ 'remember_token' ] = Str::random( 10 ); $request[ 'phone' ] = $phone; $request[ 'status' ] = 'pending'; $request[ 'invitation_code' ] = Str::random( 6 ); if ( $request->type == 'company' ) { $company = User::create([ 'type'=>'company','is_available'=>1,'completed_info'=>'true' , 'phone' => $phone ,'country_key'=>$request['country_key'],'name'=>$request['name'],'avatar'=>$request['avatar']] ); $company->createOrUpdateDevice( $request->toArray() ); $company->sendVerificationCode(); DelegateCompany::create( $request->only( 'city_id','commercial_image','commercial_number', 'category_id', 'car_type_id', 'car_numbers', 'driving_license_image', 'car_front_image', 'bank_iban_number', 'bank_account_owner', 'bank_name', 'bank_account_number' ) + [ 'user_id' => $company->id, 'name' => $company->name ] ); $companyData[ 'token' ] = $company->createToken( 'Laravel Password Grant Client' )->accessToken; $companyData[ 'user' ] = new CompanyResource( $company ); return $this->dataReturn( $companyData ); } elseif ( $request->type == 'delegate' ) { $delegate = User::create([ 'type'=>'delegate','is_available'=>1,'completed_info'=>'true' , 'phone' => $phone ,'country_key'=>$request['country_key'],'name'=>$request['name'],'avatar'=>$request['avatar']] ); $delegate->createOrUpdateDevice( $request->toArray() ); $delegate->sendVerificationCode(); DelegateJoinrequest::create( $request->only( 'country_key', 'city_id', 'category_id', 'car_type_id', 'address', 'identity_card_number', 'car_numbers', 'identity_card_image', 'driving_license_image', 'car_front_image', 'bank_iban_number', 'bank_account_owner', 'bank_name', 'bank_account_number' ) + [ 'user_id' => $delegate->id, 'phone' => $delegate->phone, 'fullname' => $delegate->name ] ); $delegateData[ 'token' ] = $delegate->createToken( 'Laravel Password Grant Client' )->accessToken; $delegateData[ 'user' ] = new DelegateResource( $delegate ); return $this->dataReturn( $delegateData ); } } public function login( LoginRequest $request ) { $number = $this->convert2english( $request->phone ); $phone = $this->phoneValidate( $number ); $user = User::where( [ 'phone'=> $phone, 'type'=>'user' ] )->first(); if ( Auth::attempt( [ 'phone' => $phone ] ) ) { $user = Auth::user(); $user->createOrUpdateDevice( $request->toArray() ); $data[ 'token' ] = $user->createToken( 'Laravel Password Grant Client' )->accessToken; $data[ 'user' ] = new UserResource( $user ); return $this->successReturn( '', $data ); } else { $msg = trans( 'auth.wrong_credentials' ); return $this->failMsg( $msg ); } } public function mobileDelegateLogin(MobileLoginRequest $request){ $number = $this->convert2english($request->phone); $phone = $this->phoneValidate($number); $request['phone']=$phone; if(User::where('phone','=',$phone)->where('country_key','=',$request['country_key'])->where('type','user')->first()){ $msg = trans('auth.phone_unique'); return $this->failMsg($msg); } if($user = User::where('phone','=',$phone)->where('country_key','=',$request['country_key'])->where('type','delegate')->first()){ if($user->status == 'block'){ $msg = trans('auth.blocked_user'); return $this->failMsg($msg); } $user->update(['status'=>'pending']); }else{ if(isset($request->social_id)){ $authentication =Authentication::with('user')->where('uid','=',$request->social_id)->first(); if($authentication){ $user =User::where('id','=',$authentication->user_id)->first(); $user->update([ 'phone'=>$phone, ]); }else{ $request['status'] = 'pending'; $request['completed_info'] = 'false'; $request['type'] = 'delegate'; $user = User::create($request->except('password_confirmation', 'device_id', 'device_type')); } }else{ $request['status'] = 'pending'; $request['completed_info'] = 'false'; $request['type'] = 'delegate'; $user = User::create($request->except('password_confirmation', 'device_id', 'device_type')); } } $user->createOrUpdateDevice($request->toArray()); $user->sendVerificationCode(); $data['token'] = $user->createToken('Laravel Password Grant Client')->accessToken; $data['user'] = new DelegateResource($user); return $this->successReturn('', $data); } public function logout( LogoutRequest $request ) { $token = $request->user()->token(); $request->user()->deleteDevice( $request->toArray() ); $token->revoke(); $msg = trans( 'auth.logout_success' ); return $this->successMsg( $msg ); } public function accountActivation( ActivationRequest $request ) { $user = $request->user(); if ( $user->code != $request[ 'code' ] ) { $msg = trans( 'auth.invalid_code' ); return $this->failMsg( $msg ); } $user->markAsActive(); if($user->type=='delegate'){ $data[ 'user' ] = new DelegateResource( $user ); } if($user->type=='company'){ $data[ 'user' ] = new CompanyResource( $user ); } if($user->type=='user'){ $data[ 'user' ] = new UserResource( $user ); } return $this->successReturn( '', $data ); } public function forgetPassword( ForgetPasswordRequest $request ) { $number = $this->convert2english( $request->phone ); $phone = $this->phoneValidate( $number ); $user = User::where( 'phone', $phone )->first(); if ( !$user ) { $msg = trans( 'auth.user_not_found' ); return $this->failMsg( 'User not Exists' ); } $user->sendVerificationCode(); $msg = trans( 'auth.activation_code_sent' ); return $this->successMsg( $msg ); } public function resetPassword( ResetPasswordRequest $request ) { $number = $this->convert2english( $request->phone ); $phone = $this->phoneValidate( $number ); $user = User::where( 'phone', $phone )->first(); if ( !$user ) { $msg = trans( 'auth.user_not_found' ); return $this->failMsg( 'User not Exists' ); } if ( $user->code != $request[ 'code' ] ) { $msg = trans( 'auth.invalid_code' ); return $this->failMsg( $msg ); } // $user->password = Hash::make( $request[ 'password' ] ); $user->update(); $msg = trans( 'auth.password_changed' ); return $this->successMsg( $msg ); } public function resendCode( ResendCodeRequest $request ) { $number = $this->convert2english( $request->phone ); $phone = $this->phoneValidate( $number ); $user = User::where( 'phone', $phone )->first(); if ( !$user ) { $user = User::where( 'changed_phone', $phone )->first(); } if ( !$user ) { $msg = trans( 'auth.user_not_found' ); return $this->failMsg( $msg ); } $user->sendVerificationCode(); $msg = trans( 'auth.activation_code_sent' ); return $this->successMsg( $msg ); } public function mobileLogin(MobileLoginRequest $request){ $number = $this->convert2english($request->phone); $phone = $this->phoneValidate($number); $request['phone']=$phone; if(User::where('phone','=',$phone)->where('country_key','=',$request['country_key'])->where('type','delegate')->first()){ $msg = trans('auth.phone_unique'); return $this->failMsg($msg); } if($user = User::where('phone','=',$phone)->where('country_key','=',$request['country_key'])->where('type','user')->first()){ if($user->status == 'block'){ $msg = trans('auth.blocked_user'); return $this->failMsg($msg); } $user->update(['status'=>'pending']); }else{ if(isset($request->social_id)){ $authentication =Authentication::with('user')->where('uid','=',$request->social_id)->first(); if($authentication){ $user =User::where('id','=',$authentication->user_id)->first(); $user->update([ 'phone'=>$phone, ]); }else{ $request['status'] = 'pending'; $request['completed_info'] = 'false'; $user = User::create($request->except('password_confirmation', 'device_id', 'device_type')); } }else{ $request['status'] = 'pending'; $request['completed_info'] = 'false'; $user = User::create($request->except('password_confirmation', 'device_id', 'device_type')); } } $user->createOrUpdateDevice($request->toArray()); $user->sendVerificationCode(); $data['token'] = $user->createToken('Laravel Password Grant Client')->accessToken; $data['user'] = new UserResource($user); return $this->successReturn('', $data); } #social public function checkUserSignInSocial( SignUpWithSocialRequest $request ) { $data = []; $lang = $request->header( 'lang' ); if ( $authentication = Authentication::with( 'user' )->where( 'uid', '=', $request->social_id )->first() ) { $authentication->update( [ 'username'=>$request->name ?? '', 'email'=>$request->email??'', ] ); if ( $user = $authentication->user ) { $user->update( [ 'name'=>$request->name ?? '', 'email'=>$request->email??'', 'phone'=>$request->phone??'', 'status'=>'active', 'active'=>1, 'completed_info'=>'true', ] ); $data[ 'registered_social' ] = false; $data[ 'phone_registered' ] = ( $user->phone != null )? true : false; } } else { if ( $request->email && $user = User::where( 'email', '=', $request->email )->first() ) { $user->update( [ 'name'=>$request->name ?? '' ] ); $authentication = Authentication::create( [ 'uid' => $request->social_id, 'user_id' => $user->id, 'username' => $request->name, 'email' => $request->email, ] ); $data[ 'phone_registered' ] = ( $user->phone != null )? true : false; $data[ 'registered_social' ] = true; } else { $user = User::create( [ 'name'=>$request->name ?? '', 'email'=>$request->email??'', 'phone'=>$request->phone??'', 'status'=>'active', 'active'=>1, 'completed_info'=>'true', ] ); $user->code = $user->sendVerificationCode(); $user->update(); $authentication = Authentication::create( [ 'uid' => $request->social_id, 'user_id' => $user->id, 'username' => $request->name, 'email' => $request->email, ] ); $data[ 'phone_registered' ] = ( $user->phone != null )? true : false; $data[ 'registered_social' ] = false; } } $user->createOrUpdateDevice( $request->toArray() ); $is_registered = false; if ( $user->name ) { $is_registered = true; } else { $is_registered = false; } $data[ 'token' ] = $user->createToken( 'Laravel Password Grant Client' )->accessToken; $data[ 'user' ] = new UserResource( $user ); $data[ 'user' ][ 'google_places' ] = Setting::where( 'key', 'google_places' )->first()->value; $data[ 'user' ][ 'is_registered' ] = $is_registered; return $this->successReturn( '', $data ); } }
Back to File Manager