base.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package router
  2. import (
  3. "github.com/go-chi/chi"
  4. "github.com/porter-dev/porter/api/server/handlers/user"
  5. "github.com/porter-dev/porter/api/server/shared"
  6. "github.com/porter-dev/porter/api/types"
  7. )
  8. func NewBaseRegisterer(children ...*Registerer) *Registerer {
  9. return &Registerer{
  10. GetRoutes: GetBaseRoutes,
  11. Children: children,
  12. }
  13. }
  14. func GetBaseRoutes(
  15. r chi.Router,
  16. config *shared.Config,
  17. basePath *types.Path,
  18. factory shared.APIEndpointFactory,
  19. children ...*Registerer,
  20. ) []*Route {
  21. routes := make([]*Route, 0)
  22. // POST /api/users -> user.NewUserCreateHandler
  23. createUserEndpoint := factory.NewAPIEndpoint(
  24. &types.APIRequestMetadata{
  25. Verb: types.APIVerbCreate,
  26. Method: types.HTTPVerbPost,
  27. Path: &types.Path{
  28. Parent: basePath,
  29. RelativePath: "/users",
  30. },
  31. },
  32. )
  33. createUserHandler := user.NewUserCreateHandler(
  34. config,
  35. factory.GetDecoderValidator(),
  36. factory.GetResultWriter(),
  37. )
  38. routes = append(routes, &Route{
  39. Endpoint: createUserEndpoint,
  40. Handler: createUserHandler,
  41. Router: r,
  42. })
  43. // POST /api/login -> user.NewUserLoginHandler
  44. loginUserEndpoint := factory.NewAPIEndpoint(
  45. &types.APIRequestMetadata{
  46. Verb: types.APIVerbUpdate,
  47. Method: types.HTTPVerbPost,
  48. Path: &types.Path{
  49. Parent: basePath,
  50. RelativePath: "/login",
  51. },
  52. },
  53. )
  54. loginUserHandler := user.NewUserLoginHandler(
  55. config,
  56. factory.GetDecoderValidator(),
  57. factory.GetResultWriter(),
  58. )
  59. routes = append(routes, &Route{
  60. Endpoint: loginUserEndpoint,
  61. Handler: loginUserHandler,
  62. Router: r,
  63. })
  64. // POST /api/cli/login/exchange -> user.NewCLILoginExchangeHandler
  65. cliLoginExchangeEndpoint := factory.NewAPIEndpoint(
  66. &types.APIRequestMetadata{
  67. Verb: types.APIVerbCreate,
  68. Method: types.HTTPVerbPost,
  69. Path: &types.Path{
  70. Parent: basePath,
  71. RelativePath: "/cli/login/exchange",
  72. },
  73. },
  74. )
  75. cliLoginExchangeHandler := user.NewCLILoginExchangeHandler(
  76. config,
  77. factory.GetDecoderValidator(),
  78. factory.GetResultWriter(),
  79. )
  80. routes = append(routes, &Route{
  81. Endpoint: cliLoginExchangeEndpoint,
  82. Handler: cliLoginExchangeHandler,
  83. Router: r,
  84. })
  85. // POST /api/password/reset/initiate -> user.NewUserPasswordInitiateResetHandler
  86. passwordInitiateResetEndpoint := factory.NewAPIEndpoint(
  87. &types.APIRequestMetadata{
  88. Verb: types.APIVerbCreate,
  89. Method: types.HTTPVerbPost,
  90. Path: &types.Path{
  91. Parent: basePath,
  92. RelativePath: "/password/reset/initiate",
  93. },
  94. },
  95. )
  96. passwordInitiateResetHandler := user.NewUserPasswordInitiateResetHandler(
  97. config,
  98. factory.GetDecoderValidator(),
  99. factory.GetResultWriter(),
  100. )
  101. routes = append(routes, &Route{
  102. Endpoint: passwordInitiateResetEndpoint,
  103. Handler: passwordInitiateResetHandler,
  104. Router: r,
  105. })
  106. // POST /api/password/reset/verify -> user.NewUserPasswordVerifyResetHandler
  107. passwordVerifyResetEndpoint := factory.NewAPIEndpoint(
  108. &types.APIRequestMetadata{
  109. Verb: types.APIVerbCreate,
  110. Method: types.HTTPVerbPost,
  111. Path: &types.Path{
  112. Parent: basePath,
  113. RelativePath: "/password/reset/verify",
  114. },
  115. },
  116. )
  117. passwordVerifyResetHandler := user.NewUserPasswordVerifyResetHandler(
  118. config,
  119. factory.GetDecoderValidator(),
  120. factory.GetResultWriter(),
  121. )
  122. routes = append(routes, &Route{
  123. Endpoint: passwordVerifyResetEndpoint,
  124. Handler: passwordVerifyResetHandler,
  125. Router: r,
  126. })
  127. // POST /api/password/reset/finalize -> user.NewUserPasswordFinalizeResetHandler
  128. passwordFinalizeResetEndpoint := factory.NewAPIEndpoint(
  129. &types.APIRequestMetadata{
  130. Verb: types.APIVerbCreate,
  131. Method: types.HTTPVerbPost,
  132. Path: &types.Path{
  133. Parent: basePath,
  134. RelativePath: "/password/reset/finalize",
  135. },
  136. },
  137. )
  138. passwordFinalizeResetHandler := user.NewUserPasswordFinalizeResetHandler(
  139. config,
  140. factory.GetDecoderValidator(),
  141. factory.GetResultWriter(),
  142. )
  143. routes = append(routes, &Route{
  144. Endpoint: passwordFinalizeResetEndpoint,
  145. Handler: passwordFinalizeResetHandler,
  146. Router: r,
  147. })
  148. return routes
  149. }