Updates to 03-2025

This commit is contained in:
Kevin Adametz 2025-04-01 10:39:21 +02:00
parent 6167273a48
commit 9b54eb0512
348 changed files with 34535 additions and 5774 deletions

View file

@ -3,19 +3,21 @@
namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller;
use App\Mail\MailContact;
use App\Mail\MailVerifyAccount;
use App\Models\UserHistory;
use App\Repositories\UserRepository;
use App\Services\SysLog;
use App\Services\UserService;
use App\User;
use GuzzleHttp\Client;
use Request;
use Illuminate\Support\Facades\Mail;
use App\Services\Util;
use App\User;
use Validator;
use App\Services\Util;
use GuzzleHttp\Client;
use App\Services\SysLog;
use App\Mail\MailContact;
use App\Models\UserHistory;
use App\Models\UserRegister;
use App\Services\UserService;
use App\Mail\MailVerifyAccount;
use App\Http\Controllers\Controller;
use App\Repositories\UserRepository;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Mail;
class RegisterController extends Controller
@ -34,71 +36,160 @@ class RegisterController extends Controller
$this->userRepo = $userRepo;
}
public function member($member_id = false)
public function showConsentPage()
{
$data = [
'from_member_id' => session('from_member_id')
];
return view('auth.recaptcha-consent', $data);
}
public function acceptConsent()
{
if (!Request::has('recaptcha_consent')) {
return back()->withErrors(['error' => 'Bitte stimmen Sie der Verwendung von reCAPTCHA zu']);
}
session(['recaptcha_consent' => true]);
return redirect()->route('register.form');
}
public function showRegistrationForm()
{
if (!session('recaptcha_consent')) {
return redirect()->route('register.consent');
}
$data = [
'from_member_id' => session('from_member_id')
];
return view('auth.register', $data);
}
public function member($from_member_id = false)
{
$this->userRepo->clearUserRegister();
if(!$from_member_id){
return redirect()->route('register.consent');
}
//ist ein gültiger Member ID und ist aktiv?
$user_id = (int) str_replace('gs', '', $from_member_id) - config('main.add_number_id');
$user = User::find($user_id);
if(!$user || !$user->isActive() || !$user->isActiveAccount()){
return redirect()->route('register.consent');
}
session(['from_member_id' => $from_member_id]);
return redirect()->route('register.consent');
/*
//hat einen Member ID?
if(!$member_id){
return redirect('/registrierung');
}
//ist ein gültiger Member ID und ist aktiv?
$user_id = (int) str_replace('gs', '', $member_id) - config('main.add_number_id');
$user = User::find($user_id);
if(!$user || !$user->isActive() || !$user->isActiveAccount()){
return redirect('/registrierung');
}
if (!session('recaptcha_consent')) {
$data = [
'from_member_id' => Request::get('from_member_id')
];
return view('auth.recaptcha-consent', $data);
//return redirect()->route('register.consent')->with(['from_member_id' => $member_id]);
}
$data = [
'from_member_id' => $member_id
];
return view('auth.register', $data);
*/
}
public function register(){
$this->userRepo->clearUserRegister();
// Überprüfe zuerst die reCAPTCHA-Einwilligung
/* if (!Request::has('recaptcha_consent')) {
return back()->withErrors(['recaptcha_consent' => 'Bitte stimmen Sie der Verwendung von reCAPTCHA zu'])->withInput(Request::all());
}*/
// Überprüfe reCAPTCHA
$recaptchaResponse = Request::input('g-recaptcha-response');
if (!$this->verifyRecaptcha($recaptchaResponse)) {
return back()->withErrors(['g-recaptcha-response' => 'Bitte bestätigen Sie, dass Sie kein Roboter sind'])->withInput(Request::all());
}
$rules = array(
'salutation' => 'required',
'first_name'=>'required',
'last_name'=>'required',
'first_name'=>'required|string|min:2',
'last_name'=>'required|string|min:2',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'password_confirmation' => 'required|string|min:6',
'accepted_data_protection' => 'required',
'g-recaptcha-response' => 'required',
);
$validator = Validator::make(Request::all(), $rules);
if ($validator->fails()) {
return back()->withErrors($validator)->withInput(Request::all());
}
//search in UserRegister
$data = Request::all();
$user = $this->userRepo->create($data);
$confirmation_code = UserService::createConfirmationCode();
$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;
if(isset($data['from_member_id'])){
$user->m_sponsor = (int) str_replace('gs', '', $data['from_member_id']) - config('main.add_number_id');
$UserRegister = UserRegister::where('identifier', $data['email'])->first();
if($UserRegister){
$exists = [
'register_email' => $data['email']
];
return view('auth.existing', $exists);
}
$user->save();
$user = User::find($user->id);
$userObj = $this->userRepo->createUserRegister($data);
$from_member_id = session('from_member_id');
$user_id = isset($from_member_id) ? (int) str_replace('gs', '', $from_member_id) - config('main.add_number_id') : config('app.main_user_id'); // Krummel
try {
Mail::to($user->email)->bcc(config('app.info_mail'))->send(new MailVerifyAccount($confirmation_code, $user));
Mail::to($userObj->email)->bcc(config('app.info_mail'))->send(new MailVerifyAccount($userObj->confirmation_code, $userObj));
}
catch(\Exception $e){
SysLog::action('register-user', 'auth_register', 5)
->setUserId($user->id)
->setModel($user->id, User::class)
->setUserId($user_id)
->setModel(null, UserRegister::class)
->setMessage('Error send register E-Mail: '.$e->getMessage())
->save();
}
UserHistory::create(['user_id' => $user->id, 'action'=>'register', 'status'=>0]);
UserHistory::create(['user_id' => $user_id, 'action'=>'register', 'status'=>0]);
return redirect('/user_register/finish');
}
// Neue Methode zur Überprüfung des reCAPTCHA
private function verifyRecaptcha($recaptchaResponse)
{
if (empty($recaptchaResponse)) {
return false;
}
$client = new Client();
$response = $client->post('https://www.google.com/recaptcha/api/siteverify', [
'form_params' => [
'secret' => config('services.recaptcha.secret_key'),
'response' => $recaptchaResponse
]
]);
$body = json_decode((string)$response->getBody());
return $body->success;
}
public function finish()
{
$data = [
@ -106,4 +197,40 @@ class RegisterController extends Controller
];
return view('auth.finish', $data);
}
public function verify($confirmation_code){
if( ! $confirmation_code)
{
return redirect('/status/error');
}
$UserRegister = UserRegister::where ('instance', $confirmation_code)->first();
if ( ! $UserRegister)
{
return redirect('/status/not/found');
}
$user = $this->userRepo->create($UserRegister);
//Login!
Auth::login($user);
return redirect('/home');
}
public function registerAgain(){
$data = Request::all();
if(!isset($data['register_email'])){
abort(403, "No E-Mail");
}
$UserRegister = UserRegister::where('identifier', $data['register_email'])->first();
if(!$UserRegister){
abort(403, "No E-Mail Register");
}
Mail::to($UserRegister->identifier)->bcc(config('app.info_mail'))->send(new MailVerifyAccount($UserRegister->instance, $UserRegister->content));
return redirect('/user_register/finish');
}
}