Implement accessors for stateful tokens.

This commit is contained in:
Juliusz Chroboczek
2024-05-01 22:39:48 +02:00
parent fe15057252
commit 2f5c21d161
5 changed files with 153 additions and 99 deletions
+15 -8
View File
@@ -1753,7 +1753,7 @@ func handleClientMessage(c *webClient, m clientMessage) error {
now := time.Now()
tok.IssuedAt = &now
new, err := token.Add(tok)
new, err := token.Update(tok, "")
if err != nil {
return terror("error", err.Error())
}
@@ -1783,19 +1783,26 @@ func handleClientMessage(c *webClient, m clientMessage) error {
}
if tok.Group != "" || tok.Username != nil ||
tok.Permissions != nil ||
tok.NotBefore != nil ||
tok.IssuedBy != nil ||
tok.IssuedAt != nil {
return terror(
"error", "this field cannot be edited",
)
}
if tok.Expires == nil {
return terror("error", "trying to edit nothing")
old, etag, err := token.Get(tok.Token)
if err != nil {
return terror("error", err.Error())
}
new, err := token.Extend(
c.group.Name(), tok.Token, *tok.Expires,
)
t := old.Clone()
if tok.Expires != nil {
t.Expires = tok.Expires
}
if tok.NotBefore != nil {
t.NotBefore = tok.NotBefore
}
new, err := token.Update(t, etag)
if err != nil {
return terror("error", err.Error())
}
@@ -1819,7 +1826,7 @@ func handleClientMessage(c *webClient, m clientMessage) error {
!member("token", c.permissions) {
return terror("not-authorised", "not authorised")
}
tokens, err := token.List(c.group.Name())
tokens, _, err := token.List(c.group.Name())
if err != nil {
return terror("error", err.Error())
}