Skip to content

Commit

Permalink
Merge pull request #33 from yaliv/develop
Browse files Browse the repository at this point in the history
[fix] ErrorHandler & actionLogin
  • Loading branch information
haqqi authored Feb 5, 2017
2 parents 60247a8 + b7f9203 commit 8697000
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 15 deletions.
8 changes: 8 additions & 0 deletions api/components/ErrorHandler.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

namespace api\components;

class ErrorHandler extends \common\components\ErrorHandler
{
public $errorAction = 'site/error';
}
5 changes: 1 addition & 4 deletions api/config/main.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,12 @@
],
],
'errorHandler' => [
'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,
];
34 changes: 34 additions & 0 deletions api/controllers/SiteController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

namespace api\controllers;

use yii\rest\Controller;

/**
* Site controller.
*/
class SiteController extends Controller
{
public function behaviors()
{
$behaviors = parent::behaviors();

$behaviors['authenticator']['except'] = [
'error',
];

return $behaviors;
}

public function actionError()
{
$exception = \Yii::$app->errorHandler->exception;

if ($exception !== null) {
return [
'name' => $exception->getName(),
'status' => $exception->statusCode,
];
}
}
}
18 changes: 17 additions & 1 deletion api/forms/LoginForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,20 @@ public function login()
}
return false;
}
}

/**
* This class permits its instance to get the login column.
*
* @author Muhammad Yahya Muhaimin <myahyamuhaimin@yahoo.com>
*/
public function getLoginColumn()
{
try {
$loginColumn = parent::getLoginColumn();
} catch (InvalidConfigException $e) {
return $e->getMessage();
}

return $loginColumn;
}
}
24 changes: 14 additions & 10 deletions api/modules/v1/controllers/AuthController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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');

/*
Expand All @@ -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',
Expand Down Expand Up @@ -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()) {
Expand Down

0 comments on commit 8697000

Please sign in to comment.