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); }