This commit is contained in:
2024-04-11 14:24:55 +08:00
parent 51ac40758e
commit 36ed79167f
22 changed files with 210 additions and 305 deletions
+5 -1
View File
@@ -80,7 +80,11 @@ func validateTransInit(validate *validator.Validate) ut.Translator {
}
func GetCurrentUserInfo(c *gin.Context) (userInfo models.User, exist bool) {
if value, exist := c.Get("userInfo"); exist {
value, exist := c.Get("userInfo")
fmt.Println("exist", exist)
fmt.Println("value", value)
if exist {
if v, ok := value.(models.User); ok {
return v, exist
}
@@ -43,7 +43,6 @@ func (a *ItemIconGroup) Edit(c *gin.Context) {
apiReturn.SuccessData(c, req)
}
func (a *ItemIconGroup) GetList(c *gin.Context) {
userInfo, _ := base.GetCurrentUserInfo(c)
+5
View File
@@ -48,6 +48,11 @@ func (a *ItemIcon) Edit(c *gin.Context) {
}
if req.ID != 0 {
if userInfo.Role != 1 {
apiReturn.ErrorNoAccess(c)
c.Abort()
return
}
// 修改
updateField := []string{"IconJson", "Icon", "Title", "Url", "LanUrl", "Description", "OpenMethod", "GroupId", "UserId", "ItemIconGroupId"}
if req.Sort != 0 {
+87 -25
View File
@@ -1,6 +1,10 @@
package system
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strconv"
"strings"
"sun-panel/api/api_v1/common/apiReturn"
@@ -25,6 +29,9 @@ type LoginLoginVerify struct {
VCode string `json:"vcode" validate:"max=6"`
Email string `json:"email"`
}
type getTokenVerify struct {
Username string `json:"username" validate:"required"`
}
// @Summary 登录账号
// @Accept application/json
@@ -121,7 +128,8 @@ func (l *LoginApi) Logout(c *gin.Context) {
* @return {*}
*/
func (l LoginApi) GetToken(c *gin.Context) {
param := LoginLoginVerify{}
param := getTokenVerify{}
if err := c.ShouldBindJSON(&param); err != nil {
apiReturn.ErrorParamFomat(c, err.Error())
return
@@ -131,9 +139,11 @@ func (l LoginApi) GetToken(c *gin.Context) {
apiReturn.ErrorParamFomat(c, errMsg)
return
}
fmt.Print("-----------2")
settings := systemSetting.ApplicationSetting{}
global.SystemSetting.GetValueByInterface("system_application", &settings)
fmt.Print("-----------2")
mUser := models.User{}
var (
@@ -141,30 +151,64 @@ func (l LoginApi) GetToken(c *gin.Context) {
info models.User
)
bToken := ""
param.Username = strings.TrimSpace(param.Username)
info, err1 := mUser.GetUserInfoByUsername(param.Username)
info, err = mUser.GetUserInfoByUsername(param.Username)
if err1 != nil {
if err != nil {
// 未找到记录 账号
if err == gorm.ErrRecordNotFound {
return
fmt.Print("-----------2")
client := &http.Client{}
// 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
data := url.Values{}
data.Set("appid", "a2a6cab8-42e2-46d0-b0d2-4013e6708103")
data.Set("loginid", param.Username)
// 创建 HTTP 请求
req, err := http.NewRequest("POST", "https://oa.zwgczx.com/ssologin/getToken", strings.NewReader(data.Encode()))
if err != nil {
panic(err)
}
// 设置请求头
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
// 发送POST请求
res, err := client.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
// 读取响应
body, err := ioutil.ReadAll(res.Body)
if err != nil {
panic(err)
}
if strings.Contains(string(body), "Token获取失败") {
fmt.Println("请求失败: Token获取失败")
apiReturn.ErrorNoAccess(c)
panic("请求失败: Token获取失败")
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())
@@ -203,11 +247,10 @@ func (l LoginApi) GetToken(c *gin.Context) {
global.CUserToken.SetDefault(cToken, bToken)
global.Logger.Debug("token:", cToken, "|", bToken)
global.Logger.Debug(global.CUserToken.Get(cToken))
fmt.Println("info", info)
// 设置当前用户信息
c.Set("userInfo", info)
info.Token = cToken // 重要 采用cToken,隐藏真实token
apiReturn.SuccessData(c, info)
apiReturn.SuccessData(c, cToken)
}
/**
@@ -217,6 +260,25 @@ func (l LoginApi) GetToken(c *gin.Context) {
* @Description: token验证
* @return {*}
*/
// func (l LoginApi) tokenValidate(c *gin.Context) {
func (l LoginApi) VerifyToken(c *gin.Context) {
// 从请求参数中获取 token
token := c.Query("token")
fmt.Println("---------------------------", token)
// 检查 token 的有效性(这里仅做示例,实际需要根据业务逻辑来验证)
if bToken, err := global.CUserToken.Get(token); err != false {
// Token 有效,返回验证成功的响应
mUser := models.User{}
userInfo, err := mUser.GetUserInfoByToken(bToken)
if err != nil {
apiReturn.ErrorNoAccess(c)
// }
return
}
apiReturn.SuccessData(c, userInfo)
} else {
// Token 无效,返回验证失败的响应
apiReturn.ErrorNoAccess(c)
}
}