mirror of
https://github.com/miniflux/v2.git
synced 2024-08-18 18:33:23 +02:00
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
|
// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
|
||
|
// SPDX-License-Identifier: Apache-2.0
|
||
|
|
||
|
package model // import "miniflux.app/v2/internal/model"
|
||
|
|
||
|
import (
|
||
|
"database/sql/driver"
|
||
|
"encoding/hex"
|
||
|
"encoding/json"
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
"time"
|
||
|
|
||
|
"github.com/go-webauthn/webauthn/webauthn"
|
||
|
)
|
||
|
|
||
|
// handle marshalling / unmarshalling session data
|
||
|
type WebAuthnSession struct {
|
||
|
*webauthn.SessionData
|
||
|
}
|
||
|
|
||
|
func (s WebAuthnSession) Value() (driver.Value, error) {
|
||
|
return json.Marshal(s)
|
||
|
}
|
||
|
|
||
|
func (s *WebAuthnSession) Scan(value interface{}) error {
|
||
|
b, ok := value.([]byte)
|
||
|
if !ok {
|
||
|
return errors.New("type assertion to []byte failed")
|
||
|
}
|
||
|
|
||
|
return json.Unmarshal(b, &s)
|
||
|
}
|
||
|
|
||
|
func (s WebAuthnSession) String() string {
|
||
|
if s.SessionData == nil {
|
||
|
return "{}"
|
||
|
}
|
||
|
return fmt.Sprintf("{Challenge: %s, UserID: %x}", s.SessionData.Challenge, s.SessionData.UserID)
|
||
|
}
|
||
|
|
||
|
type WebAuthnCredential struct {
|
||
|
Credential webauthn.Credential
|
||
|
Name string
|
||
|
AddedOn *time.Time
|
||
|
LastSeenOn *time.Time
|
||
|
Handle []byte
|
||
|
}
|
||
|
|
||
|
func (s WebAuthnCredential) HandleEncoded() string {
|
||
|
return hex.EncodeToString(s.Handle)
|
||
|
}
|