Release 5 december 2022 - Agenda and Fleets fixes

This commit is contained in:
2022-12-05 20:06:22 +01:00
parent 203aadaee1
commit a3ee210547
18 changed files with 357 additions and 79 deletions

View File

@@ -9,6 +9,7 @@ import (
"git.coopgo.io/coopgo-apps/parcoursmob/utils/identification"
"git.coopgo.io/coopgo-platform/emailing"
"git.coopgo.io/coopgo-platform/groups-management/storage"
"github.com/coreos/go-oidc"
"github.com/spf13/viper"
)
@@ -35,6 +36,7 @@ func NewRenderer(global *viper.Viper, templates_dir string) *Renderer {
}
func (renderer *Renderer) Render(name string, w http.ResponseWriter, r *http.Request, files []string, state RenderState) {
genericFiles := renderer.ThemeConfig.GetStringSlice("views.generic.files")
prefixed_files := []string{}
@@ -49,6 +51,7 @@ func (renderer *Renderer) Render(name string, w http.ResponseWriter, r *http.Req
t := template.New(name).Funcs(
template.FuncMap{
"timeFrom": TimeFrom,
"timeFormat": TimeFormat,
"genderISO5218": GenderISO5218,
"dict": Dict,
"json": JSON,
@@ -66,6 +69,7 @@ func (renderer *Renderer) Render(name string, w http.ResponseWriter, r *http.Req
}
func (renderer *Renderer) RenderNoLayout(name string, w http.ResponseWriter, r *http.Request, files []string, state RenderState) {
prefixed_files := []string{}
for _, f := range files {
prefixed_files = append(prefixed_files, renderer.templateFile(f))
@@ -75,6 +79,7 @@ func (renderer *Renderer) RenderNoLayout(name string, w http.ResponseWriter, r *
t := template.New(name).Funcs(
template.FuncMap{
"timeFrom": TimeFrom,
"timeFormat": TimeFormat,
"genderISO5218": GenderISO5218,
"dict": Dict,
"json": JSON,
@@ -97,14 +102,34 @@ func (r *Renderer) templateFile(file string) string {
type RenderState struct {
icons.IconSet
LayoutState
Group any
Roles any
ViewState any // This is a state specific to a given view
UserID string
UserClaims map[string]any
Group storage.Group
Roles any
ViewState any // This is a state specific to a given view
}
func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) RenderState {
iconset := themeConfig.GetStringMapString("icons.svg")
// Get State elements from Request
var userid string
var claims map[string]any
u := r.Context().Value(identification.IdtokenKey)
if u != nil {
if current_user_token, ok := u.(*oidc.IDToken); ok {
userid = current_user_token.Subject
}
c := r.Context().Value(identification.ClaimsKey)
if c != nil {
if current_user_claims, ok := c.(map[string]any); ok {
claims = current_user_claims
}
}
}
g := r.Context().Value(identification.GroupKey)
if g == nil {
@@ -187,7 +212,6 @@ func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) Rende
})
}
/*************************** my code ******************************/
if modules["support"] != nil && modules["support"].(bool) {
ls.MenuItems = append(ls.MenuItems, MenuItem{
Title: "Support",
@@ -197,7 +221,6 @@ func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) Rende
})
}
/*************************** my code ******************************/
if modules["directory"] != nil && modules["directory"].(bool) {
ls.MenuItems = append(ls.MenuItems, MenuItem{
@@ -212,6 +235,8 @@ func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) Rende
IconSet: icons.NewIconSet(iconset),
Group: group,
Roles: roles,
UserID: userid,
UserClaims: claims,
LayoutState: ls,
}
}