public function submitOTP(Request $request) { //get mobile number from user input $mobileNum = $request->input('mobile'); //get user type from user input $userType = $request->input('userType'); //set user email $userEmail = '*****@*****.**'; //set country code $countryCode = 61; //initial authentication API // $authy_api = new AuthyApi(config('services.authy.key')); $authy_api = new AuthyApi(config('services.authy.key'), 'http://sandbox-api.authy.com'); //sandbox //register a user through email, cellphone, country_code $user = $authy_api->registerUser($userEmail, $mobileNum, $countryCode); //generate authentication token and send it to usser $sms = $authy_api->requestSms($user->id(), array("force" => "true")); if ($sms->ok()) { //check user exist or not $results = Client::where('mobile', $mobileNum)->first(); //if user does not exist, register of him if (empty($results)) { $newUser = new Client(); $newUser->mobile = $mobileNum; $newUser->save(); } return view('auth.otp')->with('userid', $user->id())->with('mobileNum', $mobileNum)->with('userType', $userType); } else { //session()->put('message','incorrect mobile number'); return redirect('login')->with('message', 'Please input correct mobile number'); } }
public function register_authy() { $authy_api = new AuthyApi(getenv('AUTHY_TOKEN')); $user = $authy_api->registerUser($this->email, $this->phone_number, $this->country_code); //email, cellphone, country_code if ($user->ok()) { $this->authy_id = $user->id(); $this->save(); return true; } else { // something went wrong return false; } }
public function store(Request $request) { $authy = new AuthyApi(env('AUTHY_KEY', null), env('AUTHY_URL')); $login = $request->user(); try { $user = $authy->registerUser($login->email, $login->phone, $login->country_code); } catch (\Exception $e) { return redirect('/two_authenticate'); } if (!$user->ok()) { return redirect('/two_authenticate'); } try { if ($authy->verifyToken($user->id(), $request->token)) { $login->two_authenticate_until = Carbon::now()->addDays(5); $login->save(); } return redirect('/'); } catch (\Exception $e) { } return redirect('/two_authenticate'); }
/** * Store a new user * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function createNewUser(Request $request, AuthyApi $authyApi) { $this->validate($request, ['name' => 'required|string', 'email' => 'required|unique:users|email', 'password' => 'required', 'country_code' => 'required', 'phone_number' => 'required|numeric']); $values = $request->all(); $values['password'] = Hash::make($values['password']); DB::beginTransaction(); $newUser = new User($values); $newUser->save(); Auth::login($newUser); $authyUser = $authyApi->registerUser($newUser->email, $newUser->phone_number, $newUser->country_code); if ($authyUser->ok()) { $newUser->authy_id = $authyUser->id(); $newUser->save(); $request->session()->flash('status', "User created successfully"); $sms = $authyApi->requestSms($newUser->authy_id); DB::commit(); return redirect()->route('user-show-verify'); } else { $errors = $this->getAuthyErrors($authyUser->errors()); DB::rollback(); return view('newUser', ['errors' => new MessageBag($errors)]); } }
/** * Registers a new authy user * * @return void **/ private function register() { $authy = new AuthyApi($this->params->get('key')); // Gather and validate inputs $email = Request::getVar('email', null); $phone = Request::getVar('phone', null); $cc = Request::getInt('country_code', 1); if (!Validate::email($email) || !Validate::phone($phone)) { Notify::error("Invalid email or phone provided. Please try again"); App::redirect(Request::current()); } // Register the user $user = $authy->registerUser($email, $phone, $cc); // If everything checks out, we store the user id in the database if ($user->ok()) { // Store factor domain id in the database Factor::oneOrNew(0)->set(['user_id' => User::get('id'), 'domain' => 'authy', 'factor_id' => $user->id(), 'data' => json_encode(['email' => $email, 'phone' => $phone, 'country_code' => $cc])])->save(); } else { // Return errors foreach ($user->errors() as $field => $message) { Notify::error("{$field}: {$message}"); } } // Redirect for verification process to occur App::redirect(Request::current()); }