From 46e246374d11ef817e08138c15f2a86500c6acdc Mon Sep 17 00:00:00 2001 From: Kalzu Rekku Date: Sat, 20 Sep 2025 21:47:49 +0300 Subject: [PATCH] Fix type field bugs from initial root user setup. --- server/server.go | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/server/server.go b/server/server.go index 4b248b0..670027b 100644 --- a/server/server.go +++ b/server/server.go @@ -133,19 +133,20 @@ func NewServer(config *types.Config) (*Server, error) { // Create admin group adminGroupUUID := uuid.NewString() - hashedGroupName := utils.HashGroupName("admin") // Adjust if function name differs + hashedGroupName := utils.HashGroupName("admin") adminGroup := types.Group{ UUID: adminGroupUUID, - Name: hashedGroupName, - CreatedAt: now, // Add if field exists; remove otherwise - // Members: []string{}, // Add if needed; e.g., add root later + NameHash: hashedGroupName, + Members: []string{}, + CreatedAt: now, + UpdatedAt: now, } groupData, err := json.Marshal(adminGroup) if err != nil { return nil, fmt.Errorf("failed to marshal admin group: %v", err) } err = db.Update(func(txn *badger.Txn) error { - return txn.Set([]byte(GroupStorageKey(adminGroupUUID)), groupData) + return txn.Set([]byte(auth.GroupStorageKey(adminGroupUUID)), groupData) }) if err != nil { return nil, fmt.Errorf("failed to store admin group: %v", err) @@ -153,27 +154,37 @@ func NewServer(config *types.Config) (*Server, error) { // Create root user rootUUID := uuid.NewString() - hashedNickname := utils.HashUserNickname("root") // Adjust if function name differs + hashedNickname := utils.HashUserNickname("root") rootUser := types.User{ - UUID: rootUUID, - Nickname: hashedNickname, - Groups: []string{adminGroupUUID}, - CreatedAt: now, // Add if field exists; remove otherwise + UUID: rootUUID, + NicknameHash: hashedNickname, + Groups: []string{adminGroupUUID}, + CreatedAt: now, + UpdatedAt: now, } userData, err := json.Marshal(rootUser) if err != nil { return nil, fmt.Errorf("failed to marshal root user: %v", err) } err = db.Update(func(txn *badger.Txn) error { - return txn.Set([]byte(UserStorageKey(rootUUID)), userData) + return txn.Set([]byte(auth.UserStorageKey(rootUUID)), userData) }) if err != nil { return nil, fmt.Errorf("failed to store root user: %v", err) } - // Optionally update group members if bidirectional - // adminGroup.Members = append(adminGroup.Members, rootUUID) - // Update group in DB if needed... + // Update admin group to include root user (bidirectional) + adminGroup.Members = append(adminGroup.Members, rootUUID) + groupData, err = json.Marshal(adminGroup) + if err != nil { + return nil, fmt.Errorf("failed to marshal updated admin group: %v", err) + } + err = db.Update(func(txn *badger.Txn) error { + return txn.Set([]byte(auth.GroupStorageKey(adminGroupUUID)), groupData) + }) + if err != nil { + return nil, fmt.Errorf("failed to update admin group: %v", err) + } // Generate and store API token scopes := []string{"admin", "read", "write", "create", "delete"}