diff options
Diffstat (limited to 'web/saml.go')
-rw-r--r-- | web/saml.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/web/saml.go b/web/saml.go index 9cf93bdab..f5400a378 100644 --- a/web/saml.go +++ b/web/saml.go @@ -32,6 +32,7 @@ func loginWithSaml(c *Context, w http.ResponseWriter, r *http.Request) { } action := r.URL.Query().Get("action") redirectTo := r.URL.Query().Get("redirect_to") + extensionId := r.URL.Query().Get("extension_id") relayProps := map[string]string{} relayState := "" @@ -47,6 +48,15 @@ func loginWithSaml(c *Context, w http.ResponseWriter, r *http.Request) { relayProps["redirect_to"] = redirectTo } + if len(extensionId) != 0 { + relayProps["extension_id"] = extensionId + err := c.App.ValidateExtension(extensionId) + if err != nil { + c.Err = err + return + } + } + if len(relayProps) > 0 { relayState = b64.StdEncoding.EncodeToString([]byte(model.MapToJson(relayProps))) } @@ -141,6 +151,13 @@ func completeSaml(c *Context, w http.ResponseWriter, r *http.Request) { if action == model.OAUTH_ACTION_MOBILE { ReturnStatusOK(w) + } else if action == model.OAUTH_ACTION_CLIENT { + err = c.App.SendMessageToExtension(w, relayProps["extension_id"], c.Session.Token) + + if err != nil { + c.Err = err + return + } } else { http.Redirect(w, r, c.GetSiteURLHeader(), http.StatusFound) } |