package route import ( "crypto/ecdsa" "os" "github.com/KaySar12/NextZen-Common/middleware" "github.com/KaySar12/NextZen-Common/utils/jwt" v1 "github.com/KaySar12/NextZen-UserService/route/v1" "github.com/KaySar12/NextZen-UserService/service" "github.com/gin-contrib/gzip" "github.com/gin-gonic/gin" ) func InitRouter() *gin.Engine { r := gin.Default() r.Use(middleware.Cors()) r.Use(v1.CheckOIDCInit()) r.Use(gzip.Gzip(gzip.DefaultCompression)) // check if environment variable is set if ginMode, success := os.LookupEnv("GIN_MODE"); success { gin.SetMode(ginMode) } else { gin.SetMode(gin.ReleaseMode) } go v1.InitOIDC() r.POST("/v1/users/register", v1.PostUserRegister) r.POST("/v1/users/login", v1.PostUserLogin) r.POST("/v1/users/omvlogin", v1.PostOMVLogin) r.POST("/v1/users/logout", v1.PostLogout) r.GET("/v1/users/name", v1.GetUserAllUsername) // all/name r.POST("/v1/users/refresh", v1.PostUserRefreshToken) r.GET("/v1/users/image", v1.GetUserImage) r.GET("/v1/users/:username", v1.GetUserInfoByUsername) r.GET("/v1/users/status", v1.GetUserStatus) // init/check r.POST("/v1/users/oidc/login", v1.OIDCLogin) r.GET("/v1/users/oidc/callback", v1.OIDCCallback) r.GET("/v1/users/oidc/profile", v1.OIDCProfile) r.GET("/v1/users/oidc/userinfo", v1.OIDCUserInfo) r.POST("/v1/users/oidc/validateToken", v1.OIDCValidateToken) r.POST("/v1/users/oidc/logout", v1.OIDCLogout) r.GET("/v1/users/oidc/health", v1.OIDCHealthCheck) r.GET("/v1/users/oidc/settings", v1.GetOIDCSettings) r.POST("/v1/users/oidc/saveSettings", v1.SaveOIDCSettings) r.GET("/v1/users/1panel/health", v1.OnePanelHealthCheck) r.POST("/v1/users/1panel/login", v1.OnePanelLogin) v1Group := r.Group("/v1") v1Group.Use(jwt.JWT( func() (*ecdsa.PublicKey, error) { _, publicKey := service.MyService.User().GetKeyPair() return publicKey, nil }, )) { v1UsersGroup := v1Group.Group("/users") v1UsersGroup.Use() { v1UsersGroup.GET("/current", v1.GetUserInfo) v1UsersGroup.PUT("/current", v1.PutUserInfo) v1UsersGroup.PUT("/current/password", v1.PutUserPassword) v1UsersGroup.GET("/current/custom/:key", v1.GetUserCustomConf) v1UsersGroup.POST("/current/custom/:key", v1.PostUserCustomConf) v1UsersGroup.DELETE("/current/custom/:key", v1.DeleteUserCustomConf) v1UsersGroup.POST("/current/image/:key", v1.PostUserUploadImage) v1UsersGroup.PUT("/current/image/:key", v1.PutUserImage) // v1UserGroup.POST("/file/image/:key", v1.PostUserFileImage) v1UsersGroup.DELETE("/current/image", v1.DeleteUserImage) v1UsersGroup.PUT("/avatar", v1.PutUserAvatar) v1UsersGroup.GET("/avatar", v1.GetUserAvatar) v1UsersGroup.DELETE("/:id", v1.DeleteUser) // v1UsersGroup.GET("/:username", v1.GetUserInfoByUsername) v1UsersGroup.DELETE("", v1.DeleteUserAll) } } return r }