Adding upstream version 2.52.6.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
a960158181
commit
6d002e9543
441 changed files with 95392 additions and 0 deletions
128
middleware/session/config.go
Normal file
128
middleware/session/config.go
Normal file
|
@ -0,0 +1,128 @@
|
|||
package session
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/log"
|
||||
"github.com/gofiber/fiber/v2/utils"
|
||||
)
|
||||
|
||||
// Config defines the config for middleware.
|
||||
type Config struct {
|
||||
// Allowed session duration
|
||||
// Optional. Default value 24 * time.Hour
|
||||
Expiration time.Duration
|
||||
|
||||
// Storage interface to store the session data
|
||||
// Optional. Default value memory.New()
|
||||
Storage fiber.Storage
|
||||
|
||||
// KeyLookup is a string in the form of "<source>:<name>" that is used
|
||||
// to extract session id from the request.
|
||||
// Possible values: "header:<name>", "query:<name>" or "cookie:<name>"
|
||||
// Optional. Default value "cookie:session_id".
|
||||
KeyLookup string
|
||||
|
||||
// Domain of the cookie.
|
||||
// Optional. Default value "".
|
||||
CookieDomain string
|
||||
|
||||
// Path of the cookie.
|
||||
// Optional. Default value "".
|
||||
CookiePath string
|
||||
|
||||
// Indicates if cookie is secure.
|
||||
// Optional. Default value false.
|
||||
CookieSecure bool
|
||||
|
||||
// Indicates if cookie is HTTP only.
|
||||
// Optional. Default value false.
|
||||
CookieHTTPOnly bool
|
||||
|
||||
// Value of SameSite cookie.
|
||||
// Optional. Default value "Lax".
|
||||
CookieSameSite string
|
||||
|
||||
// Decides whether cookie should last for only the browser sesison.
|
||||
// Ignores Expiration if set to true
|
||||
// Optional. Default value false.
|
||||
CookieSessionOnly bool
|
||||
|
||||
// KeyGenerator generates the session key.
|
||||
// Optional. Default value utils.UUIDv4
|
||||
KeyGenerator func() string
|
||||
|
||||
// Deprecated: Please use KeyLookup
|
||||
CookieName string
|
||||
|
||||
// Source defines where to obtain the session id
|
||||
source Source
|
||||
|
||||
// The session name
|
||||
sessionName string
|
||||
}
|
||||
|
||||
type Source string
|
||||
|
||||
const (
|
||||
SourceCookie Source = "cookie"
|
||||
SourceHeader Source = "header"
|
||||
SourceURLQuery Source = "query"
|
||||
)
|
||||
|
||||
// ConfigDefault is the default config
|
||||
var ConfigDefault = Config{
|
||||
Expiration: 24 * time.Hour,
|
||||
KeyLookup: "cookie:session_id",
|
||||
KeyGenerator: utils.UUIDv4,
|
||||
source: "cookie",
|
||||
sessionName: "session_id",
|
||||
}
|
||||
|
||||
// Helper function to set default values
|
||||
func configDefault(config ...Config) Config {
|
||||
// Return default config if nothing provided
|
||||
if len(config) < 1 {
|
||||
return ConfigDefault
|
||||
}
|
||||
|
||||
// Override default config
|
||||
cfg := config[0]
|
||||
|
||||
// Set default values
|
||||
if int(cfg.Expiration.Seconds()) <= 0 {
|
||||
cfg.Expiration = ConfigDefault.Expiration
|
||||
}
|
||||
if cfg.CookieName != "" {
|
||||
log.Warn("[SESSION] CookieName is deprecated, please use KeyLookup")
|
||||
cfg.KeyLookup = fmt.Sprintf("cookie:%s", cfg.CookieName)
|
||||
}
|
||||
if cfg.KeyLookup == "" {
|
||||
cfg.KeyLookup = ConfigDefault.KeyLookup
|
||||
}
|
||||
if cfg.KeyGenerator == nil {
|
||||
cfg.KeyGenerator = ConfigDefault.KeyGenerator
|
||||
}
|
||||
|
||||
selectors := strings.Split(cfg.KeyLookup, ":")
|
||||
const numSelectors = 2
|
||||
if len(selectors) != numSelectors {
|
||||
panic("[session] KeyLookup must in the form of <source>:<name>")
|
||||
}
|
||||
switch Source(selectors[0]) {
|
||||
case SourceCookie:
|
||||
cfg.source = SourceCookie
|
||||
case SourceHeader:
|
||||
cfg.source = SourceHeader
|
||||
case SourceURLQuery:
|
||||
cfg.source = SourceURLQuery
|
||||
default:
|
||||
panic("[session] source is not supported")
|
||||
}
|
||||
cfg.sessionName = selectors[1]
|
||||
|
||||
return cfg
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue