This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user