public function authenticate(Request $request)
{
$loginRequest = new LoginRequest();
$validator = Validator::make($request->all(), $loginRequest->rules(), $loginRequest->messages());
// Validate Form
if ($validator->fails()) {
return response()->json(['success' => false, 'errors' => $validator->errors()->toArray(), 'inputs' => Input::except('_token', 'password')], 200);
}
// Check Captcha is Valid or Used!
if ($this->captchaCheck() == false) {
$errors = ['captchaError' => trans('auth.captchaError')];
return response()->json(['success' => false, 'errors' => $errors], 200);
}
// Make Credentials
$username = $request->username;
$password = $request->password;
$credentials = ['username' => $username, 'password' => $password];
// Remember Me Token If Filled
$remember = $request->remember_token;
$valid = Auth::validate($credentials);
$throttles = $this->isUsingThrottlesLoginsTrait();
// Login Attempt Check
if ($throttles && $this->hasTooManyLoginAttempts($request)) {
$errors = $validator->errors()->add('lock', 'Oops! Too Many Failed Login Attempts! Try Again Later!');
return response()->json(['success' => false, 'errors' => $errors], 429);
}
// Wrong Password Check
if (!$valid) {
$errors = $validator->errors()->add('wrongpass', 'The Password You Type is Incorrect!');
$this->incrementLoginAttempts($request);
return response()->json(['success' => false, 'errors' => $errors], 200);
}
$user = Auth::attempt($credentials, $remember);
$active = Auth::user()->active;
$status = Auth::user()->status;
// User is Banned
if (!$status) {
$errors = $validator->errors()->add('banned', 'Sorry Your Account is Banned!');
Auth::logout();
return response()->json(['success' => false, 'errors' => $errors], 401);
}
// User Not Active
if (!$active) {
$messages = ['NotActive' => 'Account is Not Active Yet Please Verify Your Email'];
return response()->json(['success' => true, 'messages' => $messages, 'url' => 'profile'], 200);
}
$messages = ['success' => 'Welcome Back!'];
// Successfully Login Without Any Problem
return response()->json(['success' => true, 'messages' => $messages, 'url' => 'profile'], 200);
}