67 lines
1.3 KiB
Go
Vendored
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
|
|
}
|