diff --git a/api/components/ErrorHandler.php b/api/components/ErrorHandler.php new file mode 100644 index 0000000..ee04676 --- /dev/null +++ b/api/components/ErrorHandler.php @@ -0,0 +1,8 @@ + [ - 'class' => common\components\ErrorHandler::className(), + 'class' => api\components\ErrorHandler::className(), ], 'urlManager' => [ // to improve the security 'enableStrictParsing' => true ], - 'response' => [ - 'format' => yii\web\Response::FORMAT_JSON - ] ], 'params' => $params, ]; diff --git a/api/controllers/SiteController.php b/api/controllers/SiteController.php new file mode 100644 index 0000000..b999ecb --- /dev/null +++ b/api/controllers/SiteController.php @@ -0,0 +1,34 @@ +errorHandler->exception; + + if ($exception !== null) { + return [ + 'name' => $exception->getName(), + 'status' => $exception->statusCode, + ]; + } + } +} diff --git a/api/forms/LoginForm.php b/api/forms/LoginForm.php index 480152e..96af501 100644 --- a/api/forms/LoginForm.php +++ b/api/forms/LoginForm.php @@ -54,4 +54,20 @@ public function login() } return false; } -} \ No newline at end of file + + /** + * This class permits its instance to get the login column. + * + * @author Muhammad Yahya Muhaimin + */ + public function getLoginColumn() + { + try { + $loginColumn = parent::getLoginColumn(); + } catch (InvalidConfigException $e) { + return $e->getMessage(); + } + + return $loginColumn; + } +} diff --git a/api/modules/v1/controllers/AuthController.php b/api/modules/v1/controllers/AuthController.php index f8346ef..faf3a7d 100644 --- a/api/modules/v1/controllers/AuthController.php +++ b/api/modules/v1/controllers/AuthController.php @@ -98,14 +98,6 @@ public function actionLogin() throw new HttpException(400, $e->getMessage(), ApiCode::DEVICE_IDENTIFIER_NOT_FOUND); } - $loginByEmail = \Yii::$app->params['loginByEmail']; - - if ($loginByEmail) { - $loginForm->setScenario(LoginForm::SCENARIO_SUBMIT_LOGIN_EMAIL); - } else { - $loginForm->setScenario(LoginForm::SCENARIO_SUBMIT_LOGIN_USERNAME); - } - $loginForm->load(\Yii::$app->request->post(), 'User'); /* @@ -117,7 +109,20 @@ public function actionLogin() */ $user = \Yii::$app->user->getIdentity(); - $msgLoginBy = $loginByEmail ? 'email ' . $user->email : 'username ' . $user->username; + $msgLoginBy = ''; + $loginColumn = $loginForm->getLoginColumn(); + + switch ($loginColumn) { + case 'username': + $msgLoginBy = 'username ' . $user->username; + break; + case 'email': + $msgLoginBy = 'email ' . $user->email; + break; + default: + $msgLoginBy = $loginColumn; + break; + } return [ 'name' => 'Success', @@ -226,7 +231,6 @@ public function actionResetPassword($resetPasswordToken) // this will catch POST request if (\Yii::$app->request->isPost) { - $passwordForm->load(\Yii::$app->request->post(), 'User'); if ($passwordForm->validate() && $passwordForm->resetPassword()) {