doorlogmanager view: show human readable errorcodes; DoorManagerLogController.php authorization fix

This commit is contained in:
Schneider Roland 2023-03-01 17:45:39 +01:00
parent ad7042c300
commit 8f63efa946
3 changed files with 81 additions and 34 deletions

View File

@ -98,7 +98,12 @@ class DoorManager extends BaseObject
$direction = DoorLog::$DIRECTION_OUT; $direction = DoorLog::$DIRECTION_OUT;
break; break;
default: default:
throw new BadRequestHttpException("$requestId: Direction not supported: " . $direction); throw new FitnessException(
"Direction $direction not supported",
FitnessException::TYPE_BAD_REQUEST,
"INVALID_DIRECTION",
$context
);
} }
$context->direction = $direction; $context->direction = $direction;
@ -108,18 +113,24 @@ class DoorManager extends BaseObject
$virtualKey = VirtualKey::findOne(['number' => $identifier]); $virtualKey = VirtualKey::findOne(['number' => $identifier]);
if (!isset($virtualKey)) { if (!isset($virtualKey)) {
$context->error = true; throw new FitnessException(
$context->errorCode = "VIRTUAL_KEY_NOT_FOUND"; "Virtual Key Not Found",
throw new BadRequestHttpException("$requestId: Virtual key not found: " . $identifier); FitnessException::TYPE_BAD_REQUEST,
"VIRTUAL_KEY_NOT_FOUND",
$context
);
} }
$card = Card::findOne($virtualKey->id_card); $card = Card::findOne($virtualKey->id_card);
if ($card != null) { if ($card != null) {
$card = Card::readCard($card->number); $card = Card::readCard($card->number);
} }
if ($card == null) { if ($card == null) {
$context->error = true; throw new FitnessException(
$context->errorCode = "CARD_NOT_FOUND"; "Virtual Key Not Found",
throw new BadRequestHttpException("$requestId: Card not found by virtual key: " . $identifier . '/' . $virtualKey->id_card); FitnessException::TYPE_BAD_REQUEST,
"CARD_FOR_VIRTUAL_KEY_NOT_FOUND",
$context
);
} }
$cardNumber = $card->number; $cardNumber = $card->number;
\Yii::info("$requestId: virtual key and card loaded in sec " . $stopWatch->split()); \Yii::info("$requestId: virtual key and card loaded in sec " . $stopWatch->split());
@ -128,9 +139,12 @@ class DoorManager extends BaseObject
$card = Card::readCard(Helper::fixAsciiChars($identifier)); $card = Card::readCard(Helper::fixAsciiChars($identifier));
\Yii::info("$requestId: Card loaded in sec " . $stopWatch->split()); \Yii::info("$requestId: Card loaded in sec " . $stopWatch->split());
if (!isset($card)) { if (!isset($card)) {
$context->error = true; throw new FitnessException(
$context->errorCode = "CARD_NOT_FOUND"; "Virtual Key Not Found",
throw new BadRequestHttpException("$requestId: Card not found with number: " . $identifier); FitnessException::TYPE_BAD_REQUEST,
"CARD_NOT_FOUND",
$context
);
} }
\Yii::info("$requestId: card loaded in sec " . $stopWatch->split()); \Yii::info("$requestId: card loaded in sec " . $stopWatch->split());
$virtualKey = VirtualKey::findOne(['id_card' => $card->id_card]); $virtualKey = VirtualKey::findOne(['id_card' => $card->id_card]);

View File

@ -30,6 +30,25 @@ use frontend\models\LogForm;
*/ */
class DoorManagerLogController extends Controller { class DoorManagerLogController extends Controller {
public function behaviors()
{
return [
'access' => [
'class' => \yii\filters\AccessControl::className(),
'only' => ['index'],
'rules' => [
// allow authenticated users
[
'allow' => true,
'roles' => ['@'],
],
// everything else is denied
],
],
];
}
public function actionIndex() public function actionIndex()
{ {
$searchModel = new DoorManagerLogSearch(); $searchModel = new DoorManagerLogSearch();

View File

@ -5,7 +5,7 @@ use yii\grid\GridView;
use yii\helpers\Url; use yii\helpers\Url;
/* @var $this yii\web\View */ /* @var $this yii\web\View */
/* @var $searchModel backend\models\DoorLogManagerSearch */ /* @var $searchModel frontend\models\DoorManagerLogSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */ /* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = "Kapu események"; $this->title = "Kapu események";
@ -34,29 +34,43 @@ $this->params['breadcrumbs'][] = $this->title;
[ 'attribute' => 'validation_kind', "value" =>"validation_kind", "label" => 'Típus' ], [ 'attribute' => 'validation_kind', "value" =>"validation_kind", "label" => 'Típus' ],
[ 'attribute' => 'key_number', "value" =>"key_number", "label" => 'Kulcs' ], [ 'attribute' => 'key_number', "value" =>"key_number", "label" => 'Kulcs' ],
[ 'attribute' => 'error', "value" =>"error", "label" => 'Hiba' ], [ 'attribute' => 'error', "value" =>"error", "label" => 'Hiba' ],
[ 'attribute' => 'error_code', "value" =>"error_code", "label" => 'Hiba kód' ], [ 'attribute' => 'error_code', "label" => 'Hiba kód' ,"value" =>function ($model) {
switch ($model->error_code){
case "CARD_NOT_FOUND":
// 'id_door_ma', return "Ismeretlen Kártya";
// 'name', case "VIRTUAL_KEY_NOT_FOUND":
// [ 'attribute' => 'id_user', "value" =>"userName" ], return "Ismeretlen virtuális kulcs";
// [ 'attribute' => 'id_user', "value" =>"userName" ], case "ALREADY_IN":
// return "Már belépett (1)";
// ['class' => 'yii\grid\ActionColumn', case "VIRTUAL_KEY_ALREADY_IN":
// 'template' => '{view}', return "Már belépett (2)";
// 'urlCreator' => function( $action, $model, $key, $index ){ case "UNKNOWN":
// if ( $action == 'view' ){ return "Ismeretlen hiba";
// return Url::to(['inventory-item/index' , 'id'=> $model->id_inventory]); case "EMERGENCY_OPEN_FAILED":
// } return "Sikertelen vésznyitás";
// }, case "EMPLOYEE_FAILED":
// 'buttons' =>[ return "Sikertelen belépés 'munkatárs' kártyával";
// 'view' =>function ($url, $model, $key) { case "NOT_FOUND_ACTIVE_TICKET":
// return Html::a('Részletek', $url,['class' => 'btn btn-xs btn-primary', return "Nem található érvényes bérlet";
// ]) ; case "NOT_FOUND_CUSTOMER":
// } return "Ismeretlen vendég";
// ] case "REQUIRED_KEY":
// return "Öltözőkulcs szükséges";
// ], case "CARD_STATUS_NOT_ACTIVE":
case "CARD_STATUS_INACTIVE":
return "Kártya inaktív";
case "CARD_LOCKER_KEY_ASSIGNED_FLAG":
return "Öltözőkulcs leadása kötelező (1)";
case "CARD_LOCKER_KEY_ASSIGNED_KEY":
return "Öltözőkulcs leadása kötelező (2)";
case "VIRTUAL_KEY_MOVE_OUT_WITHOUT_MOVE_IN":
return "Először belépés szükséges";
case "VIRTUAL_KEY_ALREADY_OUT":
return "Már kilépett";
default:
return $model->error_code;
}
}],
], ],
]); ?> ]); ?>