mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-16 15:26:40 +00:00
33 lines
601 B
Go
33 lines
601 B
Go
package methods
|
|
|
|
import (
|
|
"crypto/subtle"
|
|
"net/http"
|
|
)
|
|
|
|
const (
|
|
// DefaultPINHeader is the default header name for PIN authentication
|
|
DefaultPINHeader = "X-PIN"
|
|
)
|
|
|
|
// PINConfig holds PIN authentication settings
|
|
type PINConfig struct {
|
|
PIN string
|
|
Header string
|
|
}
|
|
|
|
// Validate checks PIN from the request header
|
|
func (c *PINConfig) Validate(r *http.Request) bool {
|
|
header := c.Header
|
|
if header == "" {
|
|
header = DefaultPINHeader
|
|
}
|
|
|
|
providedPIN := r.Header.Get(header)
|
|
if providedPIN == "" {
|
|
return false
|
|
}
|
|
|
|
return subtle.ConstantTimeCompare([]byte(providedPIN), []byte(c.PIN)) == 1
|
|
}
|