package users import ( "server/internal/roles" "server/internal/tokens" "time" "github.com/gofiber/fiber/v3" "github.com/gofiber/fiber/v3/middleware/limiter" ) func RegisterUserRoutes(app *fiber.App) { tockenService, _ := tokens.NewTockenService(tokens.Config{ Secret: "your-secret-key", Issuer: "your-issuer", AccessTokenExpiry: time.Hour, RefreshTokenExpiry: 24 * time.Hour, }) authRateLimiter := limiter.New(limiter.Config{ Max: 10, Expiration: time.Minute, LimiterMiddleware: limiter.SlidingWindow{}, }) userController := NewUserController(tockenService) // Typescript: TSEndpoint= path=/users/:uuid; name=getUser; method=GET; response=models.UserProfile app.Get("/users/:uuid", tockenService.Middleware(), userController.GetUser) // Typescript: TSEndpoint= path=/users; name=createUser; method=POST; request=models.UserCreateInput; response=models.UserProfile app.Post("/users", tockenService.Middleware(), userController.CreateUser) // Typescript: TSEndpoint= path=/users/:uuid; name=updateUser; method=PUT; request=controllers.UpdateUserRequest; response=models.UserProfile app.Put("/users/:uuid", tockenService.Middleware(), userController.UpdateUser) // Typescript: TSEndpoint= path=/users/:uuid; name=deleteUser; method=DELETE; response=controllers.SimpleResponse app.Delete("/users/:uuid", tockenService.Middleware(), userController.DeleteUser) // Typescript: TSEndpoint= path=/auth/me; name=me; method=GET; response=models.UserShort app.Get("/auth/me", tockenService.Middleware(), userController.Me) roles.RegisterEndpoint("GET/auth/me", int(roles.UserPermission)) // Typescript: TSEndpoint= path=/auth/login; name=login; method=POST; request=model.LoginRequest; response=model.TokenPair app.Post("/auth/login", authRateLimiter, userController.Login) // Typescript: TSEndpoint= path=/auth/refresh; name=refresh; method=POST; request=model.RefreshRequest; response=model.TokenPair app.Post("/auth/refresh", authRateLimiter, userController.Refresh) // Typescript: TSEndpoint= path=/auth/register; name=register; method=POST; request=models.UserCreateInput; response=models.UserShort app.Post("/auth/register", authRateLimiter, userController.Register) // Typescript: TSEndpoint= path=/auth/password/forgot; name=forgotPassword; method=POST; request=model.ForgotPasswordRequest; response=controllers.SimpleResponse app.Post("/auth/password/forgot", authRateLimiter, userController.ForgotPassword) // Typescript: TSEndpoint= path=/auth/password/reset; name=resetPassword; method=POST; request=model.ResetPasswordRequest; response=controllers.SimpleResponse app.Post("/auth/password/reset", authRateLimiter, userController.ResetPassword) // Typescript: TSEndpoint= path=/auth/password/valid; name=validToken; method=POST; request=string; response=controllers.SimpleResponse app.Post("/auth/password/valid", authRateLimiter, userController.ValidToken) }