|
|
|
@@ -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(¶m); 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)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|