diff options
author | Alex Moon <moonmeister@users.noreply.github.com> | 2017-09-06 13:23:14 -0700 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2017-09-06 13:23:14 -0700 |
commit | cb266eb942789dc60e6b61ec9c7f2e35e43de0ce (patch) | |
tree | ac936afb13ea394199495d3463d697887c24879d /web/web.go | |
parent | 66a4d0112587608533aa744578d2db18bd88db56 (diff) | |
download | chat-cb266eb942789dc60e6b61ec9c7f2e35e43de0ce.tar.gz chat-cb266eb942789dc60e6b61ec9c7f2e35e43de0ce.tar.bz2 chat-cb266eb942789dc60e6b61ec9c7f2e35e43de0ce.zip |
[PLT-959] Browser Compatibility (#6945)
* Error page implimentation
* Update Browser Compatibility check to check Chrome, FF, IE, Edge, and Safai
* Update strings with proper edge version
* undo uneeded changes and move to go template.
* more unneeded additions
* eliminate js and add local triangle
* fix typo
* Correct debug logging of browser version
* Modify Browser Check to pass user_agent object only and write test.
* Fix chrome version typo and correct testing change that broke chrome UA chack
* simplity browser version detection by using maps instead of string splitting
Diffstat (limited to 'web/web.go')
-rw-r--r-- | web/web.go | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/web/web.go b/web/web.go index e70129221..221e1dc1c 100644 --- a/web/web.go +++ b/web/web.go @@ -5,6 +5,7 @@ package web import ( "net/http" + "strconv" "strings" "github.com/NYTimes/gziphandler" @@ -46,19 +47,28 @@ func staticHandler(handler http.Handler) http.Handler { }) } -var browsersNotSupported string = "MSIE/8;MSIE/9;MSIE/10;Internet Explorer/8;Internet Explorer/9;Internet Explorer/10;Safari/7;Safari/8" +//map should be of minimum required browser version. +//var browsersNotSupported string = "MSIE/11;Internet Explorer/11;Safari/9;Chrome/43;Edge/15;Firefox/52" +//var browserMinimumSupported = [6]string{"MSIE/11", "Internet Explorer/11", "Safari/9", "Chrome/43", "Edge/15", "Firefox/52"} +var browserMinimumSupported = map[string]int{ + "MSIE": 11, + "Internet Explorer": 11, + "Safari": 9, + "Chrome": 43, + "Edge": 15, + "Firefox": 52, +} -func CheckBrowserCompatability(c *api.Context, r *http.Request) bool { - ua := user_agent.New(r.UserAgent()) +func CheckBrowserCompatability(ua *user_agent.UserAgent) bool { bname, bversion := ua.Browser() - browsers := strings.Split(browsersNotSupported, ";") - for _, browser := range browsers { - version := strings.Split(browser, "/") + l4g.Debug("Detected Browser: %v %v", bname, bversion) - if strings.HasPrefix(bname, version[0]) && strings.HasPrefix(bversion, version[1]) { - return false - } + curVersion := strings.Split(bversion, ".") + intCurVersion, _ := strconv.Atoi(curVersion[0]) + + if version, exist := browserMinimumSupported[bname]; exist && intCurVersion < version { + return false } return true @@ -66,10 +76,12 @@ func CheckBrowserCompatability(c *api.Context, r *http.Request) bool { } func root(c *api.Context, w http.ResponseWriter, r *http.Request) { - if !CheckBrowserCompatability(c, r) { + if !CheckBrowserCompatability(user_agent.New(r.UserAgent())) { w.Header().Set("Cache-Control", "no-store") - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(c.T("web.check_browser_compatibility.app_error"))) + page := utils.NewHTMLTemplate("unsupported_browser", c.Locale) + page.Props["Title"] = c.T("web.error.unsupported_browser.title") + page.Props["Message"] = c.T("web.error.unsupported_browser.message") + page.RenderToWriter(w) return } |