72 lines
1.4 KiB
Go
72 lines
1.4 KiB
Go
package controller
|
|
|
|
import (
|
|
"net/http"
|
|
"users_management/m/middleware"
|
|
"users_management/m/model/dto"
|
|
"users_management/m/usecase"
|
|
"users_management/m/utils/common"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type UsersController struct {
|
|
uc usecase.UsersUsecase
|
|
ac usecase.AuthUsecase
|
|
rg *gin.RouterGroup
|
|
}
|
|
|
|
func (uc *UsersController) Route() {
|
|
rg:= uc.rg.Group("/users")
|
|
rg.Use(middleware.RateLoginMiddleware())
|
|
rg.Use(middleware.CORSMiddleware())
|
|
{
|
|
rg.POST("/login", uc.Login())
|
|
}
|
|
rg.POST("/logout", uc.Logout())
|
|
}
|
|
|
|
func NewUsersController(uc usecase.UsersUsecase, ac usecase.AuthUsecase,rg *gin.RouterGroup) *UsersController {
|
|
return &UsersController{
|
|
uc: uc,
|
|
ac: ac,
|
|
rg: rg,
|
|
}
|
|
}
|
|
|
|
func (uc *UsersController) Login() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
var login dto.UserLoginDTO
|
|
err := c.ShouldBindJSON(&login)
|
|
|
|
if err != nil {
|
|
common.ErrorResponses(c, http.StatusBadRequest, err.Error())
|
|
return
|
|
}
|
|
|
|
token, err := uc.ac.Login(login)
|
|
|
|
if err != nil {
|
|
common.ErrorResponses(c, http.StatusUnauthorized, err.Error())
|
|
return
|
|
}
|
|
|
|
|
|
common.SingleResponses(c, "Login success", gin.H{"token": token})
|
|
|
|
}
|
|
}
|
|
|
|
func (uc *UsersController) Logout() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
token := c.GetHeader("Authorization")
|
|
err := uc.ac.Logout(token)
|
|
|
|
if err != nil {
|
|
common.ErrorResponses(c, http.StatusBadRequest, err.Error())
|
|
return
|
|
}
|
|
|
|
common.SingleResponses(c, "Logout success", nil)
|
|
}
|
|
} |