Files
honoka-chan/internal/handler/ghome/account/loginauto.go
T
YumeMichi 150ce674ad Implement more endpoints & overhaul [2/n]
Drop LevelDB and move all the things to SQLite.

Implemented endpoints:
/api <unit, accessoryMaterialAll>
/api <unit, accessoryTab>
/live/continue
/live/partyList
/unit/favoriteAccessory (WIP)
/unit/sale

Signed-off-by: Sean Du <do4suki@gmail.com>
2026-04-28 11:44:56 +08:00

86 lines
1.9 KiB
Go

package account
import (
"encoding/base64"
"encoding/json"
usermodel "honoka-chan/internal/model/user"
"honoka-chan/internal/router"
ghomeschema "honoka-chan/internal/schema/ghome"
"honoka-chan/internal/session"
"net/url"
"strconv"
"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 userData usermodel.Users
exists, err := ss.UserEng.Table("users").Where("autokey = ?", autoKey).Get(&userData)
if ss.CheckErr(err) {
return
}
loginAutoData := ghomeschema.LoginAutoData{}
loginAutoCode := 0
loginAutoMsg := "ok"
if exists {
loginAutoData = ghomeschema.LoginAutoData{
Result: loginAutoCode,
Message: loginAutoMsg,
Autokey: autoKey,
UserId: strconv.Itoa(userData.UserID),
Ticket: userData.Ticket,
}
} else {
loginAutoCode = 31
loginAutoMsg = "账号不存在或者登陆状态已过期!"
loginAutoData = ghomeschema.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(ghomeschema.LoginAutoResp{
Code: loginAutoCode,
Msg: loginAutoMsg,
Data: base64.StdEncoding.EncodeToString(encryptedData),
})
}
func init() {
router.AddHandler("v1", "POST", "/account/loginauto", loginAuto)
}