encryptcookie.go — fiber Source File
Architecture documentation for encryptcookie.go, a go file in the fiber codebase. 1 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 7b5895a3_fa50_acec_859c_a9b46015d9a6["encryptcookie.go"] fcef1725_af89_d6cd_36cd_b228cdcc5acd["errors"] 7b5895a3_fa50_acec_859c_a9b46015d9a6 --> fcef1725_af89_d6cd_36cd_b228cdcc5acd style 7b5895a3_fa50_acec_859c_a9b46015d9a6 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
package encryptcookie
import (
"errors"
"github.com/valyala/fasthttp"
"github.com/gofiber/fiber/v3"
)
// New creates a new middleware handler
func New(config ...Config) fiber.Handler {
// Set default config
cfg := configDefault(config...)
// Return new handler
return func(c fiber.Ctx) error {
// Don't execute middleware if Next returns true
if cfg.Next != nil && cfg.Next(c) {
return c.Next()
}
// Decrypt request cookies
cookiesToDelete := make([][]byte, 0, 4)
for key, value := range c.Request().Header.Cookies() {
keyString := string(key)
if !isDisabled(keyString, cfg.Except) {
decryptedValue, err := cfg.Decryptor(keyString, string(value), cfg.Key)
if err != nil {
cookiesToDelete = append(cookiesToDelete, key)
} else {
c.Request().Header.SetCookie(keyString, decryptedValue)
}
}
}
// Delete cookies that failed to decrypt - outside the loop to avoid mutation during iteration
for _, key := range cookiesToDelete {
c.Request().Header.DelCookieBytes(key)
}
// Continue stack
err := c.Next()
// Encrypt response cookies
for key := range c.Response().Header.Cookies() {
keyString := string(key)
if !isDisabled(keyString, cfg.Except) {
cookieValue := fasthttp.Cookie{}
cookieValue.SetKeyBytes(key)
if c.Response().Header.Cookie(&cookieValue) {
encryptedValue, encErr := cfg.Encryptor(keyString, string(cookieValue.Value()), cfg.Key)
if encErr != nil {
return errors.Join(err, encErr)
}
cookieValue.SetValue(encryptedValue)
c.Response().Header.SetCookie(&cookieValue)
}
}
}
return err
}
}
Domain
Subdomains
Functions
Dependencies
- errors
Source
Frequently Asked Questions
What does encryptcookie.go do?
encryptcookie.go is a source file in the fiber codebase, written in go. It belongs to the FiberCore domain, Adapters subdomain.
What functions are defined in encryptcookie.go?
encryptcookie.go defines 1 function(s): New.
What does encryptcookie.go depend on?
encryptcookie.go imports 1 module(s): errors.
Where is encryptcookie.go in the architecture?
encryptcookie.go is located at middleware/encryptcookie/encryptcookie.go (domain: FiberCore, subdomain: Adapters, directory: middleware/encryptcookie).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free