45 lines
1011 B
Go
45 lines
1011 B
Go
package auth
|
|
|
|
import (
|
|
"crypto/sha256"
|
|
"sync"
|
|
)
|
|
|
|
// SimpleTokenValidator implements in-memory token validation
|
|
type SimpleTokenValidator struct {
|
|
tokens map[[32]byte]struct{} // keyed by SHA-256(token)
|
|
mu sync.RWMutex
|
|
}
|
|
|
|
// NewSimpleTokenValidator creates token validator
|
|
func NewSimpleTokenValidator() *SimpleTokenValidator {
|
|
return &SimpleTokenValidator{
|
|
tokens: make(map[[32]byte]struct{}),
|
|
}
|
|
}
|
|
|
|
// ValidateToken checks if token is valid
|
|
func (v *SimpleTokenValidator) ValidateToken(token string) bool {
|
|
h := sha256.Sum256([]byte(token))
|
|
v.mu.RLock()
|
|
defer v.mu.RUnlock()
|
|
_, ok := v.tokens[h]
|
|
return ok
|
|
}
|
|
|
|
// AddToken adds token to validator
|
|
func (v *SimpleTokenValidator) AddToken(token string) {
|
|
h := sha256.Sum256([]byte(token))
|
|
v.mu.Lock()
|
|
defer v.mu.Unlock()
|
|
v.tokens[h] = struct{}{}
|
|
}
|
|
|
|
// RemoveToken removes token from validator
|
|
func (v *SimpleTokenValidator) RemoveToken(token string) {
|
|
h := sha256.Sum256([]byte(token))
|
|
v.mu.Lock()
|
|
defer v.mu.Unlock()
|
|
delete(v.tokens, h)
|
|
}
|