168 lines
5.2 KiB
PHP
Executable file
168 lines
5.2 KiB
PHP
Executable file
<?php
|
|
|
|
namespace App\Http\Controllers\Web;
|
|
|
|
|
|
use Request;
|
|
use App\User;
|
|
use Validator;
|
|
use App\Services\Util;
|
|
use GuzzleHttp\Client;
|
|
use App\Mail\MailContact;
|
|
use App\Models\UserLevel;
|
|
use App\Services\UserService;
|
|
use App\Mail\MailVerifyAccount;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Repositories\UserRepository;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
|
|
class RegisterController extends Controller
|
|
{
|
|
|
|
private $GOOGLE_ReCAPTCHA_KEY = "6LeeZosUAAAAAG907fMMqO4BFgsiR4ANDodd8FlU";
|
|
private $GOOGLE_ReCAPTCHA_SECRET = "6LeeZosUAAAAADIy2fyR4RG3EuM-Zdz7Pa2Qmb1J";
|
|
|
|
protected $userRepo;
|
|
|
|
|
|
/**
|
|
* Create a new controller instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
|
|
public function __construct(UserRepository $userRepo)
|
|
{
|
|
$this->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;
|
|
}
|
|
}
|