Sh3ll
OdayForums


Server : Apache
System : Linux 145.162.205.92.host.secureserver.net 5.14.0-611.45.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 1 05:56:53 EDT 2026 x86_64
User : tradze ( 1001)
PHP Version : 8.1.34
Disable Function : NONE
Directory :  /home/tradze/public_html/app/Http/Controllers/Auth/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/tradze/public_html/app/Http/Controllers/Auth/AuthController.php
<?php



namespace App\Http\Controllers\Auth;



// use App\Http\Requests\Request;

use App\Modules\Users\Models\UserProfile;

use App\User;

use Spatie\Permission\Models\Role;

use Carbon\Carbon;

use Illuminate\Support\Facades\Auth;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Input;

use Illuminate\Support\Facades\Mail;

use Illuminate\Support\Facades\Storage;

use Intervention\Image\Facades\Image;

use Laravel\Socialite\Facades\Socialite;

use Symfony\Component\Translation\Tests\Writer\BackupDumper;

use Validator;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;
use Illuminate\Support\Str;

class AuthController extends Controller
{



    /**

     * Where to redirect users after login / registration.

     *

     * @var string

     */

    protected $redirectTo = '/';



    /**

     * Create a new authentication controller instance.

     *

     * @return void

     */

    public function __construct()

    {

        $this->middleware('guest')->except('logout', 'getLogout');
    }

    /**
     * Log the user out of the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function logout(Request $request)
    {
        Auth::logout();
        $request->session()->invalidate();
        $request->session()->regenerateToken();
        return redirect('/');
    }

    /**
     * Alias for logout (Laravel 8) – used by route.
     */
    public function getLogout(Request $request)
    {
        return $this->logout($request);
    }

    /**

     * Get a validator for an incoming registration request.

     *

     * @param  array  $data

     * @return \Illuminate\Contracts\Validation\Validator

     */

    protected function validator(array $data)

    {

        return Validator::make($data, [

            'name' => 'required|max:255',

            'email' => 'required|email|max:255|unique:users',

            'password' => 'required|min:6|confirmed',

            //            'payment-method-nonce' => 'required',

        ]);
    }



    /**

     * Show the application admin login form.

     *

     * @return \Illuminate\Http\Response

     */

    public function getLogin()

    {

        return view('auth.login');
    }



    /**

     * Show the application registration form.

     *

     * @return \Illuminate\Http\Response

     */

    public function getRegister()

    {
        return view('auth.register');
    }

    /**
     * Handle a login request to the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Http\JsonResponse
     */
    public function postLogin(Request $request)
    {
        $credentials = $request->validate([
            'email' => ['required', 'email'],
            'password' => ['required'],
        ]);

        if (Auth::attempt($credentials, $request->filled('remember'))) {
            $request->session()->regenerate();
            return redirect()->intended($this->redirectTo);
        }

        return back()->withErrors([
            'email' => 'The provided credentials do not match our records.',
        ])->onlyInput('email');
    }

    /**
     * Handle a registration request for the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
     */
    public function postRegister(Request $request)
    {
        $validator = $this->validator($request->all());

        if ($validator->fails()) {
            return redirect()->back()
                ->withErrors($validator)
                ->withInput();
        }

        $user = $this->create($request->all());
        Auth::login($user);

        return redirect($this->redirectTo);
    }

    public function getSalonRegister()

    {
        return view('auth.salonRegister');
    }

    public function postSalonRegister(Request $request)
    {
        // dd("inside post salon register");
        $validator = $this->validator($request->all());

        if ($validator->fails()) {
            // dd($validator->getMessageBag());
            return redirect()->back()->with($validator->getMessageBag());
        } else {
            // Auth::guard($this->getGuard())->login($this->create($request->all()));
            $responseData = $this->createsalon($request->all());
            return redirect('/login');
        }
    }



    /**

     * Create a new user instance after a valid registration.

     *

     * @param  array  $data

     * @return User

     */

