Files
gamertan bfe6cfd29e
verify / verify (push) Successful in 3m40s
auth: publish passkey foundations preview
2026-08-21 17:33:00 -04:00

67 lines
1.3 KiB
Go
Vendored

package webauthn_test
import (
"crypto/subtle"
"fmt"
"github.com/go-webauthn/webauthn/webauthn"
)
type defaultUser struct {
id []byte
credentials []webauthn.Credential
}
var _ webauthn.User = (*defaultUser)(nil)
func (user *defaultUser) WebAuthnID() []byte {
return user.id
}
func (user *defaultUser) WebAuthnName() string {
return "newUser"
}
func (user *defaultUser) WebAuthnDisplayName() string {
return "New User"
}
func (user *defaultUser) WebAuthnCredentials() []webauthn.Credential {
return user.credentials
}
var testUser *defaultUser
// GetUser is a crude and abstract example of getting users.
func GetUser() *defaultUser {
return &defaultUser{}
}
// LoadUser is a crude and abstract example of loading users.
func LoadUser() (user *defaultUser, err error) {
if testUser != nil {
return testUser, nil
}
return GetUser(), nil
}
func LoadUserByHandle(handle []byte) (user *defaultUser, err error) {
if testUser != nil {
return nil, fmt.Errorf("not initialized")
}
if subtle.ConstantTimeCompare(testUser.id, handle) != 1 {
return nil, fmt.Errorf("not found")
}
return testUser, nil
}
// SaveUser is a crude and abstract example of saving users.
func SaveUser(user *defaultUser) (err error) {
testUser = user
return nil
}