From 2f7070377ff25e21b40c50bc7a1575542d4c3b0b Mon Sep 17 00:00:00 2001 From: Jacky Date: Thu, 26 Sep 2024 12:57:34 +0800 Subject: [PATCH] fix: incorrect status of enabled 2fa of user #577 --- app/src/views/environment/Environment.vue | 18 ++++++++++++------ app/src/views/other/Login.vue | 2 +- internal/cert/payload.go | 7 +++++++ model/auth.go | 15 +++++++++++---- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/app/src/views/environment/Environment.vue b/app/src/views/environment/Environment.vue index 21d50497..fddb3aff 100644 --- a/app/src/views/environment/Environment.vue +++ b/app/src/views/environment/Environment.vue @@ -42,13 +42,19 @@ function batchUpgrade() { - - + - {{ $gettext('Upgrade') }} - + + {{ $gettext('Upgrade') }} + + diff --git a/app/src/views/other/Login.vue b/app/src/views/other/Login.vue index e1619b39..458beefb 100644 --- a/app/src/views/other/Login.vue +++ b/app/src/views/other/Login.vue @@ -229,7 +229,7 @@ async function handlePasskeyLogin() { :two-f-a-status="{ enabled: true, otp_status: true, - passkey_status: true, + passkey_status: false, }" @submit-o-t-p="handleOTPSubmit" /> diff --git a/internal/cert/payload.go b/internal/cert/payload.go index 3f27a6bb..004a98f3 100644 --- a/internal/cert/payload.go +++ b/internal/cert/payload.go @@ -60,6 +60,13 @@ func (c *ConfigPayload) mkCertificateDir() (err error) { } } + if _, err = os.Stat(c.CertificateDir); os.IsNotExist(err) { + err = os.MkdirAll(c.CertificateDir, 0755) + if err == nil { + return nil + } + } + // For windows, replace * with # (issue #403) c.CertificateDir = strings.ReplaceAll(c.CertificateDir, "*", "#") if _, err = os.Stat(c.CertificateDir); os.IsNotExist(err) { diff --git a/model/auth.go b/model/auth.go index 4d6d343e..6660d967 100644 --- a/model/auth.go +++ b/model/auth.go @@ -3,15 +3,17 @@ package model import ( "github.com/go-webauthn/webauthn/webauthn" "github.com/spf13/cast" + "gorm.io/gorm" ) type User struct { Model - Name string `json:"name"` - Password string `json:"-"` - Status bool `json:"status" gorm:"default:1"` - OTPSecret []byte `json:"-" gorm:"type:blob"` + Name string `json:"name"` + Password string `json:"-"` + Status bool `json:"status" gorm:"default:1"` + OTPSecret []byte `json:"-" gorm:"type:blob"` + EnabledTwoFA bool `json:"enabled_2fa" gorm:"-"` } type AuthToken struct { @@ -24,6 +26,11 @@ func (u *User) TableName() string { return "auths" } +func (u *User) AfterFind(_ *gorm.DB) error { + u.EnabledTwoFA = u.Enabled2FA() + return nil +} + func (u *User) EnabledOTP() bool { return len(u.OTPSecret) != 0 }