12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package middleware
- import (
- "github.com/0xJacky/Nginx-UI/internal/user"
- "github.com/0xJacky/Nginx-UI/model"
- "github.com/gin-gonic/gin"
- "net/http"
- )
- func RequireSecureSession() gin.HandlerFunc {
- return func(c *gin.Context) {
- u, ok := c.Get("user")
- if !ok {
- c.Next()
- return
- }
- cUser := u.(*model.User)
- if !cUser.EnabledOTP() {
- c.Next()
- return
- }
- ssid := c.GetHeader("X-Secure-Session-ID")
- if ssid == "" {
- ssid = c.Query("X-Secure-Session-ID")
- }
- if ssid == "" {
- c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
- "message": "Secure Session ID is empty",
- })
- return
- }
- if user.VerifySecureSessionID(ssid, cUser.ID) {
- c.Next()
- return
- }
- c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
- "message": "Secure Session ID is invalid",
- })
- return
- }
- }
|