feat: wrap up user API functionality

This commit is contained in:
2025-11-10 10:32:41 -07:00
parent 3ca80e7650
commit 51b9f21596
4 changed files with 144 additions and 10 deletions

View File

@@ -56,19 +56,29 @@ func main() {
store := cookie.NewStore([]byte(os.Getenv("COOKIE_SECRET")))
router.Use(sessions.Sessions("auth-session", store))
// Middleware Function Declarations
user_authenticated := middleware.IsAuthenticated(authenticator)
user_in_db := middleware.UserInDatabase(pool)
user_active := middleware.UserIsActive(pool)
user_is_admin := middleware.IsAdmin(pool)
gob.Register(map[string]interface{}{})
router.GET("/", middleware.IsAuthenticated(authenticator), middleware.GetUserProfile, controllers.BaseFunction)
router.GET("/", user_authenticated, middleware.GetUserProfile, controllers.BaseFunction)
router.GET("/auth/login", auth.LoginHandler(authenticator))
router.GET("/auth/logout", auth.LogoutHandler)
router.GET("/auth/logout_callback", auth.LogoutCallbackHandler(store))
router.GET("/callback", auth.AuthenticationCallbackHandler(authenticator))
router.GET("/users", middleware.IsAuthenticated(authenticator), middleware.GetUserProfile, middleware.UserInDatabase(pool), middleware.UserIsActive(pool), middleware.IsAdmin(pool), controllers.GetUserTable(pool))
router.GET("/users", user_authenticated, middleware.GetUserProfile, user_in_db, user_active, user_is_admin, controllers.GetUserTable(pool))
router.GET("/user/current", user_authenticated, middleware.GetUserProfile, user_in_db, controllers.GetCurrentAuthenticatedUser(pool))
router.POST("/user/name", middleware.IsAuthenticated(authenticator), middleware.GetUserProfile, middleware.UserInDatabase(pool), middleware.UserIsActive(pool), controllers.SetUserName(pool))
router.POST("/user/name", user_authenticated, middleware.GetUserProfile, user_in_db, user_active, controllers.SetUserName(pool))
router.POST("/position/create", user_authenticated, middleware.GetUserProfile, user_in_db, user_active, user_is_admin, controllers.CreatePosition(pool))
router.PUT("/user/promote", middleware.IsAuthenticated(authenticator), middleware.GetUserProfile, middleware.UserInDatabase(pool), middleware.UserIsActive(pool), middleware.IsAdmin(pool), controllers.PromoteUser(pool))
router.PUT("/user/demote", middleware.IsAuthenticated(authenticator), middleware.GetUserProfile, middleware.UserInDatabase(pool), middleware.UserIsActive(pool), middleware.IsAdmin(pool), controllers.DemoteUser(pool))
router.DELETE("/user/deactivate", middleware.IsAuthenticated(authenticator), middleware.GetUserProfile, middleware.UserInDatabase(pool), middleware.UserIsActive(pool), middleware.IsAdmin(pool), controllers.DeactivateUser(pool))
router.PUT("/user/promote", user_authenticated, middleware.GetUserProfile, user_in_db, user_active, user_is_admin, controllers.PromoteUser(pool))
router.PUT("/user/demote", user_authenticated, middleware.GetUserProfile, user_in_db, user_active, user_is_admin, controllers.DemoteUser(pool))
router.PUT("/user/position", user_authenticated, middleware.GetUserProfile, user_in_db, user_active, user_is_admin, controllers.SetUserPosition(pool))
router.DELETE("/user/deactivate", middleware.IsAuthenticated(authenticator), middleware.GetUserProfile, user_in_db, user_active, user_is_admin, controllers.DeactivateUser(pool))
router.Run("localhost:8080")
}