| Server IP : 138.197.107.151 / Your IP : 216.73.217.7 Web Server : Apache/2.4.58 (Ubuntu) System : Linux BloxBy-Builder 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64 User : wpbetasites_mrakzqskir ( 1022) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/shark/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Website;
use App\Models\Prompt;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\Validator;
use Carbon\Carbon;
use App\Services\EmailValidatorService;
use App\Http\Controllers\WebsiteController;
use Mail;
class RegisterController extends Controller
{
// Show registration form
public function showRegistrationForm(Request $request)
{
$data = session('website_json');
if($request->update){
$data = session('website_json');
if($data){
if($data["prompt_id"]){
$prompt = Prompt::where("id", $data["prompt_id"])->first();
if($prompt){
$prompt->meta = json_encode($data);
$prompt->prompt = json_encode($data["user_prompt"]);
$prompt->save();
}
}
}
return redirect()->route('register.form');
}
return view('auth.register'); // Make sure you have this Blade view
}
// Handle registration request
public function register(Request $request)
{
/*$phone = $request->phone;
// Keep only digits and allow a leading "+"
$sanitized = preg_replace('/(?!^\+)[^\d]/', '', $phone);
$request->merge([
'phone' => $sanitized
]);*/
$validator = Validator::make($request->all(), [
'name' => 'required|string|max:255',
'email' => 'required|email',
//'phone_full' => 'required|string|max:20',
'password' => 'required|string|min:6|confirmed',
],
[
'password.confirmed' => 'Password and confirm password do not match.',
]);
//|unique:users,email
$existingUser = User::where('email', $request->email)->first();
if ($existingUser) {
if (empty($existingUser->password) || $existingUser->providers()->count() > 0) {
// Email already tied to a social login
$validator->after(function ($v) {
$v->errors()->add('email', 'This email is already registered with a social account. Please continue with social login.');
});
} else {
// Email already tied to a normal account
$validator->after(function ($v) {
$v->errors()->add('email', 'This email is already taken.');
});
}
}
$emailValidatorService = new EmailValidatorService;
$response = $emailValidatorService->validate($request->email);
// print_r($response); die;
if($response["disposable"]){
$validator->after(function ($v) {
$v->errors()->add('email', 'Please enter non disposable emails.');
});
}
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}
//print_r($validator->errors()); die;
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'phone' => $request->phone_full,
'password' => Hash::make($request->password),
'trial_ending_at' => date("Y-m-d H:i:s", time() + 3*24*60*60)
]);
/*Mail::send('emails.welcome_email', [
'user' => $user
], function ($message) use ($user) {
$message->to($user->email);
$message->subject('Welcome to '.env('APP_NAME').'! ');
});*/
$verificationUrl = URL::temporarySignedRoute(
'email.verify',
Carbon::now()->addHours(2),
[
'id' => $user->id,
'hash' => sha1($user->email),
]
);
// Mail::send('emails.email_verify', [
// 'user' => $user,
// 'verificationUrl' => $verificationUrl
// ], function ($message) use ($user) {
// $message->to($user->email);
// $message->subject('Verify Your Email - ' . env('APP_NAME'));
// });
//return redirect()->route('register.email_verification',["email"=>$user->email])->with('status', 'We have sent you a verification email valid for 2 hours.');
Auth::login($user);
$website_ctrl = new WebsiteController;
$website_ctrl->saveWebsite();
return redirect()->route('dashboard');
/*$data = session('website_json');
if($data){
return redirect('/generate-site');
} else {
return redirect('/dashboard');
}*/
}
public function resendVerificationEmail(Request $request){
$user = null;
if (Auth::check()) {
// User is logged in
$user = Auth::user();
} else {
$user = User::where("email", $request->email)->first();
}
if($user){
$verificationUrl = URL::temporarySignedRoute(
'email.verify',
Carbon::now()->addHours(2),
[
'id' => $user->id,
'hash' => sha1($user->email),
]
);
Mail::send('emails.email_verify', [
'user' => $user,
'verificationUrl' => $verificationUrl
], function ($message) use ($user) {
$message->to($user->email);
$message->subject('Verify Your Email - ' . env('APP_NAME'));
});
}
return redirect()->back()->with(['success'=> 'We have sent you a verification email valid for 2 hours.']);
//return redirect()->route('register.email_verification',["email"=>$user->email])->with('status', 'We have sent you a verification email valid for 2 hours.');
}
public function showEmailVerification(Request $request){
return view("auth.email-verification-send");
}
public function verifyEmail(Request $request)
{
if (! $request->hasValidSignature()) {
return redirect('/login')->withErrors(['message' => 'Invalid or expired verification link.']);
}
$user = User::findOrFail($request->id);
if (sha1($user->email) !== $request->hash) {
if(Auth::check()){
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
}
return redirect('/login')->withErrors(['message' => 'Invalid verification link.']);
}
// If already verified
if ($user->email_verified_at) {
if(Auth::check()){
return redirect('/dashboard')->with(['error'=> 'Your email is already verified.']);
} else {
return redirect('/login')->with('status', 'Your email is already verified.');
}
}
// Mark email as verified
if($user->email_verified_at==null){
Mail::send('emails.welcome_email', [
'user' => $user
], function ($message) use ($user) {
$message->to($user->email);
$message->subject('Welcome to '.env('APP_NAME').'! ');
});
}
$user->trial_ending_at = null;
$user->email_verified_at = now();
$user->save();
Website::withTrashed()
->where("user_id", $user->id)
->where("trial_mode",1)
->update([
'trial_mode' => 0,
'deleted_at' => null,
]);
Auth::login($user);
return redirect('/dashboard')->with(['success'=> 'Your email has been verified successfully.']);;
//return redirect('/login')->with('status', 'Your email has been verified successfully.');
}
}