+1
appview/pages/pages.go
+1
appview/pages/pages.go
+13
-3
appview/pages/templates/repo/new.html
+13
-3
appview/pages/templates/repo/new.html
···
6
<label for="name">repo name</label>
7
<input type="text" id="name" name="name" required />
8
9
+
<br>
10
11
+
<fieldset>
12
+
<legend>select a knot:</legend>
13
+
{{ range .Knots }}
14
+
<label>
15
+
<input type="radio" name="domain" value="{{ . }}"> {{ . }}
16
+
</label><br>
17
+
<button type="submit">create repo</button>
18
+
{{ else }}
19
+
<p>no knots available</p>
20
+
{{ end }}
21
+
</fieldset>
22
+
23
</form>
24
{{end}}
+10
-1
appview/state/state.go
+10
-1
appview/state/state.go
···
490
func (s *State) AddRepo(w http.ResponseWriter, r *http.Request) {
491
switch r.Method {
492
case http.MethodGet:
493
+
user := s.auth.GetUser(r)
494
+
knots, err := s.enforcer.GetDomainsForUser(user.Did)
495
+
496
+
if err != nil {
497
+
log.Println("invalid user?", err)
498
+
return
499
+
}
500
+
501
s.pages.NewRepo(w, pages.NewRepoParams{
502
+
LoggedInUser: user,
503
+
Knots: knots,
504
})
505
case http.MethodPost:
506
user := s.auth.GetUser(r)
+4
rbac/rbac.go
+4
rbac/rbac.go
···
80
return err
81
}
82
83
+
func (e *Enforcer) GetDomainsForUser(did string) ([]string, error) {
84
+
return e.E.Enforcer.GetDomainsForUser(did)
85
+
}
86
+
87
func (e *Enforcer) AddOwner(domain, owner string) error {
88
_, err := e.E.AddGroupingPolicy(owner, "server:owner", domain)
89
return err