single db with prefixes, dump/restore, blacklisting on user deletion
This commit is contained in:
parent
62ff59957a
commit
d4971cda89
20 changed files with 264 additions and 163 deletions
|
|
@ -6,10 +6,10 @@ import "sync"
|
|||
|
||||
// Blacklist is the blacklisting storage interface
|
||||
type Blacklist interface {
|
||||
Add(string, int64)
|
||||
Remove(string)
|
||||
Add(string, int64) error
|
||||
Remove(string) error
|
||||
Check(string) bool
|
||||
Map() BlacklistMap
|
||||
Map() (BlacklistMap, error)
|
||||
}
|
||||
|
||||
// BlacklistMap is the blacklist map structure
|
||||
|
|
@ -28,17 +28,19 @@ func NewMemBlacklist() *MemBlacklist {
|
|||
}
|
||||
|
||||
// Add adds a new token signature with expiration time to the blacklist
|
||||
func (mb *MemBlacklist) Add(sig string, exp int64) {
|
||||
func (mb *MemBlacklist) Add(sig string, exp int64) error {
|
||||
mb.Lock()
|
||||
mb.list[sig] = exp
|
||||
mb.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
||||
// Remove deletes a token signature from the blacklist
|
||||
func (mb *MemBlacklist) Remove(sig string) {
|
||||
func (mb *MemBlacklist) Remove(sig string) error {
|
||||
mb.Lock()
|
||||
delete(mb.list, sig)
|
||||
mb.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
||||
// Check returns true if a token signature is blacklisted and false otherwise
|
||||
|
|
@ -50,7 +52,7 @@ func (mb *MemBlacklist) Check(sig string) (ok bool) {
|
|||
}
|
||||
|
||||
// Map returns the blacklist in the form of a iterable map structure for cleanup
|
||||
func (mb *MemBlacklist) Map() (list BlacklistMap) {
|
||||
func (mb *MemBlacklist) Map() (list BlacklistMap, err error) {
|
||||
list = make(BlacklistMap)
|
||||
mb.RLock()
|
||||
for k, v := range mb.list {
|
||||
|
|
|
|||
9
vendor/git.giftfish.de/ston1th/jwt/v3/jwt.go
vendored
9
vendor/git.giftfish.de/ston1th/jwt/v3/jwt.go
vendored
|
|
@ -143,8 +143,7 @@ func (jwt *JWT) Invalidate(t *Token) error {
|
|||
if !hmac.Equal(jwt.sum(t.Data(), h), t.RawSig()) {
|
||||
return ErrInvalid
|
||||
}
|
||||
jwt.blacklist.Add(t.Sig(), exp)
|
||||
return nil
|
||||
return jwt.blacklist.Add(t.Sig(), exp)
|
||||
}
|
||||
|
||||
// blacklisted checks if a token is blacklisted
|
||||
|
|
@ -169,7 +168,11 @@ func (jwt *JWT) clean() {
|
|||
return
|
||||
}
|
||||
now := Now()
|
||||
for k, v := range jwt.blacklist.Map() {
|
||||
m, err := jwt.blacklist.Map()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
for k, v := range m {
|
||||
if now > v {
|
||||
jwt.blacklist.Remove(k)
|
||||
}
|
||||
|
|
|
|||
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
|
|
@ -1,6 +1,6 @@
|
|||
# git.giftfish.de/ston1th/godrop/v2 v2.0.1
|
||||
git.giftfish.de/ston1th/godrop/v2
|
||||
# git.giftfish.de/ston1th/jwt/v3 v3.0.0
|
||||
# git.giftfish.de/ston1th/jwt/v3 v3.1.0
|
||||
git.giftfish.de/ston1th/jwt/v3
|
||||
# github.com/RoaringBitmap/roaring v0.4.16
|
||||
github.com/RoaringBitmap/roaring
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue