aboutsummaryrefslogtreecommitdiff
path: root/internal/db/two_factors.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db/two_factors.go')
-rw-r--r--internal/db/two_factors.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/internal/db/two_factors.go b/internal/db/two_factors.go
new file mode 100644
index 00000000..376cc40c
--- /dev/null
+++ b/internal/db/two_factors.go
@@ -0,0 +1,33 @@
+// Copyright 2020 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package db
+
+import (
+ "github.com/jinzhu/gorm"
+ log "unknwon.dev/clog/v2"
+)
+
+// TwoFactorsStore is the persistent interface for 2FA.
+//
+// NOTE: All methods are sorted in alphabetical order.
+type TwoFactorsStore interface {
+ // IsUserEnabled returns true if the user has enabled 2FA.
+ IsUserEnabled(userID int64) bool
+}
+
+var TwoFactors TwoFactorsStore
+
+type twoFactors struct {
+ *gorm.DB
+}
+
+func (db *twoFactors) IsUserEnabled(userID int64) bool {
+ var count int64
+ err := db.Model(new(TwoFactor)).Where("user_id = ?", userID).Count(&count).Error
+ if err != nil {
+ log.Error("Failed to count two factors [user_id: %d]: %v", userID, err)
+ }
+ return count > 0
+}