43 lines
1.4 KiB
Go
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)
|
|
|
|
}
|