Initial commit

This commit is contained in:
2023-10-21 10:26:15 +02:00
commit 84499d0ed9
15 changed files with 558 additions and 0 deletions

46
store/memory.go Normal file
View File

@@ -0,0 +1,46 @@
package store
type MemoryAuthStore struct {
Tokens map[string]RevokableToken
}
func NewMemoryAuthStore() *MemoryAuthStore {
return &MemoryAuthStore{Tokens: map[string]RevokableToken{}}
}
func (s *MemoryAuthStore) Revoke(id string) error {
if t, ok := s.Tokens[id]; ok {
t.Revoked = true
s.Tokens[id] = t
}
return nil
}
func (s *MemoryAuthStore) IsRevoked(id string) bool {
if t, ok := s.Tokens[id]; ok {
return t.Revoked
}
return false
}
func (s *MemoryAuthStore) Add(token RevokableToken) error {
s.Tokens[token.ID] = token
return nil
}
func (s *MemoryAuthStore) Remove(id string) error {
delete(s.Tokens, id)
return nil
}
func (s *MemoryAuthStore) RevokeUser(subject string) error {
for id, token := range s.Tokens {
if token.Subject == subject {
token.Revoked = true
s.Tokens[id] = token
}
}
return nil
}

18
store/store.go Normal file
View File

@@ -0,0 +1,18 @@
package store
import "time"
type RevokableToken struct {
ID string
Subject string
ExpiresAt time.Time
Revoked bool
}
type AuthStore interface {
Add(token RevokableToken) error
Remove(id string) error
Revoke(id string) error
RevokeUser(subject string) error
IsRevoked(id string) bool
}