From afd4467cf294e79b169942a22596f67b2fd9cd0d Mon Sep 17 00:00:00 2001 From: joel Date: Thu, 12 Sep 2024 14:46:25 +0300 Subject: [PATCH] fix: update phone admin methods --- internal/api/admin.go | 8 +++----- internal/models/factor.go | 12 ++++++------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/internal/api/admin.go b/internal/api/admin.go index 45b08f041..39c5dea3f 100644 --- a/internal/api/admin.go +++ b/internal/api/admin.go @@ -618,11 +618,9 @@ func (a *API) adminUserUpdateFactor(w http.ResponseWriter, r *http.Request) erro return terr } } - if params.FactorType != "" { - if params.FactorType != models.TOTP { - return badRequestError(ErrorCodeValidationFailed, "Factor Type not valid") - } - if terr := factor.UpdateFactorType(tx, params.FactorType); terr != nil { + + if params.Phone != "" && factor.IsPhoneFactor() { + if terr := factor.UpdatePhone(tx, params.Phone); terr != nil { return terr } } diff --git a/internal/models/factor.go b/internal/models/factor.go index 7c6f6dd30..ecf6b1a9f 100644 --- a/internal/models/factor.go +++ b/internal/models/factor.go @@ -32,6 +32,7 @@ func (factorState FactorState) String() string { const TOTP = "totp" const Phone = "phone" +const WebAuthn = "webauthn" type AuthenticationMethod int @@ -245,18 +246,17 @@ func (f *Factor) UpdateFriendlyName(tx *storage.Connection, friendlyName string) return tx.UpdateOnly(f, "friendly_name", "updated_at") } +func (f *Factor) UpdatePhone(tx *storage.Connection, phone string) error { + f.Phone = phone + return tx.UpdateOnly(f, "phone", "updated_at") +} + // UpdateStatus modifies the factor status func (f *Factor) UpdateStatus(tx *storage.Connection, state FactorState) error { f.Status = state.String() return tx.UpdateOnly(f, "status", "updated_at") } -// UpdateFactorType modifies the factor type -func (f *Factor) UpdateFactorType(tx *storage.Connection, factorType string) error { - f.FactorType = factorType - return tx.UpdateOnly(f, "factor_type", "updated_at") -} - func (f *Factor) DowngradeSessionsToAAL1(tx *storage.Connection) error { sessions, err := FindSessionsByFactorID(tx, f.ID) if err != nil {