    protected function create(array $data)
    {
        DB::beginTransaction();

        $lastOtp = User::max('account_otp');
        $otp = $lastOtp ? $lastOtp + 1 : 100001;

        $user = User::create([

            'name' => $data['name'],

            'email' => $data['email'],

            'password' => bcrypt($data['password']),

            'account_otp' => $otp,

            'trial_ends_at' => Carbon::now()->addYears(10),

            'newsletter' => $data['newsletter'],

        ]);



        $name = explode(' ', $data['name']);

        //create user profile

        $profile = UserProfile::create([

            'user_id' => $user->id,

            'first_name' => $name[0],

            'last_name' => isset($name[1]) ? $name[1] : '',

            'mobile_number' => $data['phone'],

            'trial_ends_at' => Carbon::now()->addYears(10),

        ]);



        //save profile avatar

        if (isset($data['avatar'])) {

            $file = $data['avatar'];

            $filename = Str::slug(str_replace($file->getClientOriginalExtension(), '', Str::random(30)));

            $extension = $file->getClientOriginalExtension();



            $path_file = 'avatar/' . $filename . "." . $extension;



            //upload file

            $upload = Storage::disk('public_images')->put(

                $path_file,

                file_get_contents($file->getRealPath())

            );

            //attach file path to user profile

            $profile->avatar = $path_file;

            $profile->save();



            $img = Image::make(public_path('images/' . $profile->avatar))->fit(400, 400, null, 'top')->save(public_path('images/' . $profile->avatar), 100);
        }



        //get customer role

        $role = Role::where('slug', 'customer')->first();



        //attach role

        if ($role)

            $user->assignRole($role);



        //commit or rollback transaction

        if ($user && $profile) {

            //commit transaction

            DB::commit();



            //send mail

            //send confirmation email

            $data['user'] = $user;



            Mail::send('users::frontend_new.emails.newaccount', ['user' => $user], function ($m) use ($data) {

                $m->from(env('MAIL_FROM'), env('APP_NAME'));

                $m->to($data['user']->email, $data['user']->name);

                $m->bcc(explode(',', env('MAIL_NEWORDER_BCC')), env('MAIL_NEWORDER_BCC_NAME'));

                $m->subject(env('APP_NAME') . ' – New account');
            });



            //inform user that hos account is created and

            flash()->overlay('<h3>Your account is created and you are logged in.</h3>', 'Tradze - Create account');





            //return user

            return $user;
        } else {

            DB::rollback();

            return redirect('/register');
        } //end elseif



    } //end method



    // Create Salon Method
    protected function createsalon(array $data)

    {
        DB::beginTransaction();

        $user = User::create([

            'name' => $data['name'],

            'email' => $data['email'],

            'password' => bcrypt($data['password']),

            'trial_ends_at' => Carbon::now()->addYears(10),

            'newsletter' => isset($data['newsletter']) ? $data['newsletter'] : 0,

        ]);



        $name = explode(' ', $data['name']);



        //create user account on braintree and associate braintree_id to user account

        //        $token = $data['payment-method-nonce'];

        //        try {

        //            $user->newSubscription('single-charge', env('BRAINTREE_PLAN'))->create($token, [

        //                'firstName' => $name[0],

        //                'lastName' => isset($name[1]) ? $name[1] : '',

        //                'email' => $user->email,

        //                'phone' => $data['phone'],

        //            ]);

        //        }

        //        catch (\Exception $e){

        //            $message = $e->getMessage();

        //            $message = str_ireplace('braintree','Tradze',$message);

        //            flash(strtoupper($message), 'danger');

        //        } //end try/catch



        //create user profile

        $profile = UserProfile::create([

            'user_id' => $user->id,

            'first_name' => $name[0],

            'last_name' => isset($name[1]) ? $name[1] : '',

            'mobile_number' => $data['phone'],

            'trial_ends_at' => Carbon::now()->addYears(10),

        ]);



        //save profile avatar

        if (isset($data['avatar'])) {

            $file = $data['avatar'];

            $filename = str_slug(str_replace($file->getClientOriginalExtension(), '', str_random(30)));

            $extension = $file->getClientOriginalExtension();



            $path_file = 'avatar/' . $filename . "." . $extension;



            //upload file

            $upload = Storage::disk('public_images')->put(

                $path_file,

                file_get_contents($file->getRealPath())

            );

            //attach file path to user profile

            $profile->avatar = $path_file;

            $profile->save();



            $img = Image::make(public_path('images/' . $profile->avatar))->fit(400, 400, null, 'top')->save(public_path('images/' . $profile->avatar), 100);
        }



        //get customer role

        $role = Role::where('slug', 'salon')->first();



        //attach role

        if ($role)

            $user->assignRole($role);



        //commit or rollback transaction

        if ($user && $profile) {

            //commit transaction

            DB::commit();



            //send mail

            //send confirmation email

            $data['user'] = $user;



            Mail::send('users::frontend_new.emails.newaccount', ['user' => $user], function ($m) use ($data) {

                $m->from(env('MAIL_FROM'), env('APP_NAME'));

                $m->to($data['user']->email, $data['user']->name);

                $m->bcc(explode(',', env('MAIL_NEWORDER_BCC')), env('MAIL_NEWORDER_BCC_NAME'));

                $m->subject(env('APP_NAME') . ' – New account');
            });



            //inform user that hos account is created and

            flash()->overlay('<h3>Your account is created and you are logged in.</h3>', 'Tradze - Create account');
            //return user

            return $user;
        } else {

            DB::rollback();

            return redirect('/salon/register');
        } //end elseif



    } //end method


} //end class controller

ZeroDay Forums Mini