From 40921072622ff7227011223c7e64174aded17ee6 Mon Sep 17 00:00:00 2001 From: Muhammad S <841955+mhd-sln@users.noreply.github.com> Date: Sun, 27 Nov 2022 12:21:04 +0200 Subject: [PATCH 1/3] [MM-48409] url mapping to configured path for cws --- api4/user.go | 17 ++++++++++++++++- app/login.go | 1 - model/feature_flags.go | 3 +++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/api4/user.go b/api4/user.go index 439660e991..7cda65e422 100644 --- a/api4/user.go +++ b/api4/user.go @@ -1914,6 +1914,10 @@ func login(c *Context, w http.ResponseWriter, r *http.Request) { } func loginCWS(c *Context, w http.ResponseWriter, r *http.Request) { + campaignToURL := map[string]string{ + "focalboard": "/boards", + } + if !c.App.Channels().License().IsCloud() { c.Err = model.NewAppError("loginCWS", "api.user.login_cws.license.error", nil, "", http.StatusUnauthorized) return @@ -1921,6 +1925,7 @@ func loginCWS(c *Context, w http.ResponseWriter, r *http.Request) { r.ParseForm() var loginID string var token string + var campaign string if len(r.Form) > 0 { for key, value := range r.Form { if key == "login_id" { @@ -1929,6 +1934,9 @@ func loginCWS(c *Context, w http.ResponseWriter, r *http.Request) { if key == "cws_token" { token = value[0] } + if key == "utm_campaign" { + campaign = value[0] + } } } @@ -1952,7 +1960,14 @@ func loginCWS(c *Context, w http.ResponseWriter, r *http.Request) { } c.LogAuditWithUserId(user.Id, "success") c.App.AttachSessionCookies(c.AppContext, w, r) - http.Redirect(w, r, *c.App.Config().ServiceSettings.SiteURL, http.StatusFound) + + redirectURL := *c.App.Config().ServiceSettings.SiteURL + if len(campaign) > 0 { + if url, ok := campaignToURL[campaign]; ok { + redirectURL += url + } + } + http.Redirect(w, r, redirectURL , http.StatusFound) } func logout(c *Context, w http.ResponseWriter, r *http.Request) { diff --git a/app/login.go b/app/login.go index bd63787546..16cc2d515f 100644 --- a/app/login.go +++ b/app/login.go @@ -63,7 +63,6 @@ func (a *App) AuthenticateUserForLogin(c *request.Context, id, loginId, password if user, err = a.GetUserForLogin(id, loginId); err != nil { return nil, err } - // CWS login allow to use the one-time token to login the users when they're redirected to their // installation for the first time if IsCWSLogin(a, cwsToken) { diff --git a/model/feature_flags.go b/model/feature_flags.go index ae1005b30d..8bce7a1a88 100644 --- a/model/feature_flags.go +++ b/model/feature_flags.go @@ -76,6 +76,8 @@ type FeatureFlags struct { ThreadsEverywhere bool GlobalDrafts bool + + UrlMappingForCWS bool } func (f *FeatureFlags) SetDefaults() { @@ -105,6 +107,7 @@ func (f *FeatureFlags) SetDefaults() { f.ReduceOnBoardingTaskList = false f.ThreadsEverywhere = false f.GlobalDrafts = false + f.UrlMappingForCWS = false } func (f *FeatureFlags) Plugins() map[string]string { From a71adb08e01cde5e1c5198e4746cf3db3cda4d13 Mon Sep 17 00:00:00 2001 From: Muhammad S <841955+mhd-sln@users.noreply.github.com> Date: Sun, 27 Nov 2022 12:43:53 +0200 Subject: [PATCH 2/3] [MM-48409] lint and vet fix --- api4/user.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api4/user.go b/api4/user.go index 7cda65e422..9d3ca204d2 100644 --- a/api4/user.go +++ b/api4/user.go @@ -1962,12 +1962,12 @@ func loginCWS(c *Context, w http.ResponseWriter, r *http.Request) { c.App.AttachSessionCookies(c.AppContext, w, r) redirectURL := *c.App.Config().ServiceSettings.SiteURL - if len(campaign) > 0 { + if campaign != "" { if url, ok := campaignToURL[campaign]; ok { redirectURL += url } } - http.Redirect(w, r, redirectURL , http.StatusFound) + http.Redirect(w, r, redirectURL, http.StatusFound) } func logout(c *Context, w http.ResponseWriter, r *http.Request) { From 62a1601331af4e9ee2df4bb9d6e2fe8ae9f88761 Mon Sep 17 00:00:00 2001 From: Muhammad S <841955+mhd-sln@users.noreply.github.com> Date: Wed, 30 Nov 2022 19:03:06 +0200 Subject: [PATCH 3/3] [MM-48409] code review fix --- app/login.go | 1 + model/feature_flags.go | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/login.go b/app/login.go index 16cc2d515f..bd63787546 100644 --- a/app/login.go +++ b/app/login.go @@ -63,6 +63,7 @@ func (a *App) AuthenticateUserForLogin(c *request.Context, id, loginId, password if user, err = a.GetUserForLogin(id, loginId); err != nil { return nil, err } + // CWS login allow to use the one-time token to login the users when they're redirected to their // installation for the first time if IsCWSLogin(a, cwsToken) { diff --git a/model/feature_flags.go b/model/feature_flags.go index 8bce7a1a88..ae1005b30d 100644 --- a/model/feature_flags.go +++ b/model/feature_flags.go @@ -76,8 +76,6 @@ type FeatureFlags struct { ThreadsEverywhere bool GlobalDrafts bool - - UrlMappingForCWS bool } func (f *FeatureFlags) SetDefaults() { @@ -107,7 +105,6 @@ func (f *FeatureFlags) SetDefaults() { f.ReduceOnBoardingTaskList = false f.ThreadsEverywhere = false f.GlobalDrafts = false - f.UrlMappingForCWS = false } func (f *FeatureFlags) Plugins() map[string]string {