0cde3182eb
The ACL token state schema has been updated to utilise two new indexes which track expiration of tokens that are configured with an expiration TTL or time. A new state function allows listing ACL expired tokens which will be used by internal garbage collection. The ACL endpoint has been modified so that all validation happens within a single function call. This is easier to understand and see at a glance. The ACL token validation now also includes logic for expiry TTL and times. The ACL endpoint upsert tests have been condensed into a single, table driven test. There is a new token canonicalize which provides a single place for token canonicalization, rather than logic spread in the RPC handler.
26 lines
513 B
Go
26 lines
513 B
Go
package indexer
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
type TimeQuery struct {
|
|
Value time.Time
|
|
}
|
|
|
|
// IndexFromTimeQuery can be used as a memdb.Indexer query via ReadIndex and
|
|
// allows querying by time.
|
|
func IndexFromTimeQuery(arg any) ([]byte, error) {
|
|
p, ok := arg.(*TimeQuery)
|
|
if !ok {
|
|
return nil, fmt.Errorf("unexpected type %T for TimeQuery index", arg)
|
|
}
|
|
|
|
// Construct the index value and return the byte array representation of
|
|
// the time value.
|
|
var b IndexBuilder
|
|
b.Time(p.Value)
|
|
return b.Bytes(), nil
|
|
}
|