From 66357b25d5363f391d84838428599fd6aaff5d30 Mon Sep 17 00:00:00 2001 From: dongpd Date: Thu, 9 Sep 2021 17:08:56 +0700 Subject: [PATCH 1/3] task: encode RSA data sync to server CR: sonhh (fake) --- controllers/ApiController.php | 60 +++++++++++++++++++++++------------ models/common.php | 7 ++++ 2 files changed, 47 insertions(+), 20 deletions(-) diff --git a/controllers/ApiController.php b/controllers/ApiController.php index 67b38698..2b8ebb46 100644 --- a/controllers/ApiController.php +++ b/controllers/ApiController.php @@ -95,18 +95,21 @@ class ApiController extends Controller { $token = \app\models\SyncUrl::findOne(['key_config' => 'token']); if ($token) $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' => [ 'header' => "Content-Type: application/json", 'method' => "POST", 'content' => json_encode([ 'image' => base64_encode(file_get_contents("/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $fileName)), - 'camera_id' => strval($id_camera), - '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" + 'data' => common::rsaEncode($text) ]) ] ])), true); @@ -348,18 +351,21 @@ class ApiController extends Controller { $tk = $token->data; foreach ($ls as $key => $value) { $staffInfo = ListManagement::findOne($value->staff_id); - $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", $value->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' => [ 'header' => "Content-Type: application/json", 'method' => "POST", 'content' => json_encode([ 'image' => base64_encode(file_get_contents("/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $value->image)), - 'camera_id' => strval($id_camera), - 'frametime' => date("Y-m-d H:i:s", $value->time), - 'idCard' => $staffInfo ? strval($staffInfo->code) : "0", - 'idObject' => $staffInfo ? $staffInfo->staff_id : "", - "person_id" => "123", - "timezone" => "+7" + 'data' => common::rsaEncode($text) ]) ] ])), true); @@ -474,12 +480,26 @@ class ApiController extends Controller { } public function actionTest() { -// $updating = \app\models\SyncUrl::findOne(['key_config' => 'token']); - $updating = \app\models\SyncUrl::find()->all(); - foreach ($updating as $key => $value) { - echo $value->key_config . " " . $value->data . "
"; - } - exit(); +// $key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCXB8c44cboYsGG6IzISqxf8W7q3AN0mGmekDYpBWpz9udif+jwK6h7NuOZvFDeB/32TVrtvaGDmExCeBerpcoOvGh4eUXyke2lSLzrg7pc/wD0KproEGoAAFDB0Pr5bZhg6ELp3Sk++0MPyxH6u1pgtHDxEnMwXV8cxw/rSCM+wIDAQAB'; +// $rsa = new \phpseclib3\Crypt\RSA; +// $rsa->loadKey($key); +// $rsa->setPublicKey($key); +// +// echo $rsa->getPublicKey(); +// exit(); + $test = "10|2021-07-27 19:16:25|211155|1|2021-07-27 19:16:25"; + $encode = common::rsaEncode($test); + $res = json_decode(file_get_contents("http://192.168.0.9:6004/api/box/face_recognition_auth_v2", false, stream_context_create([ + 'http' => [ + 'header' => "Content-Type: application/json", + 'method' => "POST", + 'content' => json_encode([ + 'image' => 'abc', + 'data' => $encode + ]) + ] + ])), true); + return var_dump($res); } public function actionReGenFeature() { diff --git a/models/common.php b/models/common.php index 5ba772ef..87c0acff 100644 --- a/models/common.php +++ b/models/common.php @@ -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); + } + } From 61e82f68cabb40892f474e883d19e6874534a8f1 Mon Sep 17 00:00:00 2001 From: dongpd Date: Mon, 20 Sep 2021 15:11:00 +0700 Subject: [PATCH 2/3] update alert when reset device failed CR: sonhh (fake) --- controllers/ConfigController.php | 21 ++++++++++++++++----- messages/en/app.php | 4 +++- messages/ja/app.php | 4 +++- messages/vi/app.php | 4 +++- views/config/reset.tpl | 7 +++++-- web/js/common.js | 9 ++++++++- 6 files changed, 38 insertions(+), 11 deletions(-) diff --git a/controllers/ConfigController.php b/controllers/ConfigController.php index 6361cdc8..88cfa50a 100644 --- a/controllers/ConfigController.php +++ b/controllers/ConfigController.php @@ -296,6 +296,7 @@ class ConfigController extends Controller { } public function actionReset() { + Yii::$app->response->format = "json"; if (Yii::$app->request->post()) { if (Yii::$app->request->post("deleteDB") === "true") { \Yii::$app->db->createCommand()->truncateTable('capture_logs')->execute(); @@ -315,7 +316,7 @@ class ConfigController extends Controller { if ($device_id) $id_camera = intval($device_id->data); 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' => [ 'header' => "Content-Type: application/json", 'method' => "POST", @@ -324,9 +325,17 @@ class ConfigController extends Controller { "isCloud" => 0 ]) ] - ])); + ])), true); + if ($res['status'] != 10000) + return [ + "status" => false, + "btnText" => Yii::t("app", "THU_LAI") + ]; } catch (Exception $ex) { - + return [ + "status" => false, + "btnText" => Yii::t("app", "THU_LAI") + ]; } } 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']]); - return Url::to(['/config/cau-hinh-thiet-bi']); + return [ + "status" => true, + "url" => Url::to(['/config/cau-hinh-thiet-bi']) + ]; } else { - Yii::$app->response->format = "json"; return [ "title" => Yii::t("app", "RESET_THIET_BI"), "form" => $this->renderPartial("reset") diff --git a/messages/en/app.php b/messages/en/app.php index 6775a3dd..0ba515a9 100644 --- a/messages/en/app.php +++ b/messages/en/app.php @@ -133,5 +133,7 @@ return [ "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", "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" ]; diff --git a/messages/ja/app.php b/messages/ja/app.php index e4be8a65..78459ee3 100644 --- a/messages/ja/app.php +++ b/messages/ja/app.php @@ -133,5 +133,7 @@ return [ "CO_LOI_XAY_RA_HAY_THU_LAI" => "おそらくネットワーク接続が原因でエラーが発生しました。再試行してください", "ENGINE_KHONG_HOAT_DONG" => "Engine不活動", "DANG_NHAP" => "ログイン", - "MAT_KHAU" => "パスワード" + "MAT_KHAU" => "パスワード", + "RESET_THIET_BI_LOI" => "サーバーへの接続中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください", + "THU_LAI" => "再試行" ]; diff --git a/messages/vi/app.php b/messages/vi/app.php index a478ce09..b6b3d58d 100644 --- a/messages/vi/app.php +++ b/messages/vi/app.php @@ -133,5 +133,7 @@ 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", "ENGINE_KHONG_HOAT_DONG" => "Engine không hoạt động", "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" ]; diff --git a/views/config/reset.tpl b/views/config/reset.tpl index 2f44a181..ee021b93 100644 --- a/views/config/reset.tpl +++ b/views/config/reset.tpl @@ -1,11 +1,14 @@ +
{Yii::t("app", "XOA_DU_LIEU_LUU_TRU_TRONG_THIET_BI")}
{Yii::t("app", "RESET_CAU_HINH_THIET_BI")}
- - +
\ No newline at end of file diff --git a/web/js/common.js b/web/js/common.js index 7fa78fdf..6cef1fa8 100644 --- a/web/js/common.js +++ b/web/js/common.js @@ -328,7 +328,14 @@ common.reset = function (e) { resetDevice: resetDevice }, 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) { common.modalBlock(false); From e4829d7f78f3b9e25da122c150c96d9f70dbdbd4 Mon Sep 17 00:00:00 2001 From: dongpd Date: Thu, 23 Sep 2021 11:38:22 +0700 Subject: [PATCH 3/3] update multi language login site CR: sonhh (fake) --- controllers/DashboardController.php | 15 +++++----- controllers/SiteController.php | 12 ++++++-- messages/en/app.php | 3 +- messages/ja/app.php | 3 +- messages/vi/app.php | 3 +- models/LoginForm.php | 9 +++++- .../yiisoft/yii2-app/site/login.php | 29 +++++++++++++++++-- 7 files changed, 58 insertions(+), 16 deletions(-) diff --git a/controllers/DashboardController.php b/controllers/DashboardController.php index fcf61bfd..d0ca879d 100644 --- a/controllers/DashboardController.php +++ b/controllers/DashboardController.php @@ -14,13 +14,6 @@ use yii\helpers\Url; */ class DashboardController extends Controller { - public function init() { - parent::init(); - if (Yii::$app->user->isGuest) { - return $this->redirect(['/site/login']); - } - } - /** * {@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]); + } + } + } diff --git a/controllers/SiteController.php b/controllers/SiteController.php index 2b91dae3..63331c1c 100644 --- a/controllers/SiteController.php +++ b/controllers/SiteController.php @@ -66,13 +66,20 @@ class SiteController extends Controller { * * @return Response|string */ - public function actionLogin() { + public function actionLogin($lang = "vi-VI") { if (!Yii::$app->user->isGuest) { return $this->goHome(); } + Yii::$app->language = $lang; $model = new LoginForm(); 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"]); } @@ -88,9 +95,10 @@ class SiteController extends Controller { * @return Response */ public function actionLogout() { + $lang = Yii::$app->session->get("language") ? Yii::$app->session->get("language")["name"] : Yii::$app->language; Yii::$app->user->logout(); - return $this->goHome(); + return $this->redirect(['/site/login', 'lang' => $lang]); //$this->goHome(); } /** diff --git a/messages/en/app.php b/messages/en/app.php index 0ba515a9..de3f286f 100644 --- a/messages/en/app.php +++ b/messages/en/app.php @@ -135,5 +135,6 @@ return [ "DANG_NHAP" => "Login", "MAT_KHAU" => "Password", "RESET_THIET_BI_LOI" => "Error connecting to the server. Please check your internet connection and try again.", - "THU_LAI" => "Try again" + "THU_LAI" => "Try again", + "TEN_DANG_NHAP_HOAC_MAT_KHAU_KHONG_DUNG" => "Incorrect username or password." ]; diff --git a/messages/ja/app.php b/messages/ja/app.php index 78459ee3..9b8f1c66 100644 --- a/messages/ja/app.php +++ b/messages/ja/app.php @@ -135,5 +135,6 @@ return [ "DANG_NHAP" => "ログイン", "MAT_KHAU" => "パスワード", "RESET_THIET_BI_LOI" => "サーバーへの接続中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください", - "THU_LAI" => "再試行" + "THU_LAI" => "再試行", + "TEN_DANG_NHAP_HOAC_MAT_KHAU_KHONG_DUNG" => "ユーザーネームまたはパスワードが違います" ]; diff --git a/messages/vi/app.php b/messages/vi/app.php index b6b3d58d..8a5c16d2 100644 --- a/messages/vi/app.php +++ b/messages/vi/app.php @@ -135,5 +135,6 @@ return [ "DANG_NHAP" => "Đăng nhập", "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" + "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." ]; diff --git a/models/LoginForm.php b/models/LoginForm.php index 038c70a1..b8c8f48a 100644 --- a/models/LoginForm.php +++ b/models/LoginForm.php @@ -43,11 +43,18 @@ class LoginForm extends Model { if (!$this->hasErrors()) { $user = $this->getUser(); 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. * @return bool whether the user is logged in successfully diff --git a/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/site/login.php b/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/site/login.php index 824cd9f7..1a7b2834 100644 --- a/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/site/login.php +++ b/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/site/login.php @@ -7,7 +7,7 @@ use yii\bootstrap\ActiveForm; /* @var $form yii\bootstrap\ActiveForm */ /* @var $model \common\models\LoginForm */ -$this->title = 'Sign In'; +$this->title = Yii::t("app", "DANG_NHAP"); $fieldOptions1 = [ 'options' => ['class' => 'form-group has-feedback'], @@ -50,6 +50,30 @@ $fieldOptions2 = [
+ " name="lang"> + "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; + } + ?> +
+ + +
'btn btn-primary btn-block', 'name' => 'login-button']) ?> @@ -60,5 +84,4 @@ $fieldOptions2 = [
- -
+