Add Redirect Middleware for Router

This commit is contained in:
Hamidreza Ghavami 2023-05-14 01:42:08 +04:30
parent b5ae580d12
commit c2c61cdd5b
No known key found for this signature in database
GPG key ID: 402C6797325182D9

View file

@ -147,6 +147,27 @@ func (s *Server) getHtmlTemplate(funcMap template.FuncMap) (*template.Template,
return t, nil
}
func redirectMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
// Redirect from old '/xui' path to '/panel'
path := c.Request.URL.Path
redirects := map[string]string{
"/panel/API": "/panel/api",
"/xui/API": "/panel/api",
"/xui": "/panel",
}
for from, to := range redirects {
if strings.HasPrefix(path, from) {
newPath := to + path[len(from):]
c.Redirect(http.StatusMovedPermanently, newPath)
c.Abort()
return
}
}
c.Next()
}
}
func (s *Server) initRouter() (*gin.Engine, error) {
if config.IsDebug() {
gin.SetMode(gin.DebugMode)
@ -203,6 +224,9 @@ func (s *Server) initRouter() (*gin.Engine, error) {
engine.StaticFS(basePath+"assets", http.FS(&wrapAssetsFS{FS: assetsFS}))
}
// Apply the redirect middleware (`/xui` to `/panel`)
engine.Use(redirectMiddleware())
g := engine.Group(basePath)
s.index = controller.NewIndexController(g)