diff --git a/app/Http/Controllers/Api/AuthApiController.php b/app/Http/Controllers/Api/AuthApiController.php index bb1bc68..7161bae 100755 --- a/app/Http/Controllers/Api/AuthApiController.php +++ b/app/Http/Controllers/Api/AuthApiController.php @@ -11,6 +11,7 @@ use App\Models\User; use App\Models\Agent; use App\Models\AgentUser; use App\Http\Requests\Api\RegisterApiRequest; +use App\Http\Requests\Api\LoginApiRequest; class AuthApiController extends BaseAuthApiController { @@ -21,20 +22,20 @@ class AuthApiController extends BaseAuthApiController const GENERAL = 'general'; // - public function login(Request $request) + public function login(LoginApiRequest $request) { - $validator = \Illuminate\Support\Facades\Validator::make($request->all(), [ - 'username' => 'required|email', - 'password' => 'required' - ]); - if ($validator->fails()) { - return $this->sendError('Validation Error.', $validator->errors()); + if (filter_var($request->username, FILTER_VALIDATE_EMAIL)) { + $user = User::where('email', $request->username)->first(); + } else { + $user = User::where('phone', $request->username)->first(); } - - if (!Auth::attempt(['email' => $request->username, 'password' => $request->password])) { - return $this->sendError('Unauthorised.', ['error' => 'Unauthorised']); + if(empty($user)){ + return response()->json(['status' =>false, 'msg' => 'Email hoặc SDT chưa được đăng ký.'], parent::HTTP_OK); } - $user = User::where('email', $request->username)->first(); + if (!Auth::attempt(['id' => $user->id, 'password' => $request->password])) { + return response()->json(['Tài khoản hoặc mật khẩu không chính xác. Vui lòng thử lại.'], parent::HTTP_OK); + } + $user = User::find($user->id); if (empty($user)) { $this->sendError('Error: ', ['error' => 'Email invalid']); @@ -90,10 +91,10 @@ class AuthApiController extends BaseAuthApiController // if ($validator->fails()) { // return $this->sendError('Validation Error.', $validator->errors()); // } - + $checkUserAgent = AgentUser::where('code', '=', $request->agents_code)->first(); if (empty($checkUserAgent)) { - return response()->json(['status' => false, 'message' => 'Đăng ký thất bại, Không tìm thấy đại lý.']); + return response()->json(['status' => false, 'msg' => 'Đăng ký thất bại, Không tìm thấy đại lý.']); } $dataInsert = $this->transformRegisterData($request->all()); @@ -132,7 +133,7 @@ class AuthApiController extends BaseAuthApiController // Response return response()->json([ 'status' => true, - 'message' => 'Đăng xuất thành công.' + 'msg' => 'Đăng xuất thành công.' ]); } function transformRegisterData($data) diff --git a/app/Http/Controllers/Api/BaseAuthApiController.php b/app/Http/Controllers/Api/BaseAuthApiController.php index aa479c9..3909b4a 100644 --- a/app/Http/Controllers/Api/BaseAuthApiController.php +++ b/app/Http/Controllers/Api/BaseAuthApiController.php @@ -1,11 +1,76 @@ true, - 'data' => $result, + 'data' => $result, 'message' => $message, ]; return response()->json($response, 200); @@ -28,12 +93,12 @@ class BaseAuthApiController extends Controller */ public function sendError($error, $errorMessages = [], $code = 404) { - $response = [ + $response = [ 'success' => false, 'message' => $error, ]; - if(!empty($errorMessages)){ + if (!empty($errorMessages)) { $response['data'] = $errorMessages; } return response()->json($response, $code); diff --git a/app/Http/Requests/Api/LoginApiRequest.php b/app/Http/Requests/Api/LoginApiRequest.php new file mode 100755 index 0000000..3cdc3a7 --- /dev/null +++ b/app/Http/Requests/Api/LoginApiRequest.php @@ -0,0 +1,63 @@ + + */ + public function rules() + { + return [ + 'username' => 'required|email_or_phone', + 'password' => 'required' + ]; + } + /** + * Get the error messages for the defined validation rules. + * + * @return array + */ + public function messages() + { + return [ + 'username.email_or_phone' => 'Tên đăng nhập phải là email hoặc số điện thoại hợp lệ.', + 'username.required' => 'Tên đăng nhập không được để trống.', + 'required.required' => 'Mật khẩu không được để trống.', + ]; + } + /** + * Handle a failed validation attempt. + * + * @param \Illuminate\Contracts\Validation\Validator $validator + * @return void + * + * @throws \Illuminate\Http\Exceptions\HttpResponseException + */ + protected function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => false, + 'msg' => $validator->errors() + ], 200)); + } + +} diff --git a/app/Http/Requests/Api/RegisterApiRequest.php b/app/Http/Requests/Api/RegisterApiRequest.php index 3c027ed..e91bb56 100755 --- a/app/Http/Requests/Api/RegisterApiRequest.php +++ b/app/Http/Requests/Api/RegisterApiRequest.php @@ -72,7 +72,7 @@ class RegisterApiRequest extends FormRequest { throw new HttpResponseException(response()->json([ 'status' => false, - 'message' => $validator->errors() + 'msg' => $validator->errors() ], 200)); } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ee8ca5b..310ab14 100755 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,6 +3,7 @@ namespace App\Providers; use Illuminate\Support\ServiceProvider; +use Illuminate\Support\Facades\Validator; class AppServiceProvider extends ServiceProvider { @@ -23,6 +24,19 @@ class AppServiceProvider extends ServiceProvider */ public function boot() { - // + Validator::extend('email_or_phone', function($attribute, $value, $parameters, $validator) { + // check email + if (filter_var($value, FILTER_VALIDATE_EMAIL)) { + return true; + } + + // check phone + $phoneRegex = '/^[0-9]{9,11}$/'; // custom phone here + return preg_match($phoneRegex, $value); + }); + + Validator::replacer('email_or_phone', function($message, $attribute, $rule, $parameters) { + return str_replace(':attribute', $attribute, ':attribute phải là email hoặc số điện thoại hợp lệ.'); + }); } }