From 4b3dd514fd05294ab82ac06feeee79b63f1d6191 Mon Sep 17 00:00:00 2001 From: Akshay Date: Wed, 12 Feb 2025 22:25:00 +0000 Subject: [PATCH] list valid knots in repo/new page --- appview/pages/pages.go | 1 + appview/pages/templates/repo/new.html | 16 +++++++++++++--- appview/state/state.go | 11 ++++++++++- rbac/rbac.go | 4 ++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/appview/pages/pages.go b/appview/pages/pages.go index e2f0c58c..6c44f14b 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -132,6 +132,7 @@ func (p *Pages) Knot(w io.Writer, params KnotParams) error { type NewRepoParams struct { LoggedInUser *auth.User + Knots []string } func (p *Pages) NewRepo(w io.Writer, params NewRepoParams) error { diff --git a/appview/pages/templates/repo/new.html b/appview/pages/templates/repo/new.html index f4fe0d87..ab2c417a 100644 --- a/appview/pages/templates/repo/new.html +++ b/appview/pages/templates/repo/new.html @@ -6,9 +6,19 @@ - - +
+ +
+ select a knot: + {{ range .Knots }} +
+ + {{ else }} +

no knots available

+ {{ end }} +
- {{end}} diff --git a/appview/state/state.go b/appview/state/state.go index c901b71c..77980a22 100644 --- a/appview/state/state.go +++ b/appview/state/state.go @@ -490,8 +490,17 @@ func (s *State) RemoveMember(w http.ResponseWriter, r *http.Request) { func (s *State) AddRepo(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: + user := s.auth.GetUser(r) + knots, err := s.enforcer.GetDomainsForUser(user.Did) + + if err != nil { + log.Println("invalid user?", err) + return + } + s.pages.NewRepo(w, pages.NewRepoParams{ - LoggedInUser: s.auth.GetUser(r), + LoggedInUser: user, + Knots: knots, }) case http.MethodPost: user := s.auth.GetUser(r) diff --git a/rbac/rbac.go b/rbac/rbac.go index bc8e854e..a08e4fad 100644 --- a/rbac/rbac.go +++ b/rbac/rbac.go @@ -80,6 +80,10 @@ func (e *Enforcer) AddDomain(domain string) error { return err } +func (e *Enforcer) GetDomainsForUser(did string) ([]string, error) { + return e.E.Enforcer.GetDomainsForUser(did) +} + func (e *Enforcer) AddOwner(domain, owner string) error { _, err := e.E.AddGroupingPolicy(owner, "server:owner", domain) return err -- 2.51.2