mirror of
https://github.com/gofiber/fiber.git
synced 2025-02-22 01:33:19 +00:00
79 lines
1.6 KiB
Go
79 lines
1.6 KiB
Go
package encryptcookie
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v3"
|
|
)
|
|
|
|
// Config defines the config for middleware.
|
|
type Config struct {
|
|
// Next defines a function to skip this middleware when returned true.
|
|
//
|
|
// Optional. Default: nil
|
|
Next func(c fiber.Ctx) bool
|
|
|
|
// Array of cookie keys that should not be encrypted.
|
|
//
|
|
// Optional. Default: []
|
|
Except []string
|
|
|
|
// Base64 encoded unique key to encode & decode cookies.
|
|
//
|
|
// Required. Key length should be 32 characters.
|
|
// You may use `encryptcookie.GenerateKey()` to generate a new key.
|
|
Key string
|
|
|
|
// Custom function to encrypt cookies.
|
|
//
|
|
// Optional. Default: EncryptCookie
|
|
Encryptor func(decryptedString, key string) (string, error)
|
|
|
|
// Custom function to decrypt cookies.
|
|
//
|
|
// Optional. Default: DecryptCookie
|
|
Decryptor func(encryptedString, key string) (string, error)
|
|
}
|
|
|
|
// ConfigDefault is the default config
|
|
var ConfigDefault = Config{
|
|
Next: nil,
|
|
Except: []string{"csrf_"},
|
|
Key: "",
|
|
Encryptor: EncryptCookie,
|
|
Decryptor: DecryptCookie,
|
|
}
|
|
|
|
// Helper function to set default values
|
|
func configDefault(config ...Config) Config {
|
|
// Set default config
|
|
cfg := ConfigDefault
|
|
|
|
// Override config if provided
|
|
if len(config) > 0 {
|
|
cfg = config[0]
|
|
|
|
// Set default values
|
|
|
|
if cfg.Next == nil {
|
|
cfg.Next = ConfigDefault.Next
|
|
}
|
|
|
|
if cfg.Except == nil {
|
|
cfg.Except = ConfigDefault.Except
|
|
}
|
|
|
|
if cfg.Encryptor == nil {
|
|
cfg.Encryptor = ConfigDefault.Encryptor
|
|
}
|
|
|
|
if cfg.Decryptor == nil {
|
|
cfg.Decryptor = ConfigDefault.Decryptor
|
|
}
|
|
}
|
|
|
|
if cfg.Key == "" {
|
|
panic("fiber: encrypt cookie middleware requires key")
|
|
}
|
|
|
|
return cfg
|
|
}
|