123 lines
2.8 KiB
Go
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()
|
|
}
|