|
|
@@ -10,14 +10,10 @@ import (
|
|
|
)
|
|
|
|
|
|
type RegisterRequest struct {
|
|
|
- Name string `form:"name" binding:"required"`
|
|
|
+ UserName string `form:"name" binding:"required"`
|
|
|
Password string `form:"password" binding:"required"`
|
|
|
}
|
|
|
|
|
|
-type RegisterResponse struct {
|
|
|
- UserID uint `json:"id"`
|
|
|
-}
|
|
|
-
|
|
|
// 注册
|
|
|
func Register(c *gin.Context) {
|
|
|
var request RegisterRequest
|
|
|
@@ -26,26 +22,30 @@ func Register(c *gin.Context) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- user := &model.User{Name: request.Name, Password: request.Password}
|
|
|
- if err := model.CreateUser(user); err != nil {
|
|
|
+ user, err := model.CreateUser(&model.User{
|
|
|
+ Name: request.UserName,
|
|
|
+ Password: request.Password,
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
if errors.Is(err, model.ErrUserNameAlreadyExists) {
|
|
|
respondError(c, http.StatusConflict, err)
|
|
|
} else {
|
|
|
respondUnknownError(c, err)
|
|
|
}
|
|
|
- } else {
|
|
|
- respondOK(c, &RegisterResponse{UserID: user.ID})
|
|
|
+ return
|
|
|
}
|
|
|
+
|
|
|
+ respondOK(c, user)
|
|
|
}
|
|
|
|
|
|
type LoginRequest struct {
|
|
|
- Name string `form:"name" binding:"required"`
|
|
|
+ UserName string `form:"name" binding:"required"`
|
|
|
Password string `form:"password" binding:"required"`
|
|
|
}
|
|
|
|
|
|
type LoginResponse struct {
|
|
|
- UserID uint `json:"id"`
|
|
|
- Token string `json:"token"`
|
|
|
+ *model.UserResult `json:"user"`
|
|
|
+ Token string `json:"token"`
|
|
|
}
|
|
|
|
|
|
// 登录
|
|
|
@@ -56,35 +56,46 @@ func Login(c *gin.Context) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- user := &model.User{Name: request.Name, Password: request.Password}
|
|
|
- if err := model.AuthenticateUser(user); err != nil {
|
|
|
+ user, err := model.AuthenticateUser(&model.User{
|
|
|
+ Name: request.UserName,
|
|
|
+ Password: request.Password,
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
if errors.Is(err, model.ErrWrongUserNameOrPassword) {
|
|
|
respondError(c, http.StatusUnauthorized, err)
|
|
|
} else {
|
|
|
respondUnknownError(c, err)
|
|
|
}
|
|
|
- } else if token, err := newToken(user.ID); err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ token, err := newToken(user.ID)
|
|
|
+ if err != nil {
|
|
|
respondUnknownError(c, err)
|
|
|
- } else {
|
|
|
- respondOK(c, &LoginResponse{UserID: user.ID, Token: token})
|
|
|
+ return
|
|
|
}
|
|
|
-}
|
|
|
|
|
|
-type GetCurrentUserResponse struct {
|
|
|
- UserID uint `json:"id"`
|
|
|
- UserName string `json:"name"`
|
|
|
+ respondOK(c, &LoginResponse{
|
|
|
+ UserResult: user,
|
|
|
+ Token: token,
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
// 获取当前用户
|
|
|
func GetCurrentUser(c *gin.Context) {
|
|
|
- user := &model.User{Model: gorm.Model{ID: c.MustGet(AuthUserKey).(uint)}}
|
|
|
- if err := model.GetUser(user); err != nil {
|
|
|
+ user, err := model.GetUser(&model.User{
|
|
|
+ Model: &gorm.Model{
|
|
|
+ ID: c.MustGet(AuthUserKey).(uint),
|
|
|
+ },
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
if errors.Is(err, model.ErrUserNotFound) {
|
|
|
respondError(c, http.StatusNotFound, err)
|
|
|
} else {
|
|
|
respondUnknownError(c, err)
|
|
|
}
|
|
|
- } else {
|
|
|
- respondOK(c, &GetCurrentUserResponse{UserID: user.ID, UserName: user.Name})
|
|
|
+ return
|
|
|
}
|
|
|
+
|
|
|
+ respondOK(c, user)
|
|
|
}
|