feat: Add user registration endpoint with JWT token generation and update API documentation

This commit is contained in:
2025-03-10 22:44:16 +00:00
parent 9f8eab0fac
commit 460235b832
5 changed files with 256 additions and 0 deletions
@@ -261,6 +261,52 @@ func (h *UserHandler) Login(c *gin.Context) {
utils.SuccessResponse(c, http.StatusOK, tokenDTO)
}
// Register handles POST /auth/register
//
// @Summary Register
// @Description Register a new user and get a JWT token
// @Tags auth
// @Accept json
// @Produce json
// @Param user body dto.UserCreateDto true "User data"
// @Success 201 {object} utils.Response{data=dto.TokenDto}
// @Failure 400 {object} utils.Response{error=utils.ErrorInfo}
// @Failure 500 {object} utils.Response{error=utils.ErrorInfo}
// @Router /auth/register [post]
func (h *UserHandler) Register(c *gin.Context) {
// Parse request body
var userCreateDTO dto.UserCreateDto
if err := c.ShouldBindJSON(&userCreateDTO); err != nil {
utils.BadRequestResponse(c, "Invalid request body: "+err.Error())
return
}
// Convert DTO to model
userCreate := convertCreateDTOToModel(userCreateDTO)
// Create user in the database
user, err := models.CreateUser(c.Request.Context(), userCreate)
if err != nil {
utils.InternalErrorResponse(c, "Error creating user: "+err.Error())
return
}
// Generate JWT token
token, err := middleware.GenerateToken(user)
if err != nil {
utils.InternalErrorResponse(c, "Error generating token: "+err.Error())
return
}
// Return token
tokenDTO := dto.TokenDto{
Token: token,
User: convertUserToDTO(user),
}
utils.SuccessResponse(c, http.StatusCreated, tokenDTO)
}
// GetCurrentUser handles GET /auth/me
//
// @Summary Get current user