Viewing File: /home/ubuntu/shop-website-base/app/Http/Controllers/User/LoginController.php
<?php
namespace App\Http\Controllers\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
use App\Helpers\Helper;
use DB, Hash, Exception, File, Setting, Validator;
use App\Models\User;
use App\Models\PasswordReset;
use Carbon\Carbon;
class LoginController extends Controller
{
use AuthenticatesUsers;
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest:user', ['except' => 'logout']);
}
/**
* Show the application’s login form.
*
* @return \Illuminate\Http\Response
*/
public function showLoginForm()
{
return view('user.auth.login');
}
protected function guard() {
return Auth::guard('user');
}
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/';
protected $redirectAfterLogout = '/login';
public function login(Request $request) {
try{
DB::begintransaction();
$rules = [
'email' => 'required',
'password' => 'required|min:6',
];
Helper::custom_validator($request->all(),$rules,$custom_messages=[]);
if(is_numeric($request->get('email'))){
$validate = ['mobile'=>$request->get('email'),'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];
}
// Attempt to log the user in
if (Auth::guard('user')->attempt($validate, $request->remember)) {
if(Auth::guard('user')->check()) {
if($user = User::find(Auth::guard('user')->user()->id)) {
$user->timezone = $request->has('timezone') ? $request->timezone : 'Asia/Kolkata';
$user->save();
}
};
// if successful, then redirect to their intended location
return redirect()->intended(route('user.index'))->with('flash_success',tr('login_success'));
}
// if unsuccessful, then redirect back to the login with the form data
return redirect()->back()->withInput($request->only('email', 'remember'))->with('flash_error', tr('email_password_wrong'));
} catch (Exception $e) {
DB::rollback();
return redirect()->back()->withInput()->with('flash_error', $e->getMessage());
}
}
public function logout() {
Auth::guard('user')->logout();
return redirect()->route('user.login')->with('flash_success',tr('logout_successs'));
}
/**
* @method forgot_password
*
* @uses return view to forgot password
*
* @created Sakthi
*
* @updated
*
* @param object
*
* @return response return view page
*
**/
public function forgot_password() {
return view('user.auth.forgot_password');
}
public function forgot_password_update(Request $request){
try {
DB::beginTransaction();
// Check email configuration and email notification enabled by admin
if(Setting::get('is_email_notification') != YES ) {
throw new Exception(tr('email_not_configured'), 101);
}
$validator = Validator::make( $request->all(), [
'email' => 'required|email|max:255|exists:users',
]);
if($validator->fails()) {
$error = implode(',', $validator->messages()->all());
throw new Exception($error, 101);
}
$user = User::where('email' , $request->email)->first();
if(!$user) {
throw new Exception(api_error(1002), 1002);
}
$token = app('auth.password.broker')->createToken($user);
PasswordReset::where('email', $user->email)->delete();
PasswordReset::insert([
'email'=>$user->email,
'token'=>$token,
'created_at'=>Carbon::now()
]);
$email_data['subject'] = tr('forgot_email_title' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['user'] = $user;
$email_data['page'] = "emails.users.forgot-password";
$email_data['url'] = url('/')."/reset_password?token=".$token;
$this->dispatch(new \App\Jobs\SendEmailJob($email_data));
DB::commit();
return redirect()->back()->with('flash_success',api_success(102));
} catch(Exception $e) {
DB::rollback();
return redirect()->back()->withInput()->with('flash_error', $e->getMessage());
}
}
/**
* @method reset_password
*
* @uses return view to reset password
*
* @created Ganesh
*
* @updated
*
* @param object
*
* @return response return view page
*
**/
public function reset_password() {
return view('user.auth.reset-password');
}
/**
* @method reset_password_update()
*
* @uses To reset the password
*
* @created Ganesh
*
* @updated Ganesh
*
* @param object $request - Email id
*
* @return send mail to the valid store
*/
public function reset_password_update(Request $request) {
try {
$validator = Validator::make( $request->all(), [
'password' => 'required|confirmed|min:6',
'password_confirmation'=>'required',
'reset_token' => 'required|string'
]);
if($validator->fails()) {
$error = implode(',', $validator->messages()->all());
throw new Exception($error, 101);
}
DB::beginTransaction();
$password_reset = PasswordReset::where('token', $request->reset_token)->first();
if(!$password_reset){
throw new Exception(api_error(107), 107);
}
$user = User::where('email', $password_reset->email)->first();
$user->password = \Hash::make($request->password);
$user->save();
PasswordReset::where('email', $user->email) ->delete();
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'=>api_success(104)]);
} catch(Exception $e) {
DB::rollback();
return redirect()->back()->withInput()->with('flash_error', $e->getMessage());
}
}
}
Back to Directory
File Manager