update multi language login site

CR: sonhh (fake)
This commit is contained in:
dongpd 2021-09-23 11:38:22 +07:00
parent 61e82f68ca
commit e4829d7f78
7 changed files with 58 additions and 16 deletions

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

@ -135,5 +135,6 @@ return [
"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.", "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."
]; ];

View File

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

View File

@ -135,5 +135,6 @@ return [
"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.", "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."
]; ];

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

@ -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 -->