100% found this document useful (1 vote)
140 views6 pages

Login

Uploaded by

Bala Chavan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
140 views6 pages

Login

Uploaded by

Bala Chavan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

<?

php

namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Pagination\CursorPaginator;
use Illuminate\Support\Facades\Crypt;
use App\Model\admin\Admin;
use App\Model\User\Users;
use App\Model\User\UserAddresses;
use App\Model\User\UserDetail;
use App\Model\Company\Company;
use App\Model\Company\CompanyUser;
use App\Model\Company\CompanyModule;
use App\Model\Role\Role;
use App\Model\Profile\Profile;
use App\Model\Operation\Operation;
use App\User;
use App\Model\State;
use App\Model\City;
use Auth;
use Image;
use Session;
use Str;
use Mail;

class UserController extends BaseController


{
//Constructor
public function __construct() {
$this->companyINFO = new Controller();
$this->companyMenus = CompanyModule::where('company_id',
Session::get('companyID'))->get();
$this->roles = Role::where('company_id', Session::get('companyID'))->get();
$this->profiles = Profile::where('company_id', Session::get('companyID'))-
>get();
$this->operations = Operation::get();
}

//User Registration
public function userRegistration(Request $request) {
if($request->isMethod('post')) {
$validator = Validator::make($request->all(), [
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required',
'mobile' => 'required',
'password' => 'required|min:6|Max:20',
]);
if ($validator->fails()) {
Session::put('error', "Please Provide Proper request");
return redirect()->back();
}
try {
//Check if user exists with email or mobile
$checkUserExist = User::where('mobile', $request['mobile'])-
>orwhere('email', $request['email'])->first();
if($checkUserExist) {
Session::put('error', 'User Already exists with Mobile or
Email');
return redirect()->back();
}
//User Registration
$user = new User;
$user->first_name = ucfirst(trim($request['first_name'], " "));
$user->last_name = ucfirst(trim($request['last_name'], " "));
$user->email = $request['email'];
$user->mobile = $request['mobile'];
$user->password = md5($request['password']);
$user->save();

//Organization Creation
$company = new Company;
$company->user_id = $user['user_id'];
$company->org_id = rand(0, 99999999999);
// $company->default_company = 1;
$company->save();

//setting up the role


$role = new Role;
$role->company_id = $company['company_id'];
$role->role_name = 'CEO';
$role->level = 0;
$role->parent_id = 0;
$role->save();

//setting up the profile


$profile = new Profile;
$profile->company_id = $company['company_id'];
$profile->profile_name = 'ADMINISTRATOR';
$profile->save();

//Company Creation
$companyUser = new CompanyUser;
$companyUser->company_id = $company['company_id'];
$companyUser->user_id = $user['user_id'];
$company->default_company = 1;
// $companyUser->password = md5($request['password']); //logic
changed
$companyUser->role_id = $role['role_id'];
$companyUser->profile_id = $profile['profile_id'];
$companyUser->save();

Session::put('success', 'Account Created Successfully! Please login


to continue');
return redirect('/');
}catch (\Throwable $th) {
Session::put('error', $th->getMessage());
return redirect()->back();
}
}
return view('frontend.user.register');
}

//User Login
public function userLogin(Request $request) {
if($request->isMethod('post')) {
$validator = Validator::make($request->all(), [
'username' => 'required',
'password' => 'required',
]);
if ($validator->fails()) {
Session::put('error', "Username and Password are required");
return redirect()->back();
}
try {
//check user credentials
$user = User::with('company', 'companyUser.company',
'companyUser.role')->where('email', $request['username'])
->orWhere('mobile', $request['username'])
->first();

// $companyUser = CompanyUser::select('password')->where('user_id',
$user['user_id'])->first(); //logic changed
if((($user['email'] == $request['username']) && ($user['password']
== md5($request['password']))) || ($user['mobile'] == $request['username']) &&
($user['password'] == md5($request['password']))) {

$isCompanySet = (is_null($user['company']['company_name'])) ? 0
: 1;
Session::put(['userSession' => $user, 'org_id' =>
$user['company']['org_id']]);
Session::put('companyURL', $user['company']['company_url']);
Session::put('companyID', $user['company']['company_id']);

//admin user
$path = $isCompanySet ? '/home' :
'/begin/company/registration';
if($isCompanySet) {
return
redirect(config('constant.CRM').'/'.Session::get('companyURL').$path);
}
//company user
$isCompanyUserSet = (is_null($user['companyUser']['company']
['company_name'])) ? 0 : 1;
Session::put(['userSession' => $user, 'org_id' =>
$user['companyUser']['company']['org_id']]);
if($isCompanyUserSet) {
Session::put('companyURL', $user['companyUser']['company']
['company_url']);
Session::put('companyID', $user['companyUser']['company']
['company_id']);
if(strtolower(Session::get('userSession')['companyUser']
['role']['role_name']) == 'warehouse') {
return
redirect(config('constant.CRM').'/warehouse/'.Session::get('companyURL').'/home');
} else {
return
redirect(config('constant.CRM').'/'.Session::get('companyURL').'/home');
}
}

return redirect(config('constant.CRM').'/org'.$user['company']
['org_id'].$path);
}
Session::put('error', 'Incorrect Username or Password');
}catch (\Throwable $th) {
Session::put('error', $th->getMessage());
}
return redirect()->back();
}
return view('frontend.user.login');
}

//User Forgot Password


public function resetPassword(Request $request) {
if($request->isMethod('post')) {
$validator = Validator::make($request->all(), [
'username' => 'required'
]);
if ($validator->fails()) {
Session::put('error', "Please provide proper data");
return redirect()->back();
}
try {
$user = User::where('mobile', $request['username'])-
>orWhere('email', $request['username'])->first();
if($user) {
$user_email = $user['email'];
$new_password = rand(0, 99999999); //auto generate password
//updating user password
// $password = CompanyUser::where('user_id', $user['user_id'])-
>first(); //logic changed

//Sending Mail Notification to User


$credentials = [
'email' => $user_email,
'mobile' => $user['mobile'],
'password' => $new_password,
];
Mail::send('email-templates.user.reset-password',
['credentials' => $credentials] , function($message) use($user_email){
$message->to($user_email)->subject('Password Reset
Notification');
});

$user->password = md5($new_password);
$user->save();
Session::put('success', "New password is sent to your
registered email address, please login and change password using it");
return redirect()->back();

} else {
Session::put('error', "You are not yet registered with us!
please register to continue");
return redirect()->back();
}

}catch (\Throwable $th) {


Session::put('error', $th->getMessage());
}
}
return view('frontend.user.reset-password');
}
//User Details
public function userDetails(Request $request) {
if($request->isMethod('post')) {
$validator = Validator::make($request->all(), [
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required',
'mobile' => 'required',
'state_id' => 'required',
'city_id' => 'required',
'taluka_id' => 'required',
'user_id' => 'required',
'role_id' => 'required',
'profile_id' => 'required',
'address' => 'required',
'pincode' => 'required'
]);

if ($validator->fails()) {
Session::put('error', "Please provide proper data");
return redirect()->back();
}

try {
$user = User::where('user_id', $request['user_id'])->first();
$user->first_name = $request['first_name'];
$user->last_name = $request['last_name'];
$user->email = $request['email'];
$user->mobile = $request['mobile'];
$user->address = $request['address'];
$user->pincode = $request['pincode'];
$user->state_id = $request['state_id'];
$user->city_id = $request['city_id'];
$user->taluka_id = $request['taluka_id'];
//update profile picture
if($request->hasFile('user_image')){
$image_tmp = $request['user_image'];
if($image_tmp->isValid()){
$extension = $image_tmp->getClientOriginalExtension();
$filename = $user['first_name'].'-'.
$user['last_name'].'-'.time().'.'.$extension;
$image_path =
public_path(config('constant.USER_PROFILE_IMG_PATH'));
// if(file_exists($image_path.$user['user_image'])){
// unlink($image_path.$user['user_image']);
// }
Image::make($image_tmp)->resize(128, 128)-
>save($image_path.$filename);
$user->user_image = $filename;

}
}

$user->save();

//update role & profile


$companyUser = CompanyUser::where('user_id', $request['user_id'])-
>first();
$companyUser->role_id = $request['role_id'];
$companyUser->profile_id = $request['profile_id'];
$companyUser->save();
Session::put('success', 'Info Updated');
return redirect()->back();
}catch (\Throwable $th) {
Session::put('error', $th->getMessage());
return redirect()->back();
}
}
$companyMenus = $this->companyMenus;
$roles = Role::with('role')->where('company_id',
Session::get('companyID'))->get();
$profiles = Profile::where('company_id', Session::get('companyID'))->get();
$user = CompanyUser::with('user', 'role', 'profile')->where('user_id',
Session::get('userSession')['user_id'])->first();
return view('backend.user.user-details', compact('companyMenus', 'roles',
'profiles', 'user'));
}
}

You might also like