1
Fork 0
mirror of https://github.com/jech/galene.git synced 2024-11-22 08:35:57 +01:00
galene/token/token.go
2024-03-03 15:42:46 +01:00

33 lines
672 B
Go

package token
import (
"errors"
"os"
)
var ErrUsernameRequired = errors.New("username required")
type Token interface {
Check(host, group string, username *string) (string, []string, error)
}
func Parse(token string, keys []map[string]interface{}) (Token, error) {
// both getStateful and parseJWT may return nil, which we
// shouldn't cast into an interface. Be very careful.
s, err1 := getStateful(token)
if err1 == nil && s != nil {
return s, nil
}
jwt, err2 := parseJWT(token, keys)
if err2 == nil && jwt != nil {
return jwt, nil
}
if err1 != nil {
return nil, err1
} else if err2 != nil {
return nil, err2
}
return nil, os.ErrNotExist
}