1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package handler
- import (
- "github.com/gin-gonic/gin"
- "github.com/go-nunu/nunu-layout-advanced/internal/pkg/request"
- "github.com/go-nunu/nunu-layout-advanced/internal/service"
- "github.com/go-nunu/nunu-layout-advanced/pkg/helper/resp"
- "github.com/pkg/errors"
- "net/http"
- )
- type UserHandler interface {
- Register(ctx *gin.Context)
- Login(ctx *gin.Context)
- GetProfile(ctx *gin.Context)
- UpdateProfile(ctx *gin.Context)
- }
- type userHandler struct {
- *Handler
- userService service.UserService
- }
- func NewUserHandler(handler *Handler, userService service.UserService) UserHandler {
- return &userHandler{
- Handler: handler,
- userService: userService,
- }
- }
- func (h *userHandler) Register(ctx *gin.Context) {
- req := new(request.RegisterRequest)
- if err := ctx.ShouldBindJSON(req); err != nil {
- resp.HandleError(ctx, http.StatusBadRequest, 1, errors.Wrap(err, "invalid request").Error(), nil)
- return
- }
- if err := h.userService.Register(ctx, req); err != nil {
- resp.HandleError(ctx, http.StatusBadRequest, 1, errors.Wrap(err, "invalid request").Error(), nil)
- return
- }
- resp.HandleSuccess(ctx, nil)
- }
- func (h *userHandler) Login(ctx *gin.Context) {
- var req request.LoginRequest
- if err := ctx.ShouldBindJSON(&req); err != nil {
- resp.HandleError(ctx, http.StatusBadRequest, 1, errors.Wrap(err, "invalid request").Error(), nil)
- return
- }
- token, err := h.userService.Login(ctx, &req)
- if err != nil {
- resp.HandleError(ctx, http.StatusUnauthorized, 1, err.Error(), nil)
- return
- }
- resp.HandleSuccess(ctx, gin.H{
- "accessToken": token,
- })
- }
- func (h *userHandler) GetProfile(ctx *gin.Context) {
- userId := GetUserIdFromCtx(ctx)
- if userId == "" {
- resp.HandleError(ctx, http.StatusUnauthorized, 1, "unauthorized", nil)
- return
- }
- user, err := h.userService.GetProfile(ctx, userId)
- if err != nil {
- resp.HandleError(ctx, http.StatusBadRequest, 1, err.Error(), nil)
- return
- }
- resp.HandleSuccess(ctx, user)
- }
- func (h *userHandler) UpdateProfile(ctx *gin.Context) {
- userId := GetUserIdFromCtx(ctx)
- var req request.UpdateProfileRequest
- if err := ctx.ShouldBindJSON(&req); err != nil {
- resp.HandleError(ctx, http.StatusBadRequest, 1, errors.Wrap(err, "invalid request").Error(), nil)
- return
- }
- if err := h.userService.UpdateProfile(ctx, userId, &req); err != nil {
- resp.HandleError(ctx, http.StatusBadRequest, 1, err.Error(), nil)
- return
- }
- resp.HandleSuccess(ctx, nil)
- }
|