| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package controller
- import (
- "errors"
- "net/http"
- "time"
- "woord-core-service/model"
- "github.com/gin-gonic/gin"
- )
- type RegisterRequest struct {
- UserName string `form:"name" binding:"required"`
- Password string `form:"password" binding:"required"`
- }
- // 注册
- func Register(c *gin.Context) {
- var request RegisterRequest
- if err := c.ShouldBind(&request); err != nil {
- respondError(c, http.StatusBadRequest, err)
- return
- }
- user, err := model.CreateUser(request.UserName, request.Password)
- if err != nil {
- if errors.Is(err, model.ErrUserNameAlreadyExists) {
- respondError(c, http.StatusConflict, err)
- } else {
- respondUnknownError(c, err)
- }
- return
- }
- respondOK(c, user)
- }
- type LoginRequest struct {
- UserName string `form:"name" binding:"required"`
- Password string `form:"password" binding:"required"`
- }
- // 登录
- func Login(c *gin.Context) {
- var request LoginRequest
- if err := c.ShouldBind(&request); err != nil {
- respondError(c, http.StatusBadRequest, err)
- return
- }
- user, err := model.AuthenticateUser(request.UserName, request.Password)
- if err != nil {
- if errors.Is(err, model.ErrWrongUserNameOrPassword) {
- respondError(c, http.StatusUnauthorized, err)
- } else {
- respondUnknownError(c, err)
- }
- return
- }
- token, err := newToken(user.ID)
- if err != nil {
- respondUnknownError(c, err)
- return
- }
- c.SetCookie(AuthTokenKey, token, int(720*time.Hour), "/", "regmsif.cf", true, true)
- respondOK(c, user)
- }
- // 获取当前用户
- func GetCurrentUser(c *gin.Context) {
- user, err := model.GetUser(c.MustGet(AuthUserKey).(uint))
- if err != nil {
- if errors.Is(err, model.ErrUserNotFound) {
- respondError(c, http.StatusNotFound, err)
- } else {
- respondUnknownError(c, err)
- }
- return
- }
- respondOK(c, user)
- }
|