Files
workspace/code/base-project/base-go-v2/internal/api/auth/index.go
T
2025-11-05 22:25:09 +08:00

123 lines
2.8 KiB
Go

package auth
import (
"base-go-v2/internal/db"
response "base-go-v2/internal/reponse"
"base-go-v2/internal/router"
"base-go-v2/internal/utils/jwtx"
"base-go-v2/internal/utils/mapx"
"base-go-v2/internal/utils/uid"
)
func InitAuthRouter(r *router.Router) {
group := r.Group("auth")
group.POST("/login/default", loginDefault)
group.POST("/register/default", registerDefault)
}
//func RefreshToken(c *router.Context) error {
// _, err := c.GetBodyWithRequired("accessToken", "refreshToken")
// if err != nil {
// return err
// }
// //accessToken := bodyData.GetString("accessToken")
// //refreshToken := bodyData.GetString("refreshToken")
//}
// 默认登录
// 默认登录
func loginDefault(c *router.Context) error {
// 获取请求体并校验必填字段
bodyData, err := c.GetBodyWithRequired("account", "password")
if err != nil {
return err
}
account := bodyData.GetString("account")
password := bodyData.GetString("password")
// 查询用户
userQuery := mapx.New().SetKV(
"account", account,
"password", password,
)
user, err := db.FindOne("user_info", userQuery)
if err != nil {
return response.Success(c).Message("查询用户失败,请稍后重试").IsSuccess(false).Send()
}
if user == nil {
// 账号或密码错误
return response.Success(c).
IsSuccess(false).
Message("账号或密码错误").
Send()
}
userId := user.GetInt("id")
// 创建 Access Token 和 Refresh Token
accessToken, err := jwtx.CreateAccessToken(userId)
if err != nil {
return err
}
refreshToken, err := jwtx.CreateRefreshToken(userId)
if err != nil {
return err
}
// 返回数据
respData := mapx.New().
SetIntToString("userId", userId).
SetKV(
"username", user.GetString("username"),
"seqNo", user.GetInt("seq_no"),
"gender", user.GetInt("gender"),
"accessToken", accessToken,
"refreshToken", refreshToken,
)
return response.Success(c).
Data(respData).
Send()
}
func registerDefault(c *router.Context) error {
bodyData, err := c.GetBodyWithRequired("account", "password")
if err != nil {
return err
}
account := bodyData.GetString("account")
password := bodyData.GetString("password")
// 构造查询条件,检查账号是否已存在
accountQuery := mapx.New().SetKV("account", account)
existingUsers, err := db.Find("user_info", accountQuery)
if err != nil {
return err
}
if len(existingUsers) > 0 {
return response.Error(c).IsSuccess(false).Message("该账号已被注册").Send()
}
// 构造新用户数据
newUserData := mapx.New().SetKV(
"id", uid.NextID(),
"account", account,
"password", password,
)
// 插入新用户
insertedRows, err := db.InsertOne("user_info", newUserData)
if err != nil {
return err
}
if insertedRows != 1 {
return response.Success(c).IsSuccess(false).Message("注册失败").Send()
}
return response.Success(c).Message("注册成功").Send()
}