diff --git a/mattermost.go b/mattermost.go index 85263e7373..44eed457d1 100644 --- a/mattermost.go +++ b/mattermost.go @@ -542,6 +542,7 @@ func convertTeamTo30(primaryTeamName string, team *TeamForUpgrade, uniqueEmails for _, user := range users { shouldUpdateUser := false + shouldUpdateRole := false previousRole := user.Roles previousEmail := user.Email previousUsername := user.Username @@ -554,7 +555,7 @@ func convertTeamTo30(primaryTeamName string, team *TeamForUpgrade, uniqueEmails if model.IsInRole(user.Roles, model.ROLE_TEAM_ADMIN) { member.Roles = model.ROLE_TEAM_ADMIN user.Roles = "" - shouldUpdateUser = true + shouldUpdateRole = true } exists := false @@ -668,6 +669,25 @@ func convertTeamTo30(primaryTeamName string, team *TeamForUpgrade, uniqueEmails } } + if shouldUpdateRole { + if _, err := store.GetMaster().Exec(` + UPDATE Users + SET + Roles = '' + WHERE + Id = :Id + `, + map[string]interface{}{ + "Id": user.Id, + }, + ); err != nil { + l4g.Error("Failed to update user role %v details=%v", user.Email, err) + flushLogAndExit(1) + } + + l4g.Info("modified user_id=%v, changed roles from=%v to=%v", user.Id, previousRole, user.Roles) + } + uniqueEmails[user.Email] = true uniqueUsernames[user.Username] = true diff --git a/webapp/actions/global_actions.jsx b/webapp/actions/global_actions.jsx index 2e2b1b247c..91b51a9c22 100644 --- a/webapp/actions/global_actions.jsx +++ b/webapp/actions/global_actions.jsx @@ -394,11 +394,15 @@ export function newLocalizationSelected(locale) { } else { Client.getTranslations( I18n.getLanguageInfo(locale).url, - (data) => { + (data, res) => { + let translations = data; + if (!data && res.text) { + translations = JSON.parse(res.text); + } AppDispatcher.handleServerAction({ type: ActionTypes.RECEIVED_LOCALE, locale, - translations: data + translations }); }, (err) => { @@ -411,6 +415,12 @@ export function newLocalizationSelected(locale) { export function loadBrowserLocale() { let locale = (navigator.languages && navigator.languages.length > 0 ? navigator.languages[0] : (navigator.language || navigator.userLanguage)).split('-')[0]; + + const user = UserStore.getCurrentUser(); + if (user) { + locale = user.locale || locale; + } + if (!I18n.getLanguages()[locale]) { locale = 'en'; } diff --git a/webapp/components/login/login_controller.jsx b/webapp/components/login/login_controller.jsx index c4a76f9129..1b1f65436f 100644 --- a/webapp/components/login/login_controller.jsx +++ b/webapp/components/login/login_controller.jsx @@ -118,6 +118,7 @@ export default class LoginController extends React.Component { finishSignin() { GlobalActions.emitInitialLoad( () => { + GlobalActions.loadBrowserLocale(); browserHistory.push('/select_team'); } ); diff --git a/webapp/components/root.jsx b/webapp/components/root.jsx index f4656d45ff..c964993923 100644 --- a/webapp/components/root.jsx +++ b/webapp/components/root.jsx @@ -26,6 +26,19 @@ export default class Root extends React.Component { this.localizationChanged = this.localizationChanged.bind(this); this.redirectIfNecessary = this.redirectIfNecessary.bind(this); + + // Ya.... + /*eslint-disable */ + if (window.mm_config.SegmentDeveloperKey != null && window.mm_config.SegmentDeveloperKey !== "") { + !function(){var analytics=global.window.analytics=global.window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t