userRepo = $userRepo; } public function index() { if (config('app.debug')) { \Log::channel('domain')->debug('RegisterController: index - Session user_shop', [ 'session_user_shop_id' => \Session::get('user_shop')?->id, 'session_user_shop_name' => \Session::get('user_shop')?->name, 'session_user_shop_user_id' => \Session::get('user_shop')?->user_id, 'session_id' => \Session::getId(), 'session_domain' => config('session.domain'), 'request_host' => request()->getHost(), 'all_session_keys' => array_keys(\Session::all()) ]); } $data = [ 'GOOGLE_ReCAPTCHA_KEY' => $this->GOOGLE_ReCAPTCHA_KEY, 'user_shop' => Util::getUserShop(), 'yard_instance' => 'webshop', ]; return view('web.templates.registrierung', $data); } public function member($member_id = false) { if (!$member_id) { return redirect('/registrierung'); } $user_id = (int) str_replace('m', '', $member_id) - config('mivita.add_number_id'); $user = User::find($user_id); if (!$user || !$user->isActive() || !$user->isActiveAccount()) { return redirect('/registrierung'); } $data = [ 'GOOGLE_ReCAPTCHA_KEY' => $this->GOOGLE_ReCAPTCHA_KEY, 'user_shop' => Util::getUserShop(), 'from_member_id' => $member_id, 'yard_instance' => 'webshop', ]; return view('web.templates.registrierung', $data); } public function register() { $rules = array( 'salutation' => 'required', 'first_name' => 'required', 'last_name' => 'required', 'email' => 'required|string|email|max:255|unique:users', 'email-confirm' => 'required|same:email', 'password' => 'required|string|min:6|confirmed', 'password_confirmation' => 'required|string|min:6', 'g-recaptcha-response' => 'required|recaptcha', 'accepted_data_protection' => 'required', ); Validator::extend('recaptcha', function ($attribute, $value, $parameters, $validator) { return $this->reCaptcha_validate($attribute, $value, $parameters, $validator); }); $validator = Validator::make(Request::all(), $rules); if ($validator->fails()) { return back()->withErrors($validator)->withInput(Request::all()); } $user_shop = Util::getUserShop(); $data = Request::all(); $user = $this->userRepo->create($data); $confirmation_code = UserService::createConfirmationCode(); $m_sponsor_id = 1; if ($user_shop) { $m_sponsor_id = $user_shop->user->id; } if (isset($data['from_member_id'])) { $m_sponsor_id = (int) str_replace('m', '', $data['from_member_id']) - config('mivita.add_number_id'); } $user->lang = !empty(\App::getLocale()) ? \App::getLocale() : "de"; $user->confirmation_code = $confirmation_code; $user->confirmation_code_to = date('Y-m-d H:i:s', strtotime('+1 week')); $user->confirmation_code_remider = 0; $user->m_sponsor = $m_sponsor_id; $UserLevel = UserLevel::where('default', 1)->first(); if ($UserLevel) { $user->m_level = $UserLevel->id; } else { $user->m_level = 10; } $user->save(); $user->account->data_protection = now(); $user->account->save(); Mail::to($user->email)->locale($user->getLocale())->send(new MailVerifyAccount($confirmation_code, User::find($user->id))); return redirect('/registrierung/finish'); } public function finish() { $data = [ 'user_shop' => Util::getUserShop(), 'yard_instance' => 'webshop', ]; return view('web.templates.registrierung_finish', $data); } private function reCaptcha_validate($attribute, $value, $parameters, $validator) { $client = new Client(); $response = $client->post( 'https://www.google.com/recaptcha/api/siteverify', [ 'form_params' => [ 'secret' => $this->GOOGLE_ReCAPTCHA_SECRET, 'response' => $value ] ] ); $body = json_decode((string)$response->getBody()); return $body->success; } }