tangled
alpha
login
or
join now
lewis.moe
/
tangled-core
0
fork
atom
Monorepo for Tangled
0
fork
atom
overview
issues
1
pulls
pipelines
list valid knots in repo/new page
Akshay
1 year ago
4b3dd514
ce997e6d
+28
-4
4 changed files
expand all
collapse all
unified
split
appview
pages
pages.go
templates
repo
new.html
state
state.go
rbac
rbac.go
+1
appview/pages/pages.go
···
132
132
133
133
type NewRepoParams struct {
134
134
LoggedInUser *auth.User
135
135
+
Knots []string
135
136
}
136
137
137
138
func (p *Pages) NewRepo(w io.Writer, params NewRepoParams) error {
+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
9
-
<label for="domain">domain</label>
10
10
-
<input type="domain" id="domain" name="domain" required />
9
9
+
<br>
11
10
12
12
-
<button type="submit">create repo</button>
11
11
+
<fieldset>
12
12
+
<legend>select a knot:</legend>
13
13
+
{{ range .Knots }}
14
14
+
<label>
15
15
+
<input type="radio" name="domain" value="{{ . }}"> {{ . }}
16
16
+
</label><br>
17
17
+
<button type="submit">create repo</button>
18
18
+
{{ else }}
19
19
+
<p>no knots available</p>
20
20
+
{{ end }}
21
21
+
</fieldset>
22
22
+
13
23
</form>
14
24
{{end}}
+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
493
+
user := s.auth.GetUser(r)
494
494
+
knots, err := s.enforcer.GetDomainsForUser(user.Did)
495
495
+
496
496
+
if err != nil {
497
497
+
log.Println("invalid user?", err)
498
498
+
return
499
499
+
}
500
500
+
493
501
s.pages.NewRepo(w, pages.NewRepoParams{
494
494
-
LoggedInUser: s.auth.GetUser(r),
502
502
+
LoggedInUser: user,
503
503
+
Knots: knots,
495
504
})
496
505
case http.MethodPost:
497
506
user := s.auth.GetUser(r)
+4
rbac/rbac.go
···
80
80
return err
81
81
}
82
82
83
83
+
func (e *Enforcer) GetDomainsForUser(did string) ([]string, error) {
84
84
+
return e.E.Enforcer.GetDomainsForUser(did)
85
85
+
}
86
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