Quellcode durchsuchen

feat(go): add access token count to ReturnUser model;

Vishal Dalwadi vor 2 Monaten
Ursprung
Commit
8971ecd2e9
4 geänderte Dateien mit 25 neuen und 0 gelöschten Zeilen
  1. 14 0
      controllers/user.go
  2. 1 0
      logic/auth.go
  3. 1 0
      models/user_mgmt.go
  4. 9 0
      schema/user_access_token.go

+ 14 - 0
controllers/user.go

@@ -1,9 +1,11 @@
 package controller
 
 import (
+	"context"
 	"encoding/json"
 	"errors"
 	"fmt"
+	"github.com/gravitl/netmaker/db"
 	"net/http"
 	"reflect"
 	"time"
@@ -584,6 +586,18 @@ func getUsers(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
+	for i, user := range users {
+		// only setting num_access_tokens here, because only UI needs it.
+		user.NumAccessTokens, err = (&schema.UserAccessToken{
+			UserName: user.UserName,
+		}).CountByUser(db.WithContext(context.TODO()))
+		if err != nil {
+			continue
+		}
+
+		users[i] = user
+	}
+
 	logic.SortUsers(users[:])
 	logger.Log(2, r.Header.Get("user"), "fetched users")
 	json.NewEncoder(w).Encode(users)

+ 1 - 0
logic/auth.go

@@ -106,6 +106,7 @@ func GetUsers() ([]models.ReturnUser, error) {
 		if err != nil {
 			continue // get users
 		}
+
 		users = append(users, user)
 	}
 

+ 1 - 0
models/user_mgmt.go

@@ -190,6 +190,7 @@ type ReturnUser struct {
 	PlatformRoleID             UserRoleID                            `json:"platform_role_id"`
 	NetworkRoles               map[NetworkID]map[UserRoleID]struct{} `json:"network_roles"`
 	LastLoginTime              time.Time                             `json:"last_login_time"`
+	NumAccessTokens            int                                   `json:"num_access_tokens"`
 }
 
 // UserAuthParams - user auth params struct

+ 9 - 0
schema/user_access_token.go

@@ -43,6 +43,15 @@ func (a *UserAccessToken) ListByUser(ctx context.Context) (ats []UserAccessToken
 	return
 }
 
+func (a *UserAccessToken) CountByUser(ctx context.Context) (int, error) {
+	var count int64
+	err := db.FromContext(ctx).Model(&UserAccessToken{}).
+		Where("user_name = ?", a.UserName).
+		Count(&count).
+		Error
+	return int(count), err
+}
+
 func (a *UserAccessToken) Delete(ctx context.Context) error {
 	return db.FromContext(ctx).Model(&UserAccessToken{}).Where("id = ?", a.ID).Delete(&a).Error
 }