github.com/gofiber/fiber/v2@v2.47.0/middleware/encryptcookie/encryptcookie.go (about) 1 package encryptcookie 2 3 import ( 4 "github.com/gofiber/fiber/v2" 5 6 "github.com/valyala/fasthttp" 7 ) 8 9 // New creates a new middleware handler 10 func New(config ...Config) fiber.Handler { 11 // Set default config 12 cfg := configDefault(config...) 13 14 // Return new handler 15 return func(c *fiber.Ctx) error { 16 // Don't execute middleware if Next returns true 17 if cfg.Next != nil && cfg.Next(c) { 18 return c.Next() 19 } 20 21 // Decrypt request cookies 22 c.Request().Header.VisitAllCookie(func(key, value []byte) { 23 keyString := string(key) 24 if !isDisabled(keyString, cfg.Except) { 25 decryptedValue, err := cfg.Decryptor(string(value), cfg.Key) 26 if err != nil { 27 c.Request().Header.SetCookieBytesKV(key, nil) 28 } else { 29 c.Request().Header.SetCookie(string(key), decryptedValue) 30 } 31 } 32 }) 33 34 // Continue stack 35 err := c.Next() 36 37 // Encrypt response cookies 38 c.Response().Header.VisitAllCookie(func(key, value []byte) { 39 keyString := string(key) 40 if !isDisabled(keyString, cfg.Except) { 41 cookieValue := fasthttp.Cookie{} 42 cookieValue.SetKeyBytes(key) 43 if c.Response().Header.Cookie(&cookieValue) { 44 encryptedValue, err := cfg.Encryptor(string(cookieValue.Value()), cfg.Key) 45 if err != nil { 46 panic(err) 47 } 48 49 cookieValue.SetValue(encryptedValue) 50 c.Response().Header.SetCookie(&cookieValue) 51 } 52 } 53 }) 54 55 return err 56 } 57 }