Fix subscriber templates
This commit is contained in:
parent
98114bfab1
commit
0e9ec59c7c
5 changed files with 44 additions and 11 deletions
|
@ -50,6 +50,7 @@ var (
|
||||||
"username": username,
|
"username": username,
|
||||||
"isAdmin": isAdmin,
|
"isAdmin": isAdmin,
|
||||||
"isParticipant": isParticipant,
|
"isParticipant": isParticipant,
|
||||||
|
"isSubscriber": isSubscriber,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -58,13 +59,17 @@ func username(claims jwt.MapClaims) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func isAdmin(claims jwt.MapClaims) bool {
|
func isAdmin(claims jwt.MapClaims) bool {
|
||||||
return claims["admin"].(bool)
|
return claims["role"].(string) == "administrator"
|
||||||
}
|
}
|
||||||
|
|
||||||
func isParticipant(claims jwt.MapClaims) bool {
|
func isParticipant(claims jwt.MapClaims) bool {
|
||||||
return claims["role"].(string) == "participant"
|
return claims["role"].(string) == "participant"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isSubscriber(claims jwt.MapClaims) bool {
|
||||||
|
return claims["role"].(string) == "subscriber"
|
||||||
|
}
|
||||||
|
|
||||||
func trim(text string) string {
|
func trim(text string) string {
|
||||||
if len(text) > MaxTextLength {
|
if len(text) > MaxTextLength {
|
||||||
return text[0:MaxTextLength] + "…"
|
return text[0:MaxTextLength] + "…"
|
||||||
|
|
|
@ -252,36 +252,36 @@ func (rend *HTMLRenderer) Render(w http.ResponseWriter, r *http.Request, data in
|
||||||
if data != nil && isErrorType(data) {
|
if data != nil && isErrorType(data) {
|
||||||
session, err := store.Get(r, "flash-session")
|
session, err := store.Get(r, "flash-session")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rend.writeError(w, r, &htmlTemplateData{err, nil, nil, nil})
|
rend.writeError(w, r, &htmlTemplateData{err, nil, claims, nil})
|
||||||
}
|
}
|
||||||
fm := session.Flashes()
|
fm := session.Flashes()
|
||||||
err = session.Save(r, w)
|
err = session.Save(r, w)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rend.writeError(w, r, &htmlTemplateData{err, nil, nil, nil})
|
rend.writeError(w, r, &htmlTemplateData{err, nil, claims, fm})
|
||||||
}
|
}
|
||||||
rend.writeError(w, r, &htmlTemplateData{data.(error), nil, claims, fm})
|
rend.writeError(w, r, &htmlTemplateData{data.(error), nil, claims, fm})
|
||||||
} else {
|
} else {
|
||||||
t, ok := rend.templates[options[0]["tpl_content"][0]]
|
t, ok := rend.templates[options[0]["tpl_content"][0]]
|
||||||
if !ok {
|
if !ok {
|
||||||
err := fmt.Errorf("Template %s not found", options[0]["tpl_content"][0])
|
err := fmt.Errorf("Template %s not found", options[0]["tpl_content"][0])
|
||||||
rend.writeError(w, r, &htmlTemplateData{err, nil, nil, nil})
|
rend.writeError(w, r, &htmlTemplateData{err, nil, claims, nil})
|
||||||
}
|
}
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||||
|
|
||||||
session, err := store.Get(r, "flash-session")
|
session, err := store.Get(r, "flash-session")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rend.writeError(w, r, &htmlTemplateData{err, nil, nil, nil})
|
rend.writeError(w, r, &htmlTemplateData{err, nil, claims, nil})
|
||||||
}
|
}
|
||||||
fm := session.Flashes()
|
fm := session.Flashes()
|
||||||
err = session.Save(r, w)
|
err = session.Save(r, w)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rend.writeError(w, r, &htmlTemplateData{err, nil, nil, nil})
|
rend.writeError(w, r, &htmlTemplateData{err, nil, claims, fm})
|
||||||
}
|
}
|
||||||
|
|
||||||
err = t.ExecuteTemplate(w, options[0]["tpl_layout"][0], &htmlTemplateData{data, options[0], claims, fm})
|
err = t.ExecuteTemplate(w, options[0]["tpl_layout"][0], &htmlTemplateData{data, options[0], claims, fm})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rend.writeError(w, r, &htmlTemplateData{err, nil, nil, nil})
|
rend.writeError(w, r, &htmlTemplateData{err, nil, claims, fm})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,11 @@
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
|
{{if .Claims|isSubscriber}}
|
||||||
|
<li><a class="nav-link" href="/logout">Esci</a></li>
|
||||||
|
{{else}}
|
||||||
<li><a class="nav-link" href="/logout">Disconnetti {{.Claims|username}}</a></li>
|
<li><a class="nav-link" href="/logout">Disconnetti {{.Claims|username}}</a></li>
|
||||||
|
{{end}}
|
||||||
</ul>
|
</ul>
|
||||||
</div><!--/.nav-collapse -->
|
</div><!--/.nav-collapse -->
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
@ -1,16 +1,25 @@
|
||||||
{{ define "content" }}
|
{{ define "content" }}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
|
{{$isSubscriber := .Claims|isSubscriber}}
|
||||||
|
|
||||||
{{$update := .Options.Get "update"}}
|
{{$update := .Options.Get "update"}}
|
||||||
|
|
||||||
{{if $update}}
|
{{if not $isSubscriber}}
|
||||||
|
|
||||||
|
{{if $update}}
|
||||||
{{template "breadcrumb" toSlice "Scuole" (all "School") (.Data|string) (.Data.ID|show "School") "Aggiorna" "current"}}
|
{{template "breadcrumb" toSlice "Scuole" (all "School") (.Data|string) (.Data.ID|show "School") "Aggiorna" "current"}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{template "breadcrumb" toSlice "Scuole" (all "School") "Aggiungi" "current"}}
|
{{template "breadcrumb" toSlice "Scuole" (all "School") "Aggiungi" "current"}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{if $isSubscriber}}
|
||||||
|
{{template "add_update_header" dict "update" $update "addTitle" "Iscrivi scuola" "updateTitle" (printf "Aggiorna scuola %s" (.Data|string))}}
|
||||||
|
{{else}}
|
||||||
{{template "add_update_header" dict "update" $update "addTitle" "Crea nuova scuola" "updateTitle" (printf "Aggiorna scuola %s" (.Data|string))}}
|
{{template "add_update_header" dict "update" $update "addTitle" "Crea nuova scuola" "updateTitle" (printf "Aggiorna scuola %s" (.Data|string))}}
|
||||||
|
{{end}}
|
||||||
{{$form := "form_add_update"}}
|
{{$form := "form_add_update"}}
|
||||||
<form
|
<form
|
||||||
class="needs-validation"
|
class="needs-validation"
|
||||||
|
@ -36,7 +45,7 @@
|
||||||
{{$options := ` { name: "Email",id: "school_email",label: "Indirizzo email",placeholder: "Inserire l'indirizzo di posta istituzionale",type: "email",required: "true"} `}}
|
{{$options := ` { name: "Email",id: "school_email",label: "Indirizzo email",placeholder: "Inserire l'indirizzo di posta istituzionale",type: "email",required: "true"} `}}
|
||||||
{{template "input" dict "options" ($options|yaml) "value" (.Data|field "Email") "update" $update}}
|
{{template "input" dict "options" ($options|yaml) "value" (.Data|field "Email") "update" $update}}
|
||||||
|
|
||||||
{{if .Data.Role|isSubscriber}}
|
{{if .Claims|isSubscriber}}
|
||||||
{{$options := ` { saveTitle: "Invia iscrizione", model: "School" } `}}
|
{{$options := ` { saveTitle: "Invia iscrizione", model: "School" } `}}
|
||||||
{{template "submit_cancel_buttons" dict "options" ($options|yaml) "id" (.Data|field "ID") "update" $update}}
|
{{template "submit_cancel_buttons" dict "options" ($options|yaml) "id" (.Data|field "ID") "update" $update}}
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|
|
@ -1,7 +1,22 @@
|
||||||
{{ define "content" }}
|
{{ define "content" }}
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
{{if .Claims|isSubscriber}}
|
||||||
|
<p>
|
||||||
|
Grazie per aver iscritto la scuola <strong>{{.Data.Name}}</strong>
|
||||||
|
alle Olimpiadi di Economia e Finanza.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Una mail con le credenziali di accesso è stata inviata
|
||||||
|
all'indirizzo <strong>{{.Data.Email}}</strong>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Ora è possibile <a href="/logout">uscire</a> da questa sessione e
|
||||||
|
utilizzare le credenziali ricevute per iscrivere gli studenti alla
|
||||||
|
competizione.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{{else}}
|
||||||
{{template "breadcrumb" toSlice "Scuole" (all "School") (.Data|string|trim) "current"}}
|
{{template "breadcrumb" toSlice "Scuole" (all "School") (.Data|string|trim) "current"}}
|
||||||
{{template "show_header" dict "title" (.Data|string|trim) "updatePath" (.Data.ID|update "School") "deletePath" (.Data.ID|delete "School")}}
|
{{template "show_header" dict "title" (.Data|string|trim) "updatePath" (.Data.ID|update "School") "deletePath" (.Data.ID|delete "School")}}
|
||||||
|
|
||||||
|
@ -26,7 +41,7 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
Loading…
Reference in a new issue