From 6a1755d2e32c3f3bcaa67c33f32cb5eb5ab76ea2 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Fri, 16 Oct 2015 09:10:54 -0700 Subject: Inital support for multi-tab loging --- web/web.go | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 72 insertions(+), 12 deletions(-) (limited to 'web/web.go') diff --git a/web/web.go b/web/web.go index 7ab50a073..1f7c3ae5e 100644 --- a/web/web.go +++ b/web/web.go @@ -32,10 +32,22 @@ func NewHtmlTemplatePage(templateName string, title string) *HtmlTemplatePage { props := make(map[string]string) props["Title"] = title - return &HtmlTemplatePage{TemplateName: templateName, Props: props, ClientProps: utils.ClientProperties} + return &HtmlTemplatePage{TemplateName: templateName, Props: props, ClientCfg: utils.ClientCfg} } func (me *HtmlTemplatePage) Render(c *api.Context, w http.ResponseWriter) { + //if me.Team != nil { + //me.Team.Sanitize() + //} + + if me.User != nil { + me.User.Sanitize(map[string]bool{}) + } + + if me.Session != nil { + me.Session.Sanitize() + } + if err := Templates.ExecuteTemplate(w, me.TemplateName, me); err != nil { c.SetUnknownError(me.TemplateName, err.Error()) } @@ -139,6 +151,40 @@ func CheckBrowserCompatability(c *api.Context, r *http.Request) bool { } +// func getTeamAndUserStart(c *api.Context) (store.StoreChannel, store.StoreChannel) { +// teamChan := api.Srv.Store.Team().Get(c.Session.TeamId) +// userChan := api.Srv.Store.User().Get(c.Session.UserId) +// return teamChan, userChan +// } + +// func getTeamAndUserWait(c *api.Context, team store.StoreChannel, user store.StoreChannel) (*model.Team, *model.User) { +// if tr := <-team; tr.Err != nil { +// c.Err = tr.Err +// return nil, nil +// } else { +// if ur := <-user; ur.Err != nil { +// c.Err = ur.Err +// return nil, nil +// } else { +// return tr.Data.(*model.Team), ur.Data.(*model.User) +// } +// } +// } + +func getTeamAndUser(c *api.Context) (*model.Team, *model.User) { + if tr := <-api.Srv.Store.Team().Get(c.Session.TeamId); tr.Err != nil { + c.Err = tr.Err + return nil, nil + } else { + if ur := <-api.Srv.Store.User().Get(c.Session.UserId); ur.Err != nil { + c.Err = ur.Err + return nil, nil + } else { + return tr.Data.(*model.Team), ur.Data.(*model.User) + } + } +} + func root(c *api.Context, w http.ResponseWriter, r *http.Request) { if !CheckBrowserCompatability(c, r) { @@ -149,7 +195,15 @@ func root(c *api.Context, w http.ResponseWriter, r *http.Request) { page := NewHtmlTemplatePage("signup_team", "Signup") page.Render(c, w) } else { + team, user := getTeamAndUser(c) + if c.Err != nil { + return + } + page := NewHtmlTemplatePage("home", "Home") + page.Team = team + page.User = user + page.Session = &c.Session page.Props["TeamURL"] = c.GetTeamURL() page.Render(c, w) } @@ -321,8 +375,10 @@ func getChannel(c *api.Context, w http.ResponseWriter, r *http.Request) { name := params["channelname"] teamName := params["team"] - var team *model.Team - teamChan := api.Srv.Store.Team().Get(c.Session.TeamId) + team, user := getTeamAndUser(c) + if c.Err != nil { + return + } var channelId string if result := <-api.Srv.Store.Channel().CheckPermissionsToByName(c.Session.TeamId, name, c.Session.UserId); result.Err != nil { @@ -332,13 +388,6 @@ func getChannel(c *api.Context, w http.ResponseWriter, r *http.Request) { channelId = result.Data.(string) } - if tResult := <-teamChan; tResult.Err != nil { - c.Err = tResult.Err - return - } else { - team = tResult.Data.(*model.Team) - } - if team.Name != teamName { l4g.Error("It appears you are logged into " + team.Name + ", but are trying to access " + teamName) http.Redirect(w, r, c.GetSiteURL()+"/"+team.Name+"/channels/town-square", http.StatusFound) @@ -392,7 +441,7 @@ func getChannel(c *api.Context, w http.ResponseWriter, r *http.Request) { } page := NewHtmlTemplatePage("channel", "") - page.Props["Title"] = name + " - " + team.DisplayName + " " + page.ClientProps["SiteName"] + page.Props["Title"] = name + " - " + team.DisplayName + " " + page.ClientCfg["SiteName"] page.Props["TeamDisplayName"] = team.DisplayName page.Props["TeamName"] = team.Name page.Props["TeamType"] = team.Type @@ -400,6 +449,9 @@ func getChannel(c *api.Context, w http.ResponseWriter, r *http.Request) { page.Props["ChannelName"] = name page.Props["ChannelId"] = channelId page.Props["UserId"] = c.Session.UserId + page.Team = team + page.User = user + page.Session = &c.Session page.Render(c, w) } @@ -498,7 +550,7 @@ func resetPassword(c *api.Context, w http.ResponseWriter, r *http.Request) { } page := NewHtmlTemplatePage("password_reset", "") - page.Props["Title"] = "Reset Password " + page.ClientProps["SiteName"] + page.Props["Title"] = "Reset Password " + page.ClientCfg["SiteName"] page.Props["TeamDisplayName"] = teamDisplayName page.Props["TeamName"] = teamName page.Props["Hash"] = hash @@ -699,7 +751,15 @@ func adminConsole(c *api.Context, w http.ResponseWriter, r *http.Request) { return } + team, user := getTeamAndUser(c) + if c.Err != nil { + return + } + page := NewHtmlTemplatePage("admin_console", "Admin Console") + page.User = user + page.Team = team + page.Session = &c.Session page.Render(c, w) } -- cgit v1.2.3-1-g7c22