Memebrships: Refactor Store interface
Use unified memberships table.
Add few internal API endpoints.
Change-Id: I80ac5a0f5c262e04d7898cca571b938a35d68d39
diff --git a/core/installer/tasks/infra.go b/core/installer/tasks/infra.go
index d69ba3a..907bba0 100644
--- a/core/installer/tasks/infra.go
+++ b/core/installer/tasks/infra.go
@@ -10,7 +10,19 @@
"github.com/giolekva/pcloud/core/installer/soft"
)
-var initGroups = []string{"admin"}
+type group struct {
+ Id string `json:"id"`
+ Title string `json:"title"`
+ Description string `json:"description"`
+}
+
+var initGroups = []group{
+ group{
+ "admin",
+ "Admin",
+ "Administrators",
+ },
+}
func CreateRepoClient(env installer.EnvConfig, st *state) Task {
t := newLeafTask("Create repo client", func() error {
@@ -77,9 +89,9 @@
}
type firstAccount struct {
- Created bool `json:"created"`
- Domain string `json:"domain"`
- Groups []string `json:"groups"`
+ Created bool `json:"created"`
+ Domain string `json:"domain"`
+ Groups []group `json:"groups"`
}
func ConfigureFirstAccount(env installer.EnvConfig, st *state) Task {
@@ -407,11 +419,15 @@
if env.PrivateDomain != "" {
network = "Private"
}
+ var initGroupIds []string
+ for _, g := range initGroups {
+ initGroupIds = append(initGroupIds, g.Id)
+ }
if _, err := st.appManager.Install(app, instanceId, appDir, namespace, map[string]any{
"network": network,
"repoAddr": st.ssClient.GetRepoAddress("config"),
"sshPrivateKey": string(keys.RawPrivateKey()),
- "authGroups": strings.Join(initGroups, ","),
+ "authGroups": strings.Join(initGroupIds, ","),
}); err != nil {
return err
}