|
|
|
@ -217,15 +217,17 @@ func prepareUserInfo(ctx *context.Context) *user_model.User { |
|
|
|
|
} |
|
|
|
|
ctx.Data["Sources"] = sources |
|
|
|
|
|
|
|
|
|
ctx.Data["TwoFactorEnabled"] = true |
|
|
|
|
_, err = auth.GetTwoFactorByUID(u.ID) |
|
|
|
|
hasTOTP, err := auth.HasTwoFactorByUID(u.ID) |
|
|
|
|
if err != nil { |
|
|
|
|
if !auth.IsErrTwoFactorNotEnrolled(err) { |
|
|
|
|
ctx.ServerError("IsErrTwoFactorNotEnrolled", err) |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
ctx.Data["TwoFactorEnabled"] = false |
|
|
|
|
ctx.ServerError("auth.HasTwoFactorByUID", err) |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
hasWebAuthn, err := auth.HasWebAuthnRegistrationsByUID(u.ID) |
|
|
|
|
if err != nil { |
|
|
|
|
ctx.ServerError("auth.HasWebAuthnRegistrationsByUID", err) |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
ctx.Data["TwoFactorEnabled"] = hasTOTP || hasWebAuthn |
|
|
|
|
|
|
|
|
|
return u |
|
|
|
|
} |
|
|
|
@ -327,14 +329,27 @@ func EditUserPost(ctx *context.Context) { |
|
|
|
|
if form.Reset2FA { |
|
|
|
|
tf, err := auth.GetTwoFactorByUID(u.ID) |
|
|
|
|
if err != nil && !auth.IsErrTwoFactorNotEnrolled(err) { |
|
|
|
|
ctx.ServerError("GetTwoFactorByUID", err) |
|
|
|
|
ctx.ServerError("auth.GetTwoFactorByUID", err) |
|
|
|
|
return |
|
|
|
|
} else if tf != nil { |
|
|
|
|
if err := auth.DeleteTwoFactorByID(tf.ID, u.ID); err != nil { |
|
|
|
|
ctx.ServerError("auth.DeleteTwoFactorByID", err) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if err = auth.DeleteTwoFactorByID(tf.ID, u.ID); err != nil { |
|
|
|
|
ctx.ServerError("DeleteTwoFactorByID", err) |
|
|
|
|
wn, err := auth.GetWebAuthnCredentialsByUID(u.ID) |
|
|
|
|
if err != nil { |
|
|
|
|
ctx.ServerError("auth.GetTwoFactorByUID", err) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
for _, cred := range wn { |
|
|
|
|
if _, err := auth.DeleteCredential(cred.ID, u.ID); err != nil { |
|
|
|
|
ctx.ServerError("auth.DeleteCredential", err) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
u.LoginName = form.LoginName |
|
|
|
|