This commit is contained in:
Manish Verma
2018-08-06 10:57:02 +05:30
parent d022c193b3
commit 96c44bea1e
6 changed files with 150 additions and 126 deletions

10
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,10 @@
## Contributing
Contributions are welcome, and are accepted via pull requests. Please review these guidelines before submitting any pull requests.
* Please follow the [PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) and [PHP-FIG Naming Conventions](https://github.com/php-fig/fig-standards/blob/master/bylaws/007-psr-naming-conventions.md).
* Remember to follow [SemVer](http://semver.org/). If you are changing the behavior, or the public api, you may need to update the docs.
* Make sure that the current tests pass, and if you have added something new, add the tests where relevant.
* Send a coherent commit history, making sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History) them before submitting.
* You may also need to [rebase](https://git-scm.com/book/en/v2/Git-Branching-Rebasing) to avoid merge conflicts.
NOTE: StyleCI is set up to automatically check and fix any code style issues.

View File

@@ -58,9 +58,10 @@ class AuthController extends Controller
*
* @return void
*/
public function __construct(PhpMailController $PhpMailController, SocialMediaController $social)
public function __construct()
{
$this->PhpMailController = $PhpMailController;
$this->PhpMailController = new PhpMailController();
$social = new SocialMediaController();
$social->configService();
$this->middleware('guest', ['except' => ['getLogout', 'verifyOTP', 'redirectToProvider']]);
}
@@ -147,8 +148,9 @@ class AuthController extends Controller
*
* @return type Response
*/
public function postRegister(User $user, RegisterRequest $request)
public function postRegister(User $user, RegisterRequest $request, $api = false)
{
//dd($request->all());
try {
$request_array = $request->input();
$password = Hash::make($request->input('password'));
@@ -160,20 +162,20 @@ class AuthController extends Controller
} else {
$user->email = $request->input('email');
}
if ($request_array['mobile'] == '') {
if (!checkArray('mobile', $request_array)) {
$user->mobile = null;
} else {
$user->mobile = $request->input('mobile');
}
if ($request_array['code'] == '') {
if (!checkArray('code', $request_array)) {
$user->country_code = 0;
} else {
$user->country_code = $request->input('code');
}
if ($request_array['email'] != '') {
$user->user_name = $request->input('email');
if (checkArray('username', $request_array)) {
$user->user_name = checkArray('username', $request_array);
} else {
$user->user_name = $request->input('mobile');
$user->user_name = $request->input('email');
}
$user->role = 'user';
$code = str_random(60);
@@ -204,9 +206,16 @@ class AuthController extends Controller
} else {
$message12 = Lang::get('lang.activate_your_account_click_on_Link_that_send_to_your_mail');
}
if ($api == true) {
return ['message' => $message12, 'user' => $user->toArray()];
}
return redirect('home')->with('success', $message12);
} catch (\Exception $e) {
if ($api == true) {
throw new \Exception($e->getMessage());
}
return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -286,59 +295,63 @@ class AuthController extends Controller
*/
public function postLogin(LoginRequest $request)
{
// dd($request->input());
\Event::fire('auth.login.event', []); //added 5/5/2016
// Set login attempts and login time
$value = $_SERVER['REMOTE_ADDR'];
$usernameinput = $request->input('email');
$password = $request->input('password');
if ($request->input('referer')) {
$referer = 'form';
} else {
$referer = '/';
}
$field = filter_var($usernameinput, FILTER_VALIDATE_EMAIL) ? 'email' : 'user_name';
$result = $this->confirmIPAddress($value, $usernameinput);
try {
// dd($request->input());
\Event::fire('auth.login.event', []); //added 5/5/2016
// Set login attempts and login time
$value = $_SERVER['REMOTE_ADDR'];
$usernameinput = $request->input('email');
$password = $request->input('password');
if ($request->input('referer')) {
$referer = 'form';
} else {
$referer = '/';
}
$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) {
return redirect()->back()->withErrors('email', 'Incorrect details')->with(['error' => $security->lockout_message, 'referer' => $referer]);
}
// If attempts > 3 and time < 30 minutes
$security = Security::whereId('1')->first();
if ($result == 1) {
return redirect()->back()->withErrors('email', 'Incorrect details')->with(['error' => $security->lockout_message, 'referer' => $referer]);
}
$check_active = User::where('email', '=', $request->input('email'))->orwhere('user_name', '=', $request->input('email'))->first();
if (!$check_active) { //check if user exists or not
//if user deos not exist then return back with error that user is not registered
return redirect()->back()
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
'password' => $this->getFailedLoginMessage(),
])->with(['error' => Lang::get('lang.not-registered'),
'referer' => $referer, ]);
}
$check_active = User::where('email', '=', $request->input('email'))->orwhere('user_name', '=', $request->input('email'))->first();
if (!$check_active) { //check if user exists or not
//if user deos not exist then return back with error that user is not registered
return redirect()->back()
->withInput($request->only('email', 'remember'))
->withErrors([
'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 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();
if ($sms) { //check sms plugin installed or not
// plugin is installed
if ($sms->status == 1 || $sms->status === '1') { //check plugin is active or not
// plugin is active
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
return \Redirect::route('otp-verification')
->withInput($request->input())
->with(['values' => $request->input(),
'referer' => $referer,
'name' => $check_active->first_name,
'number' => $check_active->mobile,
'code' => $check_active->country_code, ]);
if ($settings->status == '1' || $settings->status == 1) { // check for otp verification setting
// setting is enabled
$sms = Plugin::select('status')->where('name', '=', 'SMS')->first();
if ($sms) { //check sms plugin installed or not
// plugin is installed
if ($sms->status == 1 || $sms->status === '1') { //check plugin is active or not
// plugin is active
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
return \Redirect::route('otp-verification')
->withInput($request->input())
->with(['values' => $request->input(),
'referer' => $referer,
'name' => $check_active->first_name,
'number' => $check_active->mobile,
'code' => $check_active->country_code, ]);
} else {
goto a; //attenmpt login (be careful while using goto statements)
}
} else {
goto a; //attenmpt login (be careful while using goto statements)
}
@@ -349,69 +362,69 @@ class AuthController extends Controller
goto a; //attenmpt login (be careful while using goto statements)
}
} else {
goto a; //attenmpt login (be careful while using goto statements)
}
} else {
// setting is disabled
a: if (!$check_active->active) { //check account is active or not
// if accoutn is not active return back with error message that account is inactive
return redirect()->back()
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
'password' => $this->getFailedLoginMessage(),
])->with(['error' => Lang::get('lang.this_account_is_currently_inactive'),
'referer' => $referer, ]);
} else {
// try login
$loginAttempts = 1;
// If session has login attempts, retrieve attempts counter and attempts time
if (\Session::has('loginAttempts')) {
$loginAttempts = \Session::get('loginAttempts');
$loginAttemptTime = \Session::get('loginAttemptTime');
$this->addLoginAttempt($value, $usernameinput);
// $credentials = $request->only('email', 'password');
$usernameinput = $request->input('email');
$password = $request->input('password');
$field = filter_var($usernameinput, FILTER_VALIDATE_EMAIL) ? 'email' : 'user_name';
// If attempts > 3 and time < 10 minutes
if ($loginAttempts > $security->backlist_threshold && (time() - $loginAttemptTime <= ($security->lockout_period * 60))) {
return redirect()->back()->withErrors('email', 'incorrect email')->with('error', $security->lockout_message);
}
// If time > 10 minutes, reset attempts counter and time in session
if (time() - $loginAttemptTime > ($security->lockout_period * 60)) {
\Session::put('loginAttempts', 1);
\Session::put('loginAttemptTime', time());
}
} else { // If no login attempts stored, init login attempts and time
\Session::put('loginAttempts', $loginAttempts);
\Session::put('loginAttemptTime', time());
$this->clearLoginAttempts($value, $usernameinput);
}
// If auth ok, redirect to restricted area
\Session::put('loginAttempts', $loginAttempts + 1);
if (Auth::Attempt([$field => $usernameinput, 'password' => $password], $request->has('remember'))) {
if (Auth::user()->role == 'user') {
if ($request->input('referer')) {
return \Redirect::route($request->input('referer'));
// setting is disabled
a: if (!$check_active->active) { //check account is active or not
// if accoutn is not active return back with error message that account is inactive
return redirect()->back()
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
'password' => $this->getFailedLoginMessage(),
])->with(['error' => Lang::get('lang.this_account_is_currently_inactive'),
'referer' => $referer, ]);
} else {
// try login
$loginAttempts = 1;
// If session has login attempts, retrieve attempts counter and attempts time
if (\Session::has('loginAttempts')) {
$loginAttempts = \Session::get('loginAttempts');
$loginAttemptTime = \Session::get('loginAttemptTime');
$this->addLoginAttempt($value, $usernameinput);
// $credentials = $request->only('email', 'password');
$usernameinput = $request->input('email');
$password = $request->input('password');
$field = filter_var($usernameinput, FILTER_VALIDATE_EMAIL) ? 'email' : 'user_name';
// If attempts > 3 and time < 10 minutes
if ($loginAttempts > $security->backlist_threshold && (time() - $loginAttemptTime <= ($security->lockout_period * 60))) {
return redirect()->back()->withErrors('email', 'incorrect email')->with('error', $security->lockout_message);
}
// If time > 10 minutes, reset attempts counter and time in session
if (time() - $loginAttemptTime > ($security->lockout_period * 60)) {
\Session::put('loginAttempts', 1);
\Session::put('loginAttemptTime', time());
}
} else { // If no login attempts stored, init login attempts and time
\Session::put('loginAttempts', $loginAttempts);
\Session::put('loginAttemptTime', time());
$this->clearLoginAttempts($value, $usernameinput);
}
// If auth ok, redirect to restricted area
\Session::put('loginAttempts', $loginAttempts + 1);
if (Auth::Attempt([$field => $usernameinput, 'password' => $password], $request->has('remember'))) {
if (Auth::user()->role == 'user') {
if ($request->input('referer')) {
return \Redirect::route($request->input('referer'));
}
return \Redirect::route('/');
} else {
return redirect()->intended($this->redirectPath());
return \Redirect::route('/');
} else {
return redirect()->intended($this->redirectPath());
}
}
}
}
}
return redirect()->back()
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
'password' => $this->getFailedLoginMessage(),
])->with(['error' => Lang::get('lang.invalid'),
'referer' => $referer, ]);
// Increment login attempts
return redirect()->back()
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
'password' => $this->getFailedLoginMessage(),
])->with(['error' => Lang::get('lang.invalid'),
'referer' => $referer, ]);
// Increment login attempts
} catch (\Exception $e) {
return redirect()->back()->with('fails', $e->getMessage());
}
}
/**
@@ -500,11 +513,11 @@ class AuthController extends Controller
}
/**
*@category function to show verify OTP page
* @category function to show verify OTP page
*
*@param null
* @param null
*
*@return response|view
* @return response|view
*/
public function getVerifyOTP()
{
@@ -516,22 +529,22 @@ class AuthController extends Controller
}
/**
*@category function to verify OTP
* @category function to verify OTP
*
*@param $request
* @param $request
*
*@return int|string
* @return int|string
*/
public function verifyOTP(LoginRequest $request)
{
$user = User::select('id', 'mobile', 'user_name')->where('email', '=', $request->input('email'))
->orWhere('user_name', '=', $request->input('email'))->first();
->orWhere('user_name', '=', $request->input('email'))->first();
$otp_length = strlen($request->input('otp'));
if (!\Schema::hasTable('user_verification')) {
$message = Lang::get('lang.opt-can-not-be-verified');
} else {
$otp = Otp::select('otp', 'updated_at')->where('user_id', '=', $user->id)
->first();
->first();
if ($otp != null) {
if (($otp_length == 6 && !preg_match('/[a-z]/i', $request->input('otp')))) {
$otp2 = Hash::make($request->input('otp'));
@@ -612,7 +625,7 @@ 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')]);
}
}
}

View File

@@ -7,7 +7,7 @@ use App\BaseModel;
class Priority extends BaseModel
{
public $timestamps = false;
protected $table = 'priority';
protected $table = 'ticket_priority';
protected $fillable = [
'id', 'name',
];

View File

@@ -310,7 +310,7 @@
</li>
@endforeach
@else
<?php \Event::fire('service.desk.agent.sidebar', array()); ?>
@endif

View File

@@ -166,6 +166,7 @@
<div class="form-group has-feedback @if(isset($errors)) {!! $errors->has('password') ? 'has-error' : '' !!} @endif">
{!! Form::password('password',['placeholder'=>Lang::get('lang.password'),'class' => 'form-control']) !!}
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
<?php \Event::fire('auth.login.form'); ?>
<a href="{{url('password/email')}}" style="font-size: .8em" class="pull-left">{!! Lang::get('lang.forgot_password') !!}</a>
</div>
<div class="form-group pull-left">

View File

@@ -202,7 +202,7 @@ function validate_extensions(&$results) {
} // if
$recommended_extensions = array(
'imap' => 'IMAP extension is used for connecting to mail server using IMAP settings to fetch emails in the system.'
// 'gd' => 'GD is used for image manipulation. Without it, system is not able to create thumbnails for files or manage avatars, logos and project icons. Please refer to <a href="http://www.php.net/manual/en/image.installation.php">this</a> page for installation instructions',
// 'mbstring' => 'MultiByte String is used for work with Unicode. Without it, system may not split words and string properly and you can have weird question mark characters in Recent Activities for example. Please refer to <a href="http://www.php.net/manual/en/mbstring.installation.php">this</a> page for installation instructions',
// 'curl' => 'cURL is used to support various network tasks. Please refer to <a href="http://www.php.net/manual/en/curl.installation.php">this</a> page for installation instructions',