MINI Sh3ll
<?php
namespace App\Http\Controllers\Auth;
use App\Solar\Repositories\Verification\VerificationInterface;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Response;
use App\User;
use Auth;
use App\Http\Requests\SendSMSRequest;
use App\Http\Requests\SubmitOTPRequest;
use App\Solar\Repositories\User\UserInterface;
use App\Notifications\InviteUser;
use App\Notifications\WelcomeMail;
use Illuminate\Support\Facades\Hash;
class LoginWithOtpController extends Controller
{
public function __construct(UserInterface $user)
{
$this->user = $user;
}
// function to show login with opt main page
public function index() {
return view('auth.loginWithOtp');
}
// Sending SMS to mobile
public function sendSMS(SendSMSRequest $request, VerificationInterface $repoVerify) {
$verify = $repoVerify->sendMobileVerification($request);
if($verify['status'] == true) {
return view('auth.enterOtp', ['valid'=>true, 'phone'=>$request->input('phone'), 'message'=>'SignInWithOtp', 'title'=>$request['title']]);
}else
$message = 'Invalid phone number';
if(isset($verify['message'])&& !empty($verify['message'])){
$message = $verify['message'];
}
return view('auth.loginWithOtp', ['valid' => false, 'error' => $message, 'mobile' => $request['mobile']]);
}
public function otpPage() {
return view('auth.enterOtp', ['valid' => true]);
}
// function to submit otp
public function submitOtp(SubmitOTPRequest $request, VerificationInterface $repoVerify) {
$verify = $repoVerify->verifyOtp($request);
if($verify) {
return $verify;
}else
return view('auth.enterOtp', ['valid' => true, 'error' => 'Invalid otp provided', 'phone' => $request['phone']]);
}
/*
* Change password blade
*/
public function changePassword()
{
return view('auth.passwords.change_password');
}
/*
* Check email and mobile verification, if not, send verification link and otp to mobile number
*/
public function loginVerification(Request $request, $request_from, VerificationInterface $repoVerify)
{
$email_msg = '';
$otp_msg = '';
$user = User::where('email', $request['email'])->first();
if(!$user) {
session()->flash('message', 'Wrong Email or password!');
if(($request_from == 'non_registration')){
return redirect()->route('nonRegistered');
}else{
return redirect()->route('login');
}
}
if($request['phone']==null) {
$user->notify(new InviteUser($user));
$email_msg = 'Verification link is sent to your email address. Please verify email link.';
} else {
if($user['is_email_verified'] == 0){
$password = generate_password();
$user->verify_token = generateRandomString('20');
$user->password = Hash::make($password);
$user->save();
$user->password = $password;
$user->notify(new welcomeMail($user));
$email_msg = 'Invitation mail sent succeessfully.';
}
if($user['is_mobile_verified'] == 0){
$verify = $repoVerify->sendMobileVerification($request);
$otp_msg = 'OTP send to mobile number.';
}
}
if(($request_from == 'non_registration')){
return redirect()->route('nonRegistered')->with('success', $email_msg.' ' .$otp_msg);
}
if(($request_from == 'login')){
session()->flash('status', $email_msg.' ' .$otp_msg);
if(!empty($otp_msg)){
return view('auth.enterOtp', ['valid'=>true, 'phone'=>$request['phone'] ]);
}
}
if(($request_from == 'non_registration')){
return redirect()->route('nonRegistered');
}else{
return view('auth.verify',compact('user'));
}
}
//check Email Already exist
public function checkEmail(Request $req) {
$checkMail = $this->user->checkEmail($req->email);
if (count($checkMail)>0) {
return 0;
} else {
return 1;
}
}
//check Number Already exist
public function checkNumber(Request $req) {
$checkNumber = $this->user->checkMobile($req->mobile);
if (count($checkNumber)>0) {
return 0;
} else {
return 1;
}
}
}
OHA YOOOO