Viewing File: /home/ubuntu/shop-website-base/app/Http/Controllers/Auth/UserRegisterController.php

<?php

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\Hash;

use App\Models\User;

use DB, Setting,Auth, Validator, Exception;



class UserRegisterController extends Controller
{
    public function __construct() {

        $this->middleware('guest:user');

    }

    public function showRegisterForm() {

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


    public function register(Request $request) {


        try{
            
            DB::begintransaction();

          	$validator = Validator::make( $request->all(), [

              'name' => 'required|min:2|max:100',
              'email' => '',
              'mobile' => 'required|digits_between:4,16|unique:users,mobile',
              'password' => 'required|min:6',

          	]);


            if(is_numeric($request->get('mobile'))){

                $validate =  ['mobile'=>$request->get('mobile'),'password'=>$request->get('password'),'status'=>USER_APPROVED];
             
            }

            elseif (filter_var($request->get('email'), FILTER_VALIDATE_EMAIL)) {

             $validate =  ['email' => $request->get('email'), 'password'=>$request->get('password'),'status'=>USER_APPROVED];

            }


            if(isset($validate)){

                if (Auth::guard('user')->attempt($validate, $request->remember)) {
                    
                    if(Auth::guard('user')->check()) {
                        
                        $user = User::find(Auth::guard('user')->user()->id);

                         \Auth::guard('user')->login($user);

                        // return redirect()->route(url()->previous());
                         
                    }
    
                }

            }

            if($request->email){
                
                $validator = Validator::make( $request->all(), ['email' => 'unique:users,email']);

            }

            if($validator->fails()) {

                $error = implode(',', $validator->messages()->all());

                throw new Exception($error, 101);
            }


            $user = New User;

            $user->name = $request->name;

            $user->first_name = $user->last_name ='';

          	$user->email = $request->email ?? '';

            $user->status = USER_APPROVED;

            $user->mobile = $request->mobile;

            $user->login_by = 'manual';

          	$user->password = Hash::make($request->password);

            $user->timezone = $request->has('timezone') ? $request->timezone : 'Asia/Kolkata';


            if($user->save()) {

                $email_data['subject'] = tr('user_welcome_title').' '.Setting::get('site_name');

                $email_data['page'] = "emails.users.welcome";

                $email_data['data'] = $user;

                $email_data['email'] = $user->email;

                $email_data['name'] = $user->email;

                $email_data['verification_code'] = $user->verification_code;

                $this->dispatch(new \App\Jobs\SendEmailJob($email_data));

                DB::commit();

                \Auth::guard('user')->login($user);

                // if successful, then redirect to their intended location
                return redirect()->route('user.index')->with(['profile'=>$user, 'flash_success'=>tr('user_registered_successfully' , $request->name)]); 

            }

            throw new Exception(tr('user_registered_failed'), 101);
            

        }  catch (Exception $e) {
            
            DB::rollback();

            return redirect()->back()->withInput()->with('flash_error', $e->getMessage());

        }
    }
}
Back to Directory File Manager