修改权限

This commit is contained in:
wintsa 2024-04-09 12:11:46 +08:00
parent ce06c5a0d4
commit 51ac40758e
4 changed files with 121 additions and 13 deletions

View File

@ -32,6 +32,7 @@ type LoginLoginVerify struct {
// @Param LoginLoginVerify body LoginLoginVerify true "登陆验证信息" // @Param LoginLoginVerify body LoginLoginVerify true "登陆验证信息"
// @Tags user // @Tags user
// @Router /login [post] // @Router /login [post]
func (l LoginApi) Login(c *gin.Context) { func (l LoginApi) Login(c *gin.Context) {
param := LoginLoginVerify{} param := LoginLoginVerify{}
if err := c.ShouldBindJSON(&param); err != nil { if err := c.ShouldBindJSON(&param); err != nil {
@ -111,3 +112,111 @@ func (l *LoginApi) Logout(c *gin.Context) {
global.CUserToken.Delete(cToken) global.CUserToken.Delete(cToken)
apiReturn.Success(c) 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(&param); 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) {
// }

View File

@ -11,9 +11,9 @@ func InitItemIcon(router *gin.RouterGroup) {
itemIcon := api_v1.ApiGroupApp.ApiPanel.ItemIcon itemIcon := api_v1.ApiGroupApp.ApiPanel.ItemIcon
r := router.Group("", middleware.LoginInterceptor) r := router.Group("", middleware.LoginInterceptor)
{ {
r.POST("/panel/itemIcon/edit", itemIcon.Edit) r.POST("/panel/itemIcon/edit", middleware.AdminInterceptor, itemIcon.Edit)
r.POST("/panel/itemIcon/deletes", itemIcon.Deletes) r.POST("/panel/itemIcon/deletes", middleware.AdminInterceptor, itemIcon.Deletes)
r.POST("/panel/itemIcon/saveSort", itemIcon.SaveSort) r.POST("/panel/itemIcon/saveSort", middleware.AdminInterceptor, itemIcon.SaveSort)
r.POST("/panel/itemIcon/addMultiple", itemIcon.AddMultiple) r.POST("/panel/itemIcon/addMultiple", itemIcon.AddMultiple)
r.POST("/panel/itemIcon/getSiteFavicon", itemIcon.GetSiteFavicon) r.POST("/panel/itemIcon/getSiteFavicon", itemIcon.GetSiteFavicon)
} }

View File

@ -12,5 +12,6 @@ func InitLogin(router *gin.RouterGroup) {
router.POST("/login", loginApi.Login) router.POST("/login", loginApi.Login)
router.POST("/logout", middleware.LoginInterceptor, loginApi.Logout) router.POST("/logout", middleware.LoginInterceptor, loginApi.Logout)
router.POST("/getToken", loginApi.GetToken)
} }

View File

@ -27,7 +27,7 @@ const defaultTitle = t('appLauncher.title')
const title = ref('') const title = ref('')
const height = ref('500px') const height = ref('500px')
const authStore = useAuthStore() 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<App[]>([ const apps = ref<App[]>([
{ {
@ -64,6 +64,12 @@ const apps = ref<App[]>([
auth: authStore.userInfo?.role auth: authStore.userInfo?.role
}, },
{
name: t('adminSettingUsers.appName'),
componentName: 'Users',
icon: 'lucide-users',
auth: 1,
},
{ {
name: t('apps.about.appName'), name: t('apps.about.appName'),
componentName: 'About', componentName: 'About',
@ -109,15 +115,7 @@ function handleResize() {
} }
onMounted(() => { 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) window.addEventListener('resize', handleResize)
handleResize() handleResize()