From 51ac40758ebaccf9e5c98b55777b35d8ba5bbd9d Mon Sep 17 00:00:00 2001 From: wintsa Date: Tue, 9 Apr 2024 12:11:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/api/api_v1/system/login.go | 109 ++++++++++++++++++ service/router/panel/itemIcon.go | 6 +- service/router/system/login.go | 1 + .../home/components/AppStarter/index.vue | 18 ++- 4 files changed, 121 insertions(+), 13 deletions(-) diff --git a/service/api/api_v1/system/login.go b/service/api/api_v1/system/login.go index a20e1fb..13cbfee 100644 --- a/service/api/api_v1/system/login.go +++ b/service/api/api_v1/system/login.go @@ -32,6 +32,7 @@ type LoginLoginVerify struct { // @Param LoginLoginVerify body LoginLoginVerify true "登陆验证信息" // @Tags user // @Router /login [post] + func (l LoginApi) Login(c *gin.Context) { param := LoginLoginVerify{} if err := c.ShouldBindJSON(¶m); err != nil { @@ -111,3 +112,111 @@ func (l *LoginApi) Logout(c *gin.Context) { global.CUserToken.Delete(cToken) apiReturn.Success(c) } + +/** + * @Author: wintsa + * @Date: 2024-04-09 11:01:55 + * @LastEditors: wintsa + * @Description: token生成 + * @return {*} + */ +func (l LoginApi) GetToken(c *gin.Context) { + param := LoginLoginVerify{} + if err := c.ShouldBindJSON(¶m); err != nil { + apiReturn.ErrorParamFomat(c, err.Error()) + return + } + + if errMsg, err := base.ValidateInputStruct(param); err != nil { + apiReturn.ErrorParamFomat(c, errMsg) + return + } + + settings := systemSetting.ApplicationSetting{} + global.SystemSetting.GetValueByInterface("system_application", &settings) + + mUser := models.User{} + var ( + err error + info models.User + ) + bToken := "" + param.Username = strings.TrimSpace(param.Username) + info, err1 := mUser.GetUserInfoByUsername(param.Username) + + if err1 != nil { + // 未找到记录 账号 + + if err == gorm.ErrRecordNotFound { + return + + // mUser := models.User{ + // Username: strings.TrimSpace(param.Username), + // Password: cmn.PasswordEncryption("zw.123456"), + // Name: param.Username, + // HeadImage: "", + // Status: 1, + // Role: 2, + // // Mail: param.Username, 不再保存邮箱账号字段 + // } + // userInfo, err := mUser.CreateOne() + // if err != nil { + // apiReturn.ErrorDatabase(c, err.Error()) + // return + // } + // info = userInfo + } else { + // 未知错误 + apiReturn.Error(c, err.Error()) + return + } + + } + + // 停用或未激活 + if info.Status != 1 { + apiReturn.ErrorByCode(c, 1004) + return + } + + bToken = info.Token + if info.Token == "" { + // 生成token + buildTokenOver := false + for !buildTokenOver { + bToken = cmn.BuildRandCode(32, cmn.RAND_CODE_MODE2) + if _, err := mUser.GetUserInfoByToken(bToken); err != nil { + // 保存token + mUser.UpdateUserInfoByUserId(info.ID, map[string]interface{}{ + "token": bToken, + }) + buildTokenOver = true + } + } + info.Token = bToken + } + info.Password = "" + info.ReferralCode = "" + + // global.UserToken.SetDefault(bToken, info) + cToken := uuid.NewString() + "-" + cmn.Md5(cmn.Md5("userId"+strconv.Itoa(int(info.ID)))) + global.CUserToken.SetDefault(cToken, bToken) + global.Logger.Debug("token:", cToken, "|", bToken) + global.Logger.Debug(global.CUserToken.Get(cToken)) + + // 设置当前用户信息 + c.Set("userInfo", info) + info.Token = cToken // 重要 采用cToken,隐藏真实token + apiReturn.SuccessData(c, info) +} + +/** + * @Author: wintsa + * @Date: 2024-04-09 11:02:30 + * @LastEditors: wintsa + * @Description: token验证 + * @return {*} + */ +// func (l LoginApi) tokenValidate(c *gin.Context) { + +// } diff --git a/service/router/panel/itemIcon.go b/service/router/panel/itemIcon.go index c4263f1..b70636e 100644 --- a/service/router/panel/itemIcon.go +++ b/service/router/panel/itemIcon.go @@ -11,9 +11,9 @@ func InitItemIcon(router *gin.RouterGroup) { itemIcon := api_v1.ApiGroupApp.ApiPanel.ItemIcon r := router.Group("", middleware.LoginInterceptor) { - r.POST("/panel/itemIcon/edit", itemIcon.Edit) - r.POST("/panel/itemIcon/deletes", itemIcon.Deletes) - r.POST("/panel/itemIcon/saveSort", itemIcon.SaveSort) + r.POST("/panel/itemIcon/edit", middleware.AdminInterceptor, itemIcon.Edit) + r.POST("/panel/itemIcon/deletes", middleware.AdminInterceptor, itemIcon.Deletes) + r.POST("/panel/itemIcon/saveSort", middleware.AdminInterceptor, itemIcon.SaveSort) r.POST("/panel/itemIcon/addMultiple", itemIcon.AddMultiple) r.POST("/panel/itemIcon/getSiteFavicon", itemIcon.GetSiteFavicon) } diff --git a/service/router/system/login.go b/service/router/system/login.go index 3caa9d0..83a6dab 100644 --- a/service/router/system/login.go +++ b/service/router/system/login.go @@ -12,5 +12,6 @@ func InitLogin(router *gin.RouterGroup) { router.POST("/login", loginApi.Login) router.POST("/logout", middleware.LoginInterceptor, loginApi.Logout) + router.POST("/getToken", loginApi.GetToken) } diff --git a/src/views/home/components/AppStarter/index.vue b/src/views/home/components/AppStarter/index.vue index de01340..e101475 100644 --- a/src/views/home/components/AppStarter/index.vue +++ b/src/views/home/components/AppStarter/index.vue @@ -27,7 +27,7 @@ const defaultTitle = t('appLauncher.title') const title = ref('') const height = ref('500px') const authStore = useAuthStore() -const balcklist = [t('apps.exportImport.appName'),t('apps.baseSettings.appName'), t('apps.itemGroupManage.appName'), t('apps.uploadsFileManager.appName')] +const balcklist = [t('apps.exportImport.appName'),t('apps.baseSettings.appName'), t('apps.itemGroupManage.appName'), t('apps.uploadsFileManager.appName'),t('adminSettingUsers.appName')] const apps = ref([ { @@ -64,6 +64,12 @@ const apps = ref([ auth: authStore.userInfo?.role }, + { + name: t('adminSettingUsers.appName'), + componentName: 'Users', + icon: 'lucide-users', + auth: 1, + }, { name: t('apps.about.appName'), componentName: 'About', @@ -109,15 +115,7 @@ function handleResize() { } onMounted(() => { - const adminApp: App = { - name: t('adminSettingUsers.appName'), - componentName: 'Users', - icon: 'lucide-users', - auth: 1, - } - // 初始化 - if (authStore.userInfo?.role === 1) - apps.value.push(adminApp) + window.addEventListener('resize', handleResize) handleResize()