github.com/louisevanderlith/droxolite@v1.20.2/mix/mods.go (about) 1 package mix 2 3 import ( 4 "github.com/coreos/go-oidc" 5 "net/http" 6 ) 7 8 //ModFunc can be used to add additional values to the view bag before rendering 9 type ModFunc func(b Bag, r *http.Request) 10 11 func EndpointMod(endpoints map[string]string) ModFunc { 12 return func(b Bag, r *http.Request) { 13 b.SetValue("Endpoints", endpoints) 14 } 15 } 16 17 func IdentityMod(clientId string) ModFunc { 18 return func(b Bag, r *http.Request) { 19 b.SetValue("ClientID", clientId) 20 21 tkn := r.Context().Value("Token") 22 23 if tkn == nil { 24 return 25 } 26 27 b.SetValue("Token", tkn) 28 29 tknVal := r.Context().Value("IDToken") 30 31 if tknVal == nil { 32 return 33 } 34 35 idToken := tknVal.(*oidc.IDToken) 36 claims := make(map[string]interface{}) 37 err := idToken.Claims(&claims) 38 39 if err != nil { 40 panic(err) 41 return 42 } 43 44 b.SetValue("User", claims) 45 } 46 }