user.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package handler
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/go-nunu/nunu-layout-advanced/internal/service"
  5. "github.com/go-nunu/nunu-layout-advanced/pkg/helper/resp"
  6. "github.com/pkg/errors"
  7. "net/http"
  8. )
  9. type UserHandler struct {
  10. *Handler
  11. userService *service.UserService
  12. }
  13. func NewUserHandler(handler *Handler, userService *service.UserService) *UserHandler {
  14. return &UserHandler{
  15. Handler: handler,
  16. userService: userService,
  17. }
  18. }
  19. func (h *UserHandler) Register(ctx *gin.Context) {
  20. req := new(service.RegisterRequest)
  21. if err := ctx.ShouldBindJSON(req); err != nil {
  22. resp.HandleError(ctx, http.StatusBadRequest, 1, errors.Wrap(err, "invalid request").Error(), nil)
  23. return
  24. }
  25. if err := h.userService.Register(req); err != nil {
  26. resp.HandleError(ctx, http.StatusBadRequest, 1, errors.Wrap(err, "invalid request").Error(), nil)
  27. return
  28. }
  29. resp.HandleSuccess(ctx, nil)
  30. }
  31. func (h *UserHandler) Login(ctx *gin.Context) {
  32. var req service.LoginRequest
  33. if err := ctx.ShouldBindJSON(&req); err != nil {
  34. resp.HandleError(ctx, http.StatusBadRequest, 1, errors.Wrap(err, "invalid request").Error(), nil)
  35. return
  36. }
  37. token, err := h.userService.Login(&req)
  38. if err != nil {
  39. resp.HandleError(ctx, http.StatusUnauthorized, 1, err.Error(), nil)
  40. return
  41. }
  42. resp.HandleSuccess(ctx, gin.H{
  43. "accessToken": token,
  44. })
  45. }
  46. func (h *UserHandler) GetProfile(ctx *gin.Context) {
  47. userId := GetUserIdFromCtx(ctx)
  48. if userId == "" {
  49. resp.HandleError(ctx, http.StatusUnauthorized, 1, "unauthorized", nil)
  50. return
  51. }
  52. user, err := h.userService.GetProfile(userId)
  53. if err != nil {
  54. resp.HandleError(ctx, http.StatusBadRequest, 1, err.Error(), nil)
  55. return
  56. }
  57. resp.HandleSuccess(ctx, user)
  58. }
  59. func (h *UserHandler) UpdateProfile(ctx *gin.Context) {
  60. userId := GetUserIdFromCtx(ctx)
  61. var req service.UpdateProfileRequest
  62. if err := ctx.ShouldBindJSON(&req); err != nil {
  63. resp.HandleError(ctx, http.StatusBadRequest, 1, errors.Wrap(err, "invalid request").Error(), nil)
  64. return
  65. }
  66. if err := h.userService.UpdateProfile(userId, &req); err != nil {
  67. resp.HandleError(ctx, http.StatusBadRequest, 1, err.Error(), nil)
  68. return
  69. }
  70. resp.HandleSuccess(ctx, nil)
  71. }