init
This commit is contained in:
57
back/cmd/middleware.go
Normal file
57
back/cmd/middleware.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// isFileIOEnabled проверяет, разрешены ли файловые операции
|
||||
// По умолчанию включено, отключается только при GO_KNOCKER_ENABLE_FILE_IO=0
|
||||
func isFileIOEnabled() bool {
|
||||
env := os.Getenv("GO_KNOCKER_ENABLE_FILE_IO")
|
||||
return env != "0" && env != "false"
|
||||
}
|
||||
|
||||
// authMiddleware - базовая авторизация: пользователь "knocker" + пароль
|
||||
func authMiddleware(pass string) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
user, providedPass, ok := c.Request.BasicAuth()
|
||||
// Проверяем пользователя "knocker" и пароль
|
||||
if !ok || (providedPass != pass || user != "knocker") {
|
||||
c.Header("WWW-Authenticate", "Basic realm=Restricted")
|
||||
c.AbortWithStatus(http.StatusUnauthorized)
|
||||
return
|
||||
}
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
// staticAuthMiddleware - защищает HTML страницы, но пропускает статические ресурсы
|
||||
func staticAuthMiddleware(pass string) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
path := c.Request.URL.Path
|
||||
|
||||
// Пропускаем статические ресурсы без авторизации
|
||||
if strings.HasSuffix(path, ".js") ||
|
||||
strings.HasSuffix(path, ".css") ||
|
||||
strings.HasSuffix(path, ".ico") ||
|
||||
strings.HasSuffix(path, ".png") ||
|
||||
strings.HasSuffix(path, ".jpg") ||
|
||||
strings.HasSuffix(path, ".svg") ||
|
||||
strings.HasSuffix(path, ".woff") ||
|
||||
strings.HasSuffix(path, ".woff2") ||
|
||||
strings.HasSuffix(path, ".ttf") ||
|
||||
strings.HasSuffix(path, ".eot") ||
|
||||
strings.HasSuffix(path, ".webmanifest") ||
|
||||
strings.HasPrefix(path, "/api/") {
|
||||
c.Next()
|
||||
return
|
||||
}
|
||||
|
||||
// Для всех остальных путей (в основном HTML) применяем авторизацию
|
||||
authMiddleware(pass)(c)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user