forked from tangled.org/core
this repo has no description

list valid knots in repo/new page

Changed files
+28 -4
appview
pages
templates
repo
state
rbac
+1
appview/pages/pages.go
···
type NewRepoParams struct {
LoggedInUser *auth.User
}
func (p *Pages) NewRepo(w io.Writer, params NewRepoParams) error {
···
type NewRepoParams struct {
LoggedInUser *auth.User
+
Knots []string
}
func (p *Pages) NewRepo(w io.Writer, params NewRepoParams) error {
+13 -3
appview/pages/templates/repo/new.html
···
<label for="name">repo name</label>
<input type="text" id="name" name="name" required />
-
<label for="domain">domain</label>
-
<input type="domain" id="domain" name="domain" required />
-
<button type="submit">create repo</button>
</form>
{{end}}
···
<label for="name">repo name</label>
<input type="text" id="name" name="name" required />
+
<br>
+
<fieldset>
+
<legend>select a knot:</legend>
+
{{ range .Knots }}
+
<label>
+
<input type="radio" name="domain" value="{{ . }}"> {{ . }}
+
</label><br>
+
<button type="submit">create repo</button>
+
{{ else }}
+
<p>no knots available</p>
+
{{ end }}
+
</fieldset>
+
</form>
{{end}}
+10 -1
appview/state/state.go
···
func (s *State) AddRepo(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodGet:
s.pages.NewRepo(w, pages.NewRepoParams{
-
LoggedInUser: s.auth.GetUser(r),
})
case http.MethodPost:
user := s.auth.GetUser(r)
···
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: user,
+
Knots: knots,
})
case http.MethodPost:
user := s.auth.GetUser(r)
+4
rbac/rbac.go
···
return err
}
func (e *Enforcer) AddOwner(domain, owner string) error {
_, err := e.E.AddGroupingPolicy(owner, "server:owner", domain)
return err
···
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