Files
mangezmieux/mangezmieux-backend/internal/users/setup.go
2024-07-19 17:04:42 +02:00

43 lines
1.4 KiB
Go

package users
import (
"database/sql"
"mangezmieux-backend/internal/ginserver"
"mangezmieux-backend/internal/injector"
"mangezmieux-backend/internal/jwt"
"mangezmieux-backend/internal/postgres"
service2 "mangezmieux-backend/internal/users/service"
sql2 "mangezmieux-backend/internal/users/sql"
"mangezmieux-backend/internal/validator"
"net/http"
"github.com/gin-gonic/gin"
validatorv10 "github.com/go-playground/validator/v10"
)
const ServiceKey = "UsersService"
func Setup(inj *injector.Injector) {
publicRoute := injector.Get[*gin.RouterGroup](inj, ginserver.UnsecuredRouterInjectorKey)
validatorCli := injector.Get[*validatorv10.Validate](inj, validator.ValidatorInjectorKey)
jwtService := injector.Get[*jwt.Service](inj, jwt.JWTKey)
client := injector.Get[*sql.DB](inj, postgres.DatabaseKey)
dao := sql2.NewDao(client)
service := service2.NewService(dao, jwtService)
handler := NewHandler(service, validatorCli)
inj.Set(ServiceKey, service)
publicRoute.Handle(http.MethodPost, "/api/v1/users", handler.CreateUser)
publicRoute.Handle(http.MethodPost, "/oauth2/token", handler.Login)
publicRoute.Handle(http.MethodPost, "/oauth2/introspect", handler.IntrospectToken)
publicRoute.Handle(http.MethodPost, "/oauth2/refresh", handler.RefreshToken)
securedRoute := injector.Get[*gin.RouterGroup](inj, ginserver.SecuredRouterInjectorKey)
securedRoute.Handle(http.MethodGet, "/users/me", handler.GetMe)
}