From 134e2236a64f6056bb614224a2cc055f76dc6c7e Mon Sep 17 00:00:00 2001 From: Alireza Ahmadi Date: Tue, 25 Apr 2023 08:41:11 +0200 Subject: [PATCH] [feature] add login session timeout --- web/assets/js/model/models.js | 1 + web/controller/index.go | 15 +++++++++++++-- web/entity/entity.go | 1 + web/html/xui/component/setting.html | 4 ++-- web/html/xui/setting.html | 1 + web/service/setting.go | 17 +++-------------- web/session/session.go | 12 +++++++++++- web/translation/translate.en_US.toml | 4 +++- web/translation/translate.fa_IR.toml | 2 ++ web/translation/translate.zh_Hans.toml | 2 ++ 10 files changed, 39 insertions(+), 20 deletions(-) diff --git a/web/assets/js/model/models.js b/web/assets/js/model/models.js index 45980764..03064a59 100644 --- a/web/assets/js/model/models.js +++ b/web/assets/js/model/models.js @@ -170,6 +170,7 @@ class AllSetting { this.webCertFile = ""; this.webKeyFile = ""; this.webBasePath = "/"; + this.sessionMaxAge = ""; this.expireDiff = ""; this.trafficDiff = ""; this.tgBotEnable = false; diff --git a/web/controller/index.go b/web/controller/index.go index b4f981e8..8543281b 100644 --- a/web/controller/index.go +++ b/web/controller/index.go @@ -18,8 +18,9 @@ type LoginForm struct { type IndexController struct { BaseController - userService service.UserService - tgbot service.Tgbot + settingService service.SettingService + userService service.UserService + tgbot service.Tgbot } func NewIndexController(g *gin.RouterGroup) *IndexController { @@ -69,6 +70,16 @@ func (a *IndexController) login(c *gin.Context) { a.tgbot.UserLoginNotify(form.Username, getRemoteIp(c), timeStr, 1) } + sessionMaxAge, err := a.settingService.GetSessionMaxAge() + if err != nil { + logger.Infof("Unable to get session's max age from DB") + } + + err = session.SetMaxAge(c, sessionMaxAge*60) + if err != nil { + logger.Infof("Unable to set session's max age") + } + err = session.SetLoginUser(c, user) logger.Info("user", user.Id, "login success") jsonMsg(c, I18n(c, "pages.login.toasts.successLogin"), err) diff --git a/web/entity/entity.go b/web/entity/entity.go index b464de00..0186a8c6 100644 --- a/web/entity/entity.go +++ b/web/entity/entity.go @@ -32,6 +32,7 @@ type AllSetting struct { WebCertFile string `json:"webCertFile" form:"webCertFile"` WebKeyFile string `json:"webKeyFile" form:"webKeyFile"` WebBasePath string `json:"webBasePath" form:"webBasePath"` + SessionMaxAge int `json:"sessionMaxAge" form:"sessionMaxAge"` ExpireDiff int `json:"expireDiff" form:"expireDiff"` TrafficDiff int `json:"trafficDiff" form:"trafficDiff"` TgBotEnable bool `json:"tgBotEnable" form:"tgBotEnable"` diff --git a/web/html/xui/component/setting.html b/web/html/xui/component/setting.html index 9f8e8cbc..00eeb259 100644 --- a/web/html/xui/component/setting.html +++ b/web/html/xui/component/setting.html @@ -9,7 +9,7 @@