Merge branch 'dev_DTD' into BiFacePro2.0.1

# Conflicts:
#	controllers/ApiController.php
This commit is contained in:
dongpd 2021-11-29 10:54:55 +07:00
commit 7181c32bbf
12 changed files with 110 additions and 31 deletions

View File

@ -95,18 +95,21 @@ class ApiController extends Controller {
$token = \app\models\SyncUrl::findOne(['key_config' => 'token']); $token = \app\models\SyncUrl::findOne(['key_config' => 'token']);
if ($token) if ($token)
$tk = $token->data; $tk = $token->data;
$res = json_decode(file_get_contents($ip . "/api/oem/face_recognition?token=" . $tk, false, stream_context_create([ $data = [];
$data[] = strval($id_camera); //camera_id
$data[] = date("Y-m-d H:i:s", $time); //frametime
$data[] = $staffInfo ? strval($staffInfo->code) : "0"; //idCard
$data[] = $staffInfo ? $staffInfo->staff_id : ""; //idObject
$data[] = "123"; //person_id
$data[] = "+7"; //timezone
$text = implode("|", $data);
$res = json_decode(file_get_contents($ip . "/api/box/face_recognition_auth_v2?token=" . $tk, false, stream_context_create([
'http' => [ 'http' => [
'header' => "Content-Type: application/json", 'header' => "Content-Type: application/json",
'method' => "POST", 'method' => "POST",
'content' => json_encode([ 'content' => json_encode([
'image' => base64_encode(file_get_contents("/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $fileName)), 'image' => base64_encode(file_get_contents("/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $fileName)),
'camera_id' => strval($id_camera), 'data' => common::rsaEncode($text)
'frametime' => date("Y-m-d H:i:s", $time),
'idCard' => $staffInfo ? strval($staffInfo->code) : "0",
'idObject' => $staffInfo ? $staffInfo->staff_id : "",
"person_id" => "123",
"timezone" => "+7"
]) ])
] ]
])), true); ])), true);

View File

@ -296,6 +296,7 @@ class ConfigController extends Controller {
} }
public function actionReset() { public function actionReset() {
Yii::$app->response->format = "json";
if (Yii::$app->request->post()) { if (Yii::$app->request->post()) {
if (Yii::$app->request->post("deleteDB") === "true") { if (Yii::$app->request->post("deleteDB") === "true") {
\Yii::$app->db->createCommand()->truncateTable('capture_logs')->execute(); \Yii::$app->db->createCommand()->truncateTable('capture_logs')->execute();
@ -315,7 +316,7 @@ class ConfigController extends Controller {
if ($device_id) if ($device_id)
$id_camera = intval($device_id->data); $id_camera = intval($device_id->data);
try { try {
file_get_contents($ip . "/api/model/reset_log_model", false, stream_context_create([ $res = json_decode(file_get_contents($ip . "/api/model/reset_log_model", false, stream_context_create([
'http' => [ 'http' => [
'header' => "Content-Type: application/json", 'header' => "Content-Type: application/json",
'method' => "POST", 'method' => "POST",
@ -324,9 +325,17 @@ class ConfigController extends Controller {
"isCloud" => 0 "isCloud" => 0
]) ])
] ]
])); ])), true);
if ($res['status'] != 10000)
return [
"status" => false,
"btnText" => Yii::t("app", "THU_LAI")
];
} catch (Exception $ex) { } catch (Exception $ex) {
return [
"status" => false,
"btnText" => Yii::t("app", "THU_LAI")
];
} }
} }
if (Yii::$app->request->post("resetDevice") === "true") { if (Yii::$app->request->post("resetDevice") === "true") {
@ -361,9 +370,11 @@ class ConfigController extends Controller {
])); ]));
} }
\app\models\SyncUrl::deleteAll(['IN', 'key_config', ['server_api', 'device_id']]); \app\models\SyncUrl::deleteAll(['IN', 'key_config', ['server_api', 'device_id']]);
return Url::to(['/config/cau-hinh-thiet-bi']); return [
"status" => true,
"url" => Url::to(['/config/cau-hinh-thiet-bi'])
];
} else { } else {
Yii::$app->response->format = "json";
return [ return [
"title" => Yii::t("app", "RESET_THIET_BI"), "title" => Yii::t("app", "RESET_THIET_BI"),
"form" => $this->renderPartial("reset") "form" => $this->renderPartial("reset")

View File

@ -14,13 +14,6 @@ use yii\helpers\Url;
*/ */
class DashboardController extends Controller { class DashboardController extends Controller {
public function init() {
parent::init();
if (Yii::$app->user->isGuest) {
return $this->redirect(['/site/login']);
}
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@ -157,4 +150,12 @@ class DashboardController extends Controller {
} }
} }
public function actionChangeLanguageLogin($lang) {
$language = \app\models\common::allLanguage();
foreach ($language as $key => $value) {
if ($value['name'] === $lang)
return $this->redirect(['/site/login', 'lang' => $lang]);
}
}
} }

View File

@ -66,13 +66,20 @@ class SiteController extends Controller {
* *
* @return Response|string * @return Response|string
*/ */
public function actionLogin() { public function actionLogin($lang = "vi-VI") {
if (!Yii::$app->user->isGuest) { if (!Yii::$app->user->isGuest) {
return $this->goHome(); return $this->goHome();
} }
Yii::$app->language = $lang;
$model = new LoginForm(); $model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) { if ($model->load(Yii::$app->request->post()) && $model->login()) {
$lang = Yii::$app->request->post('lang');
$language = \app\models\common::allLanguage();
foreach ($language as $key => $value) {
if ($value['name'] === $lang)
Yii::$app->session->set("language", $value);
}
return $this->redirect(["/config"]); return $this->redirect(["/config"]);
} }
@ -88,9 +95,10 @@ class SiteController extends Controller {
* @return Response * @return Response
*/ */
public function actionLogout() { public function actionLogout() {
$lang = Yii::$app->session->get("language") ? Yii::$app->session->get("language")["name"] : Yii::$app->language;
Yii::$app->user->logout(); Yii::$app->user->logout();
return $this->goHome(); return $this->redirect(['/site/login', 'lang' => $lang]); //$this->goHome();
} }
/** /**

View File

@ -133,5 +133,8 @@ return [
"CO_LOI_XAY_RA_HAY_THU_LAI" => "An error occurred, check the network connection and try again", "CO_LOI_XAY_RA_HAY_THU_LAI" => "An error occurred, check the network connection and try again",
"ENGINE_KHONG_HOAT_DONG" => "Engine is not running", "ENGINE_KHONG_HOAT_DONG" => "Engine is not running",
"DANG_NHAP" => "Login", "DANG_NHAP" => "Login",
"MAT_KHAU" => "Password" "MAT_KHAU" => "Password",
"RESET_THIET_BI_LOI" => "Error connecting to the server. Please check your internet connection and try again.",
"THU_LAI" => "Try again",
"TEN_DANG_NHAP_HOAC_MAT_KHAU_KHONG_DUNG" => "Incorrect username or password."
]; ];

View File

@ -133,5 +133,8 @@ return [
"CO_LOI_XAY_RA_HAY_THU_LAI" => "おそらくネットワーク接続が原因でエラーが発生しました。再試行してください", "CO_LOI_XAY_RA_HAY_THU_LAI" => "おそらくネットワーク接続が原因でエラーが発生しました。再試行してください",
"ENGINE_KHONG_HOAT_DONG" => "Engine不活動", "ENGINE_KHONG_HOAT_DONG" => "Engine不活動",
"DANG_NHAP" => "ログイン", "DANG_NHAP" => "ログイン",
"MAT_KHAU" => "パスワード" "MAT_KHAU" => "パスワード",
"RESET_THIET_BI_LOI" => "サーバーへの接続中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください",
"THU_LAI" => "再試行",
"TEN_DANG_NHAP_HOAC_MAT_KHAU_KHONG_DUNG" => "ユーザーネームまたはパスワードが違います"
]; ];

View File

@ -133,5 +133,8 @@ return [
"CO_LOI_XAY_RA_HAY_THU_LAI" => "Có lỗi xảy ra, có thể do đường truyền mạng, xin vui lòng thử lại", "CO_LOI_XAY_RA_HAY_THU_LAI" => "Có lỗi xảy ra, có thể do đường truyền mạng, xin vui lòng thử lại",
"ENGINE_KHONG_HOAT_DONG" => "Engine không hoạt động", "ENGINE_KHONG_HOAT_DONG" => "Engine không hoạt động",
"DANG_NHAP" => "Đăng nhập", "DANG_NHAP" => "Đăng nhập",
"MAT_KHAU" => "Mật khẩu" "MAT_KHAU" => "Mật khẩu",
"RESET_THIET_BI_LOI" => "Lỗi kết nối đến server. Hãy kiểm tra lại kết nối internet và thử lại.",
"THU_LAI" => "Thử lại",
"TEN_DANG_NHAP_HOAC_MAT_KHAU_KHONG_DUNG" => "Tên đăng nhập hoặc mật khẩu không đúng."
]; ];

View File

@ -43,11 +43,18 @@ class LoginForm extends Model {
if (!$this->hasErrors()) { if (!$this->hasErrors()) {
$user = $this->getUser(); $user = $this->getUser();
if (!$user || !$user->validatePassword($this->password)) { if (!$user || !$user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect username or password.'); $this->addError($attribute, Yii::t("app", "TEN_DANG_NHAP_HOAC_MAT_KHAU_KHONG_DUNG"));
} }
} }
} }
public function attributeLabels() {
return [
'username' => Yii::t("app", "TEN_DANG_NHAP"),
'password' => Yii::t("app", "MAT_KHAU")
];
}
/** /**
* Logs in a user using the provided username and password. * Logs in a user using the provided username and password.
* @return bool whether the user is logged in successfully * @return bool whether the user is logged in successfully

View File

@ -231,4 +231,11 @@ class common extends \yii\db\ActiveRecord {
]; ];
} }
public static function rsaEncode($text) {
$publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCXB8c44cboYsGG6IzISqxf8W7q3AN0mGmekDYpBWpz9udif+jwK6h7NuOZvFDeB/32TVrtvaGDmExCeBerpcoOvGh4eUXyke2lSLzrg7pc/wD0KproEGoAAFDB0Pr5bZhg6ELp3Sk++0MPyxH6u1pgtHDxEnMwXV8cxw/rSCM+wIDAQAB";
$publicKey = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($publicKey, 64, "\n", true) . "\n-----END PUBLIC KEY-----";
openssl_public_encrypt($text, $encrypted, $publicKey, OPENSSL_PKCS1_PADDING);
return base64_encode($encrypted);
}
} }

View File

@ -7,7 +7,7 @@ use yii\bootstrap\ActiveForm;
/* @var $form yii\bootstrap\ActiveForm */ /* @var $form yii\bootstrap\ActiveForm */
/* @var $model \common\models\LoginForm */ /* @var $model \common\models\LoginForm */
$this->title = 'Sign In'; $this->title = Yii::t("app", "DANG_NHAP");
$fieldOptions1 = [ $fieldOptions1 = [
'options' => ['class' => 'form-group has-feedback'], 'options' => ['class' => 'form-group has-feedback'],
@ -50,6 +50,30 @@ $fieldOptions2 = [
<div class="row"> <div class="row">
<div class="col-xs-7"> <div class="col-xs-7">
<input type="hidden" value="<?php echo Yii::$app->request->get("lang"); ?>" name="lang">
<?php
$languages = app\models\common::allLanguage();
$currentLanguage = ["icon" => "vi.png", "name" => "vi-VI", "description" => "Tiếng Việt"];
foreach ($languages as $key => $value) {
if ($value['name'] === Yii::$app->request->get('lang'))
$currentLanguage = $value;
}
?>
<div class="btn-group" id="card-picker">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<img src="/images/lang/<?php echo $currentLanguage["icon"]; ?>" width="20px">
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<?php foreach ($languages as $key => $value) { ?>
<li>
<a href="<?php echo yii\helpers\Url::to(['/dashboard/change-language-login', 'lang' => $value['name']]); ?>">
<img src="/images/lang/<?php echo $value['icon']; ?>" width="20px"> <?php echo $value['description']; ?>
</a>
</li>
<?php } ?>
</ul>
</div>
</div> </div>
<div class="col-xs-5"> <div class="col-xs-5">
<?= Html::submitButton(Yii::t("app", "DANG_NHAP"), ['class' => 'btn btn-primary btn-block', 'name' => 'login-button']) ?> <?= Html::submitButton(Yii::t("app", "DANG_NHAP"), ['class' => 'btn btn-primary btn-block', 'name' => 'login-button']) ?>
@ -60,5 +84,4 @@ $fieldOptions2 = [
<?php ActiveForm::end(); ?> <?php ActiveForm::end(); ?>
</div> </div>
<!-- /.login-box-body --> </div>
</div><!-- /.login-box -->

View File

@ -1,11 +1,14 @@
<div class="alert alert-danger hidden" id="reset-error">
<i class="fa fa-info-circle"></i> {Yii::t("app", "RESET_THIET_BI_LOI")}
</div>
<div class="text-left"> <div class="text-left">
<input type="checkbox" name="DeleteDatabase" checked="" style="width: inherit;"> {Yii::t("app", "XOA_DU_LIEU_LUU_TRU_TRONG_THIET_BI")} <input type="checkbox" name="DeleteDatabase" checked="" style="width: inherit;"> {Yii::t("app", "XOA_DU_LIEU_LUU_TRU_TRONG_THIET_BI")}
<br> <br>
<input type="checkbox" name="ResetDevice" checked="" style="width: inherit;"> {Yii::t("app", "RESET_CAU_HINH_THIET_BI")} <input type="checkbox" name="ResetDevice" checked="" style="width: inherit;"> {Yii::t("app", "RESET_CAU_HINH_THIET_BI")}
</div> </div>
<div class="text-center"> <div class="text-center">
<button class="btn btn-danger" onclick="common.reset(this);" data-href="{yii\helpers\Url::to(['/config/reset'])}"> <button class="btn btn-danger" onclick="common.reset(this);" data-href="{yii\helpers\Url::to(['/config/reset'])}" id="reset-accept">
{Yii::t("app", "DONG_Y")} {Yii::t("app", "DONG_Y")}
</button> </button>
<button type="button" class="btn btn-default" data-dismiss="modal">{Yii::t("app", "HUY_BO")}</button> <button type="button" class="btn btn-default" data-dismiss="modal" id="reset-close">{Yii::t("app", "HUY_BO")}</button>
</div> </div>

View File

@ -328,7 +328,14 @@ common.reset = function (e) {
resetDevice: resetDevice resetDevice: resetDevice
}, },
success: function (data) { success: function (data) {
window.location = data; common.modalBlock(false);
if (data.status)
window.location = data.url;
else {
$("#reset-error").removeClass("hidden");
$("#reset-close").addClass("hidden");
$("#reset-accept").html(data.btnText);
}
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
common.modalBlock(false); common.modalBlock(false);