9
9
"strings"
10
10
11
11
"code.gitea.io/gitea/models/db"
12
- "code.gitea.io/gitea/modules/json"
13
- "code.gitea.io/gitea/modules/log"
14
12
"code.gitea.io/gitea/modules/timeutil"
15
13
"code.gitea.io/gitea/modules/util"
16
14
@@ -52,7 +50,6 @@ type WebAuthnCredential struct {
52
50
PublicKey []byte
53
51
AttestationType string
54
52
AAGUID []byte
55
- CredentialFlags string `xorm:"TEXT"`
56
53
SignCount uint32 `xorm:"BIGINT"`
57
54
CloneWarning bool
58
55
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
@@ -96,14 +93,6 @@ type WebAuthnCredentialList []*WebAuthnCredential
96
93
func (list WebAuthnCredentialList ) ToCredentials () []webauthn.Credential {
97
94
creds := make ([]webauthn.Credential , 0 , len (list ))
98
95
for _ , cred := range list {
99
- var flags webauthn.CredentialFlags
100
- if cred .CredentialFlags != "" {
101
- err := json .Unmarshal ([]byte (cred .CredentialFlags ), & flags )
102
- if err != nil {
103
- log .Error ("Failed to unmarshal CredentialFlags, webauthn credential id:%d, err:%v" , cred .ID , err )
104
- continue
105
- }
106
- }
107
96
creds = append (creds , webauthn.Credential {
108
97
ID : cred .CredentialID ,
109
98
PublicKey : cred .PublicKey ,
@@ -113,7 +102,6 @@ func (list WebAuthnCredentialList) ToCredentials() []webauthn.Credential {
113
102
SignCount : cred .SignCount ,
114
103
CloneWarning : cred .CloneWarning ,
115
104
},
116
- Flags : flags ,
117
105
})
118
106
}
119
107
return creds
@@ -170,18 +158,13 @@ func GetWebAuthnCredentialByCredID(ctx context.Context, userID int64, credID []b
170
158
171
159
// CreateCredential will create a new WebAuthnCredential from the given Credential
172
160
func CreateCredential (ctx context.Context , userID int64 , name string , cred * webauthn.Credential ) (* WebAuthnCredential , error ) {
173
- flagsJSON , err := json .Marshal (cred .Flags )
174
- if err != nil {
175
- return nil , err
176
- }
177
161
c := & WebAuthnCredential {
178
162
UserID : userID ,
179
163
Name : name ,
180
164
CredentialID : cred .ID ,
181
165
PublicKey : cred .PublicKey ,
182
166
AttestationType : cred .AttestationType ,
183
167
AAGUID : cred .Authenticator .AAGUID ,
184
- CredentialFlags : string (flagsJSON ),
185
168
SignCount : cred .Authenticator .SignCount ,
186
169
CloneWarning : false ,
187
170
}
@@ -197,3 +180,13 @@ func DeleteCredential(ctx context.Context, id, userID int64) (bool, error) {
197
180
had , err := db .GetEngine (ctx ).ID (id ).Where ("user_id = ?" , userID ).Delete (& WebAuthnCredential {})
198
181
return had > 0 , err
199
182
}
183
+
184
+ // WebAuthnCredentials implements the webauthn.User interface
185
+ func WebAuthnCredentials (ctx context.Context , userID int64 ) ([]webauthn.Credential , error ) {
186
+ dbCreds , err := GetWebAuthnCredentialsByUID (ctx , userID )
187
+ if err != nil {
188
+ return nil , err
189
+ }
190
+
191
+ return dbCreds .ToCredentials (), nil
192
+ }
0 commit comments