+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
6
<label for="name">repo name</label>
7
7
<input type="text" id="name" name="name" required />
8
8
9
-
<label for="domain">domain</label>
10
-
<input type="domain" id="domain" name="domain" required />
9
+
<br>
11
10
12
-
<button type="submit">create repo</button>
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
+
13
23
</form>
14
24
{{end}}
+10
-1
appview/state/state.go
+10
-1
appview/state/state.go
···
490
490
func (s *State) AddRepo(w http.ResponseWriter, r *http.Request) {
491
491
switch r.Method {
492
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
+
493
501
s.pages.NewRepo(w, pages.NewRepoParams{
494
-
LoggedInUser: s.auth.GetUser(r),
502
+
LoggedInUser: user,
503
+
Knots: knots,
495
504
})
496
505
case http.MethodPost:
497
506
user := s.auth.GetUser(r)
+4
rbac/rbac.go
+4
rbac/rbac.go
···
80
80
return err
81
81
}
82
82
83
+
func (e *Enforcer) GetDomainsForUser(did string) ([]string, error) {
84
+
return e.E.Enforcer.GetDomainsForUser(did)
85
+
}
86
+
83
87
func (e *Enforcer) AddOwner(domain, owner string) error {
84
88
_, err := e.E.AddGroupingPolicy(owner, "server:owner", domain)
85
89
return err