This commit is contained in:
Manish Verma
2016-12-13 18:18:25 +05:30
parent fc98add11c
commit 2d8e640e9b
2314 changed files with 97798 additions and 75664 deletions

View File

@@ -3,29 +3,31 @@
namespace App\Http\Controllers\Auth;
// controllers
use App\Http\Controllers\Admin\helpdesk\SocialMedia\SocialMediaController;
use App\Http\Controllers\Common\PhpMailController;
// requests
use App\Http\Controllers\Common\SettingsController;
use App\Http\Controllers\Controller;
// requests
use App\Http\Requests\helpdesk\LoginRequest;
use App\Http\Requests\helpdesk\OtpVerifyRequest;
use App\Http\Requests\helpdesk\RegisterRequest;
use App\Model\helpdesk\Settings\CommonSettings;
use App\Model\helpdesk\Settings\Plugin;
use App\Http\Requests\helpdesk\OtpVerifyRequest;
use App\Model\helpdesk\Settings\Security;
use App\Model\helpdesk\Settings\CommonSettings;
use App\Model\helpdesk\Ticket\Ticket_Thread;
// classes
use App\Model\helpdesk\Ticket\Tickets;
use App\Model\helpdesk\Utility\Otp;
use App\Model\helpdesk\Settings\Plugin;
// classes
use App\User;
use App\Model\helpdesk\Utility\Otp;
use Auth;
use DateTime;
use DB;
use Hash;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Input;
use Lang;
use DateTime;
use Input;
use Socialite;
use App\Http\Controllers\Admin\helpdesk\SocialMedia\SocialMediaController;
/**
* ---------------------------------------------------
@@ -37,8 +39,8 @@ use Socialite;
*
* @author Ladybird <info@ladybirdweb.com>
*/
class AuthController extends Controller
{
class AuthController extends Controller {
use AuthenticatesAndRegistersUsers;
/* to redirect after login */
@@ -59,15 +61,14 @@ class AuthController extends Controller
*
* @return void
*/
public function __construct(PhpMailController $PhpMailController, SocialMediaController $social)
{
public function __construct(PhpMailController $PhpMailController, SocialMediaController $social) {
$this->PhpMailController = $PhpMailController;
$social->configService();
$this->middleware('guest', ['except' => ['getLogout', 'verifyOTP', 'redirectToProvider']]);
}
public function redirectToProvider($provider, $redirect = '')
{
public function redirectToProvider($provider, $redirect = '') {
if ($redirect !== '') {
$this->setSession($provider, $redirect);
}
@@ -77,8 +78,7 @@ class AuthController extends Controller
return $s;
}
public function handleProviderCallback($provider)
{
public function handleProviderCallback($provider) {
try {
//notice we are not doing any validation, you should do it
$this->changeRedirect();
@@ -91,24 +91,25 @@ class AuthController extends Controller
if ($user->nickname) {
$username = $user->nickname;
}
if (!$first_name) {
if(!$first_name){
$first_name = $username;
}
$data = [
'first_name' => $first_name,
'email' => $user->getEmail(),
'user_name' => $username,
'role' => 'user',
'active' => 1,
'email' => $user->getEmail(),
'user_name' => $username,
'role' => 'user',
'active' => 1,
];
$user = User::where('email', $data['email'])->first();
if (!$user) {
$user = User::where('user_name', $data['user_name'])->first();
$user = User::where('email',$data['email'])->first();
if(!$user){
$user = User::where('user_name',$data['user_name'])->first();
}
if (!$user) {
$user = User::firstOrCreate($data);
if(!$user){
$user = User::firstOrCreate($data);
}
Auth::login($user);
}
//after login redirecting to home page
return redirect('/');
@@ -122,8 +123,7 @@ class AuthController extends Controller
*
* @return type Response
*/
public function getRegister(CommonSettings $settings)
{
public function getRegister(CommonSettings $settings) {
// Event for login
$settings = $settings->select('status')->where('option_name', '=', 'send_otp')->first();
$email_mandatory = $settings->select('status')->where('option_name', '=', 'email_mandatory')->first();
@@ -148,63 +148,59 @@ class AuthController extends Controller
*
* @return type Response
*/
public function postRegister(User $user, RegisterRequest $request)
{
public function postRegister(User $user, RegisterRequest $request) {
try {
$request_array = $request->input();
$password = Hash::make($request->input('password'));
$user->password = $password;
$name = $request->input('full_name');
$user->first_name = $name;
if ($request_array['email'] == '') {
$user->email = null;
} else {
$user->email = $request->input('email');
}
if ($request_array['mobile'] == '') {
$user->mobile = null;
} else {
$user->mobile = $request->input('mobile');
}
if ($request_array['code'] == '') {
$user->country_code = 0;
} else {
$user->country_code = $request->input('code');
}
if ($request_array['email'] != '') {
$user->user_name = $request->input('email');
} else {
$user->user_name = $request->input('mobile');
}
$user->role = 'user';
$code = str_random(60);
$user->remember_token = $code;
$user->save();
$message12 = '';
$settings = CommonSettings::select('status')->where('option_name', '=', 'send_otp')->first();
$sms = Plugin::select('status')->where('name', '=', 'SMS')->first();
// Event for login
\Event::fire(new \App\Events\LoginEvent($request));
if ($request_array['email'] != '') {
$var = $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $name, 'email' => $request->input('email')], $message = ['subject' => null, 'scenario' => 'registration'], $template_variables = ['user' => $name, 'email_address' => $request->input('email'), 'password_reset_link' => url('account/activate/'.$code)]);
}
$request_array = $request->input();
$password = Hash::make($request->input('password'));
$user->password = $password;
$name = $request->input('full_name');
$user->first_name = $name;
if ($request_array['email'] == '') {
$user->email = null;
} else {
$user->email = $request->input('email');
}
if ($request_array['mobile'] == '') {
$user->mobile = null;
} else {
$user->mobile = $request->input('mobile');
}
if ($request_array['code'] == '') {
$user->country_code = 0;
} else {
$user->country_code = $request->input('code');
}
if ($request_array['email'] != '') {
$user->user_name = $request->input('email');
} else {
$user->user_name = $request->input('mobile');
}
$user->role = 'user';
$code = str_random(60);
$user->remember_token = $code;
$user->save();
$message12 = '';
$settings = CommonSettings::select('status')->where('option_name', '=', 'send_otp')->first();
$sms = Plugin::select('status')->where('name', '=', 'SMS')->first();
// Event for login
\Event::fire(new \App\Events\LoginEvent($request));
$var = $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $name, 'email' => $request->input('email')], $message = ['subject' => null, 'scenario' => 'registration'], $template_variables = ['user' => $name, 'email_address' => $request->input('email'), 'password_reset_link' => url('account/activate/' . $code)]);
if ($settings->status == 1 || $settings->status == '1') {
if (count($sms) > 0) {
if ($sms->status == 1 || $sms->status == '1') {
if(count($sms) > 0) {
if($sms->status == 1 || $sms->status == '1') {
$message12 = Lang::get('lang.activate_your_account_click_on_Link_that_send_to_your_mail_and_moble');
} else {
$message12 = Lang::get('lang.activate_your_account_click_on_Link_that_send_to_your_mail_sms_plugin_inactive_or_not_setup');
}
} else {
$message12 = Lang::get('lang.activate_your_account_click_on_Link_that_send_to_your_mail_sms_plugin_inactive_or_not_setup');
$message12 = Lang::get('lang.activate_your_account_click_on_Link_that_send_to_your_mail');
}
} else {
$message12 = Lang::get('lang.activate_your_account_click_on_Link_that_send_to_your_mail');
}
return redirect('home')->with('success', $message12);
return redirect('home')->with('success', $message12);
} catch (\Exception $e) {
return redirect()->back()->with('fails', $e->getMessage());
return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -215,15 +211,13 @@ class AuthController extends Controller
*
* @return type redirect
*/
public function accountActivate($token)
{
public function accountActivate($token) {
$user = User::where('remember_token', '=', $token)->first();
if ($user) {
$user->active = 1;
$user->remember_token = null;
$user->save();
$this->openTicketAfterVerification($user->id);
return redirect('/auth/login')->with('status', 'Acount activated. Login to start');
} else {
return redirect('/auth/login')->with('fails', 'Invalid Token');
@@ -238,8 +232,7 @@ class AuthController extends Controller
*
* @return type Response
*/
public function getMail($token, User $user)
{
public function getMail($token, User $user) {
$user = $user->where('remember_token', $token)->where('active', 0)->first();
if ($user) {
$user->active = 1;
@@ -256,10 +249,9 @@ class AuthController extends Controller
*
* @return type Response
*/
public function getLogin()
{
public function getLogin() {
$directory = base_path();
if (file_exists($directory.DIRECTORY_SEPARATOR.'.env')) {
if (file_exists($directory . DIRECTORY_SEPARATOR . '.env')) {
if (Auth::user()) {
if (Auth::user()->role == 'admin' || Auth::user()->role == 'agent') {
return \Redirect::route('dashboard');
@@ -296,7 +288,7 @@ class AuthController extends Controller
}
$field = filter_var($usernameinput, FILTER_VALIDATE_EMAIL) ? 'email' : 'user_name';
$result = $this->confirmIPAddress($value, $usernameinput);
// If attempts > 3 and time < 30 minutes
$security = Security::whereId('1')->first();
if ($result == 1) {
@@ -309,15 +301,15 @@ class AuthController extends Controller
return redirect()->back()
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
'password' => $this->getFailedLoginMessage(),
])->with(['error' => Lang::get('lang.not-registered'),
'email' => $this->getFailedLoginMessage(),
'password' => $this->getFailedLoginMessage(),
])->with(['error' => Lang::get('lang.not-registered'),
'referer' => $referer, ]);
}
//if user exists
$settings = CommonSettings::select('status')->where('option_name', '=', 'send_otp')->first();
if ($settings->status == '1' || $settings->status == 1) { // check for otp verification setting
// setting is enabled
$sms = Plugin::select('status')->where('name', '=', 'SMS')->first();
@@ -328,7 +320,7 @@ class AuthController extends Controller
if (!$check_active->active) { //check account is active or not
// account is not active show verify otp window
if ($check_active->mobile) { //check user has mobile or not
// user has mobile number return verify OTP screen
// user has mobile number return verify OTP screen
return \Redirect::route('otp-verification')
->withInput($request->input())
->with(['values' => $request->input(),
@@ -337,7 +329,7 @@ class AuthController extends Controller
'number' => $check_active->mobile,
'code' => $check_active->country_code, ]);
} else {
goto a; //attenmpt login (be careful while using goto statements)
goto a; //attenmpt login (be careful while using goto statements)
}
} else {
goto a; //attenmpt login (be careful while using goto statements)
@@ -392,15 +384,14 @@ class AuthController extends Controller
if ($request->input('referer')) {
return \Redirect::route($request->input('referer'));
}
return \Redirect::route('/');
} else {
return redirect()->intended($this->redirectPath());
}
}
}
}
return redirect()->back()
->withInput($request->only('email', 'remember'))
->withErrors([
@@ -418,8 +409,7 @@ class AuthController extends Controller
*
* @return type Response
*/
public function addLoginAttempt($value, $field)
{
public function addLoginAttempt($value, $field) {
$result = DB::table('login_attempts')->where('IP', '=', $value)->first();
$data = $result;
$security = Security::whereId('1')->first();
@@ -427,15 +417,15 @@ class AuthController extends Controller
if ($data) {
$attempts = $data->Attempts + 1;
if ($attempts == $apt) {
// $result = DB::select('UPDATE login_attempts SET Attempts='.$attempts.", LastLogin=NOW() WHERE IP = '$value' OR User = '$field'");
$result = DB::table('login_attempts')->where('IP', '=', $value)->orWhere('User', '=', $field)->update(['Attempts' => $attempts, 'LastLogin' => date('Y-m-d H:i:s')]);
// $result = DB::select('UPDATE login_attempts SET Attempts='.$attempts.", LastLogin=NOW() WHERE IP = '$value' OR User = '$field'");
$result = DB::table('login_attempts')->where('IP', '=', $value)->orWhere('User', '=', $field)->update(['Attempts' => $attempts, 'LastLogin' => Date('Y-m-d H:i:s')]);
} else {
$result = DB::table('login_attempts')->where('IP', '=', $value)->orWhere('User', '=', $field)->update(['Attempts' => $attempts]);
// $result = DB::select("UPDATE login_attempts SET Attempts=".$attempts." WHERE IP = '$value' OR User = '$field'");
}
} else {
// $result = DB::select("INSERT INTO login_attempts (Attempts,User,IP,LastLogin) values (1,'$field','$value', NOW())");
$result = DB::table('login_attempts')->update(['Attempts' => 1, 'User' => $field, 'IP' => $value, 'LastLogin' => date('Y-m-d H:i:s')]);
// $result = DB::select("INSERT INTO login_attempts (Attempts,User,IP,LastLogin) values (1,'$field','$value', NOW())");
$result = DB::table('login_attempts')->update(['Attempts' => 1, 'User' => $field, 'IP' => $value, 'LastLogin' => Date('Y-m-d H:i:s')]);
}
}
@@ -446,8 +436,7 @@ class AuthController extends Controller
*
* @return type Response
*/
public function clearLoginAttempts($value, $field)
{
public function clearLoginAttempts($value, $field) {
$data = DB::table('login_attempts')->where('IP', '=', $value)->orWhere('User', '=', $field)->update(['attempts' => '0']);
return $data;
@@ -460,14 +449,13 @@ class AuthController extends Controller
*
* @return type Response
*/
public function confirmIPAddress($value, $field)
{
public function confirmIPAddress($value, $field) {
$security = Security::whereId('1')->first();
$time = $security->lockout_period;
$max_attempts = $security->backlist_threshold;
$table = 'login_attempts';
$result = DB::select('SELECT Attempts, (CASE when LastLogin is not NULL and DATE_ADD(LastLogin, INTERVAL '.$time.' MINUTE)>NOW() then 1 else 0 end) as Denied '.
' FROM '.$table." WHERE IP = '$value' OR User = '$field'");
$result = DB::select('SELECT Attempts, (CASE when LastLogin is not NULL and DATE_ADD(LastLogin, INTERVAL ' . $time . ' MINUTE)>NOW() then 1 else 0 end) as Denied ' .
' FROM ' . $table . " WHERE IP = '$value' OR User = '$field'");
$data = $result;
//Verify that at least one login attempt is in database
if (!$data) {
@@ -478,7 +466,6 @@ class AuthController extends Controller
return 1;
} else {
$this->clearLoginAttempts($value, $field);
return 0;
}
}
@@ -491,20 +478,16 @@ class AuthController extends Controller
*
* @return type string
*/
protected function getFailedLoginMessage()
{
protected function getFailedLoginMessage() {
return Lang::get('lang.this_field_do_not_match_our_records');
}
/**
*@category function to show verify OTP page
*
*@param null
*
*@return response|view
*/
public function getVerifyOTP()
{
public function getVerifyOTP() {
if (\Session::has('values')) {
return view('auth.otp-verify');
} else {
@@ -514,13 +497,10 @@ class AuthController extends Controller
/**
*@category function to verify OTP
*
*@param $request
*
*@return int|string
*/
public function verifyOTP(LoginRequest $request)
{
public function verifyOTP(LoginRequest $request) {
$user = User::select('id', 'mobile', 'user_name')->where('email', '=', $request->input('email'))
->orWhere('user_name', '=', $request->input('email'))->first();
$otp_length = strlen($request->input('otp'));
@@ -530,10 +510,10 @@ class AuthController extends Controller
$otp = Otp::select('otp', 'updated_at')->where('user_id', '=', $user->id)
->first();
if ($otp != null) {
if (($otp_length == 6 && !preg_match('/[a-z]/i', $request->input('otp')))) {
if (($otp_length == 6 && !preg_match("/[a-z]/i", $request->input('otp')))) {
$otp2 = Hash::make($request->input('otp'));
$date1 = date_format($otp->updated_at, 'Y-m-d h:i:sa');
$date2 = date('Y-m-d h:i:sa');
$date1 = date_format($otp->updated_at, "Y-m-d h:i:sa");
$date2 = date("Y-m-d h:i:sa");
$time1 = new DateTime($date2);
$time2 = new DateTime($date1);
$interval = $time1->diff($time2);
@@ -546,7 +526,6 @@ class AuthController extends Controller
User::where('id', '=', $user->id)
->update(['active' => 1]);
$this->openTicketAfterVerification($user->id);
return $this->postLogin($request);
} else {
$message = Lang::get('lang.otp-not-matched');
@@ -559,46 +538,37 @@ class AuthController extends Controller
$message = Lang::get('lang.otp-not-matched');
}
}
return \Redirect::route('otp-verification')
->withInput($request->input())
->with(['values' => $request->input(),
'number' => $user->mobile,
'name' => $user->user_name,
'fails' => $message, ]);
'number' => $user->mobile,
'name' => $user->user_name,
'fails' => $message]);
}
public function resendOTP(OtpVerifyRequest $request)
{
public function resendOTP(OtpVerifyRequest $request) {
if (!\Schema::hasTable('user_verification') || !\Schema::hasTable('sms')) {
$message = Lang::get('lang.opt-can-not-be-verified');
return $message;
} else {
$sms = DB::table('sms')->get();
$sms =DB::table('sms')->get();
if (count($sms) > 0) {
\Event::fire(new \App\Events\LoginEvent($request));
return 1;
} else {
$message = Lang::get('lang.opt-can-not-be-verified');
return $message;
}
}
}
}
/**
* @category function to change ticket status when user verifies his account
*
* @param int $id => user_id
*
* @return null
*
* @author manish.verma@ladybirdweb.com
*/
public function openTicketAfterVerification($id)
{
public function openTicketAfterVerification($id) {
// dd($id);
$ticket = Tickets::select('id')
->where(['user_id' => $id, 'status' => 6])
@@ -609,23 +579,23 @@ class AuthController extends Controller
foreach ($ticket as $value) {
$ticket_id = $value->id;
Ticket_Thread::where('ticket_id', '=', $ticket_id)
->update(['updated_at' => date('Y-m-d H:i:s')]);
->update(["updated_at" => date('Y-m-d H:i:s')]);
}
}
}
public function changeRedirect()
{
public function changeRedirect() {
$provider = \Session::get('provider');
$url = \Session::get($provider.'redirect');
$url = \Session::get($provider . 'redirect');
\Config::set("services.$provider.redirect", $url);
}
public function setSession($provider, $redirect)
{
public function setSession($provider, $redirect) {
$url = url($redirect);
\Session::set('provider', $provider);
\Session::set($provider.'redirect', $url);
\Session::set($provider . 'redirect', $url);
$this->changeRedirect();
}
}

View File

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Auth;
// controllers
use App\Http\Controllers\Common\PhpMailController;
use App\Http\Controllers\Common\SettingsController;
use App\Http\Controllers\Controller;
// request
use App\User;
@@ -50,9 +51,10 @@ class PasswordController extends Controller
*/
public function postEmail(Request $request)
{
try{
$date = date('Y-m-d H:i:s');
$this->validate($request, ['email' => 'required']);
\Event::fire('reset.password', []);
\Event::fire('reset.password',array());
$user = User::where('email', '=', $request->only('email'))->orWhere('mobile', '=', $request->only('email'))->first();
if (isset($user)) {
$user1 = $user->email;
@@ -66,9 +68,9 @@ class PasswordController extends Controller
} else {
$create_password_reset = \DB::table('password_resets')->insert(['email' => $user->email, 'token' => $code, 'created_at' => $date]);
}
$this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $user->user_name, 'email' => $user->email], $message = ['subject' => 'Your Password Reset Link', 'scenario' => 'reset-password'], $template_variables = ['user' => $user->first_name, 'email_address' => $user->email, 'password_reset_link' => url('password/reset/'.$code)], true);
$this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $user->user_name, 'email' => $user->email], $message = ['subject' => 'Your Password Reset Link', 'scenario' => 'reset-password'], $template_variables = ['user' => $user->first_name, 'email_address' => $user->email, 'password_reset_link' => url('password/reset/'.$code)],true);
if ($user->mobile != '' && $user->mobile != null) {
if ($user->first_name) {
if($user->first_name) {
$name = $user->first_name;
} else {
$name = $user->user_name;
@@ -77,25 +79,27 @@ class PasswordController extends Controller
'url' => url('password/reset/'.$code),
'name' => $name,
'mobile' => $user->mobile,
'code' => $user->country_code, ];
\Event::fire('reset.password2', [$value]);
'code' => $user->country_code];
\Event::fire('reset.password2',array($value));
}
return redirect()->back()->with('status', Lang::get('lang.we_have_e-mailed_your_password_reset_link'));
} else {
return redirect()->back()->with('fails', Lang::get("lang.we_can't_find_a_user_with_that_e-mail_address"));
}
} catch (\Exception $e) {
return redirect()->back()->with('fails', $e->getMessage());
}
}
/**
* Reset the given user's password.
*
* @param \Illuminate\Http\Request $request
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function reset(Request $request)
{
$this->validate(
$request,
$this->getResetValidationRules(),
@@ -107,25 +111,26 @@ class PasswordController extends Controller
$email = $credentials['email'];
$password = $credentials['password'];
$token = $credentials['token'];
$response = 'fails';
$password_tokens = \DB::table('password_resets')->where('email', '=', $email)->first();
if ($password_tokens) {
if ($password_tokens->token == $token) {
$response = "fails";
$password_tokens = \DB::table('password_resets')->where('email','=',$email)->first();
if($password_tokens){
if($password_tokens->token == $token){
$users = new User();
$user = $users->where('email', $email)->first();
if ($user) {
$user = $users->where('email',$email)->first();
if($user){
$user->password = \Hash::make($password);
$user->save();
$response = 'success';
$response = "success";
} else {
$response = 'fails';
$response = "fails";
}
}
}
if ($response == 'success') {
if ($response == "success") {
return redirect('/auth/login')->with('status', Lang::get('lang.password-reset-successfully'));
} else {
return redirect('/home')->with('fails', Lang::get('lang.password-can-not-reset'));
}
}
}