浏览代码

feat: make MFA status visible in WebAdmin (#844)

Signed-off-by: Tim Birkett <tim.birkett@sainsburys.co.uk>
Tim Birkett 3 年之前
父节点
当前提交
a87aa9b98e
共有 4 个文件被更改,包括 15 次插入0 次删除
  1. 9 0
      dataprovider/user.go
  2. 2 0
      httpd/webadmin.go
  3. 2 0
      templates/webadmin/admins.html
  4. 2 0
      templates/webadmin/users.html

+ 9 - 0
dataprovider/user.go

@@ -1331,6 +1331,15 @@ func (u *User) GetBandwidthAsString() string {
 	return result
 }
 
+// GetMFAStatusAsString returns MFA status
+func (u *User) GetMFAStatusAsString() string {
+	result := "-"
+	if u.Filters.TOTPConfig.Enabled {
+		result = strings.Join(u.Filters.TOTPConfig.Protocols, ", ")
+	}
+	return result
+}
+
 // GetInfoString returns user's info as string.
 // Storage provider, number of public keys, max sessions, uid,
 // gid, denied and allowed IP/Mask are returned

+ 2 - 0
httpd/webadmin.go

@@ -130,6 +130,7 @@ type basePage struct {
 	CSRFToken          string
 	HasDefender        bool
 	HasExternalLogin   bool
+	HasMFA             bool
 	LoggedAdmin        *dataprovider.Admin
 	Branding           UIBranding
 }
@@ -485,6 +486,7 @@ func (s *httpdServer) getBasePageData(title, currentURL string, r *http.Request)
 		Version:            version.GetAsString(),
 		LoggedAdmin:        getAdminFromToken(r),
 		HasDefender:        common.Config.DefenderConfig.Enabled,
+		HasMFA:             len(mfa.GetAvailableTOTPConfigNames()) > 0,
 		HasExternalLogin:   isLoggedInWithOIDC(r),
 		CSRFToken:          csrfToken,
 		Branding:           s.binding.Branding.WebAdmin,

+ 2 - 0
templates/webadmin/admins.html

@@ -32,6 +32,7 @@
                         <th>ID</th>
                         <th>Username</th>
                         <th>Status</th>
+                        {{if .HasMFA }}<th>MFA</th>{{end}}
                         <th>Permissions</th>
                         <th>Other</th>
                     </tr>
@@ -42,6 +43,7 @@
                         <td>{{.ID}}</td>
                         <td>{{.Username}}</td>
                         <td>{{if eq .Status 1 }}Active{{else}}Inactive{{end}}</td>
+                        {{if $.HasMFA }}<td>{{if .Filters.TOTPConfig.Enabled }}Enabled{{else}}-{{end}}</td>{{end}}
                         <td>{{.GetPermissionsAsString}}</td>
                         <td>{{.GetInfoString}}</td>
                     </tr>

+ 2 - 0
templates/webadmin/users.html

@@ -32,6 +32,7 @@
                         <th>ID</th>
                         <th>Username</th>
                         <th>Status</th>
+                        {{if .HasMFA }}<th>MFA</th>{{end}}
                         <th>Bandwidth</th>
                         <th>Quota</th>
                         <th>Other</th>
@@ -43,6 +44,7 @@
                         <td>{{.ID}}</td>
                         <td>{{.Username}}</td>
                         <td>{{.GetStatusAsString}}</td>
+                        {{if $.HasMFA }}<td>{{.GetMFAStatusAsString}}</td>{{end}}
                         <td>{{.GetBandwidthAsString}}</td>
                         <td>{{.GetQuotaSummary}}</td>
                         <td>{{.GetInfoString}}</td>