package passkey import ( "fmt" "strconv" "strings" "github.com/QuantumNous/new-api/model" webauthn "github.com/go-webauthn/webauthn/webauthn" ) type WebAuthnUser struct { user *model.User credential *model.PasskeyCredential } func NewWebAuthnUser(user *model.User, credential *model.PasskeyCredential) *WebAuthnUser { return &WebAuthnUser{user: user, credential: credential} } func (u *WebAuthnUser) WebAuthnID() []byte { if u == nil || u.user == nil { return nil } return []byte(strconv.Itoa(u.user.Id)) } func (u *WebAuthnUser) WebAuthnName() string { if u == nil || u.user == nil { return "" } name := strings.TrimSpace(u.user.Username) if name == "" { return fmt.Sprintf("user-%d", u.user.Id) } return name } func (u *WebAuthnUser) WebAuthnDisplayName() string { if u == nil || u.user == nil { return "" } display := strings.TrimSpace(u.user.DisplayName) if display != "" { return display } return u.WebAuthnName() } func (u *WebAuthnUser) WebAuthnCredentials() []webauthn.Credential { if u == nil || u.credential == nil { return nil } cred := u.credential.ToWebAuthnCredential() return []webauthn.Credential{cred} } func (u *WebAuthnUser) ModelUser() *model.User { if u == nil { return nil } return u.user } func (u *WebAuthnUser) PasskeyCredential() *model.PasskeyCredential { if u == nil { return nil } return u.credential }