Files
honoka-chan/internal/handler/ghome/account/loginauto.go
T
YumeMichi c77241a883 Overhaul [1/n]
Signed-off-by: Sean Du <do4suki@gmail.com>
2026-01-29 02:42:28 +08:00

84 lines
1.8 KiB
Go

package account
import (
"encoding/base64"
"encoding/json"
"honoka-chan/internal/router"
"honoka-chan/internal/schema/ghome"
"honoka-chan/internal/session"
"net/url"
"github.com/gin-gonic/gin"
"github.com/go-think/openssl"
)
func loginAuto(ctx *gin.Context) {
ss := session.New(ctx)
defer ss.Finalize()
data, err := ctx.GetRawData()
if ss.CheckErr(err) {
return
}
data, err = base64.StdEncoding.DecodeString(string(data))
if ss.CheckErr(err) {
return
}
randKey := ss.GetRandKey()
decryptedData, err := openssl.Des3ECBDecrypt(data, randKey[0:24], openssl.PKCS7_PADDING)
if ss.CheckErr(err) {
return
}
queryStr, _ := url.QueryUnescape(string(decryptedData))
params, _ := url.ParseQuery(queryStr)
autoKey := params.Get("autokey")
var uid, ticket string
_, err = ss.UserEng.Table("users").Cols("user_id,ticket").Where("autokey = ?", autoKey).Get(&uid, &ticket)
if ss.CheckErr(err) {
return
}
loginAutoData := ghome.LoginAutoData{}
loginAutoCode := 0
loginAutoMsg := "ok"
if uid != "" {
loginAutoData = ghome.LoginAutoData{
Result: loginAutoCode,
Message: loginAutoMsg,
Autokey: autoKey,
UserId: uid,
Ticket: ticket,
}
} else {
loginAutoCode = 31
loginAutoMsg = "账号不存在或者登陆状态已过期!"
loginAutoData = ghome.LoginAutoData{
Result: loginAutoCode,
Message: loginAutoMsg,
}
}
data, err = json.Marshal(loginAutoData)
if ss.CheckErr(err) {
return
}
encryptedData, err := openssl.Des3ECBEncrypt([]byte(data), randKey[0:24], openssl.PKCS7_PADDING)
if ss.CheckErr(err) {
return
}
ss.Respond(ghome.LoginAutoResp{
Code: loginAutoCode,
Msg: loginAutoMsg,
Data: base64.StdEncoding.EncodeToString(encryptedData),
})
}
func init() {
router.AddHandler("v1", "POST", "/account/loginauto", loginAuto)
}