user()) { if($request->user()) { return redirect('/'); } return view('auth.iar'); } public function store(Request $request) { abort_unless(config('auth.iar') == true, 404); $rules = [ 'email' => 'required|email:rfc,dns,spoof,strict|unique:users,email|unique:app_registers,email', ]; if ((bool) config_cache('captcha.enabled') && (bool) config_cache('captcha.active.register')) { $rules['h-captcha-response'] = 'required|captcha'; } $this->validate($request, $rules); $email = $request->input('email'); $code = str_pad(random_int(0, 999999), 6, '0', STR_PAD_LEFT); $exists = AppRegister::whereEmail($email)->where('created_at', '>', now()->subHours(24))->count(); if($exists && $exists > 3) { $errorParams = http_build_query([ 'status' => 'error', 'message' => 'Too many attempts, please try again later.' ]); return redirect("pixelfed://verifyEmail?{$errorParams}"); } DB::beginTransaction(); $registration = AppRegister::create([ 'email' => $email, 'verify_code' => $code, 'email_delivered_at' => now() ]); try { Mail::to($email)->send(new InAppRegisterEmailVerify($code)); } catch (\Exception $e) { DB::rollBack(); $errorParams = http_build_query([ 'status' => 'error', 'message' => 'Failed to send verification code' ]); return redirect("pixelfed://verifyEmail?{$errorParams}"); } DB::commit(); $queryParams = http_build_query([ 'email' => $request->email, 'expires_in' => 3600, 'status' => 'success' ]); return redirect("pixelfed://verifyEmail?{$errorParams}"); } }