internal void RefreshUserSettings(CultureInfo userCulture, EcpUserSettings userSettings) { if (userCulture != null) { this.userCulture = userCulture; Culture.InternalSetThreadPreferredCulture(userCulture); } this.RefreshMailboxSession(userSettings); this.ClearBposShellData(); }
private void RefreshMailboxSession(EcpUserSettings userSettings) { base.UserContextDiposeGraph.Append(".ur1"); if ((userSettings & EcpUserSettings.Regional) == EcpUserSettings.Regional) { ExTimeZone exTimeZone = null; try { if (this.mailboxSessionLock.LockWriterElastic(3000)) { base.UserContextDiposeGraph.Append(".ur2"); if (base.NotificationManager != null) { base.UserContextDiposeGraph.Append(".ur3"); base.NotificationManager.CleanupSubscriptions(); } if (this.mailboxSession != null) { base.UserContextDiposeGraph.Append(".ur4"); base.DisposeMailboxSession(); } this.mailboxSession = this.CreateMailboxSession(); this.isMailboxSessionCreated = true; UserContextUtilities.ReconnectStoreSession(this.mailboxSession, this); exTimeZone = TimeZoneHelper.GetUserTimeZone(this.mailboxSession); } } finally { if (this.mailboxSessionLock.IsWriterLockHeld) { if (this.mailboxSession != null) { base.UserContextDiposeGraph.Append(".ur5"); base.UnlockAndDisconnectMailboxSession(); } else { base.UserContextDiposeGraph.Append(".ur6"); this.mailboxSessionLock.ReleaseWriterLock(); } } } if (exTimeZone != null && base.NotificationManager != null) { base.NotificationManager.RefreshSubscriptions(exTimeZone); } } base.UserContextDiposeGraph.Append(".ur7"); }
private static DispatchStepResult ValidateAndSetThreadCulture(RequestContext requestContext) { ExTraceGlobals.CoreCallTracer.TraceDebug(0L, "[RequestDispatcher::ValidateAndSetThreadCulture] entry."); CultureInfo cultureInfo = null; EcpUserSettings ecpUserSettings = (EcpUserSettings)0U; UserContext userContext = requestContext.UserContext as UserContext; if (requestContext.UserContext != null && userContext == null) { throw new OwaInvalidOperationException(string.Format("Context was expected to be of type UserContext, but it is of type {0}", requestContext.UserContext.GetType())); } if (RequestDispatcherUtilities.TryReadUpdatedUserSettingsCookie(requestContext, out ecpUserSettings)) { cultureInfo = RequestDispatcherUtilities.GetUserCultureFromEcpCookie(requestContext, ecpUserSettings); if (userContext != null) { userContext.RefreshUserSettings(cultureInfo, ecpUserSettings); } RequestDispatcherUtilities.DeleteUserSettingsCookie(requestContext); } if (cultureInfo == null) { bool flag = requestContext.RequestType == OwaRequestType.SuiteServiceProxyPage; if (requestContext.LanguagePostUserCulture != null) { cultureInfo = requestContext.LanguagePostUserCulture; } else if (userContext != null && !flag) { cultureInfo = Culture.GetPreferredCultureInfo(userContext.ExchangePrincipal); if (cultureInfo == null && userContext.IsExplicitLogon) { cultureInfo = ClientCultures.GetPreferredCultureInfo(userContext.LogonIdentity.GetOWAMiniRecipient().Languages); userContext.UserCulture = cultureInfo; } if (cultureInfo == null) { if (string.IsNullOrEmpty(requestContext.DestinationUrlQueryString)) { requestContext.DestinationUrlQueryString = requestContext.HttpContext.Request.QueryString.ToString(); } bool flag2 = string.IsNullOrEmpty(requestContext.HttpContext.Request.Headers["X-SuiteServiceProxyOrigin"]); CultureInfo culture; string timeZoneKeyName; if (OfflineClientRequestUtilities.IsRequestFromMOWAClient(requestContext.HttpContext.Request, requestContext.HttpContext.Request.UserAgent) && RequestDispatcherUtilities.TryReadMowaGlobalizationSettings(requestContext, out culture, out timeZoneKeyName)) { return(RequestDispatcher.HandleLanguagePost(requestContext, culture, timeZoneKeyName, false, requestContext.DestinationUrl)); } if (flag2) { requestContext.DestinationUrl = RequestDispatcherUtilities.GetDestinationForRedirectToLanguagePage(requestContext); requestContext.HttpContext.Response.AppendHeader("X-OWA-Version", Globals.ApplicationVersion); requestContext.HttpContext.Response.AppendToLog("&redir=lang"); return(DispatchStepResult.RedirectToUrl); } requestContext.HttpContext.Response.Headers["X-OWA-Error"] = "OwaInvalidUserLanguageException"; requestContext.HttpStatusCode = HttpStatusCode.NoContent; return(DispatchStepResult.EndResponse); } else if (userContext.IsUserCultureExplicitlySet) { cultureInfo = userContext.UserCulture; } } } if (cultureInfo != null) { Culture.InternalSetThreadPreferredCulture(cultureInfo); } else { Culture.InternalSetThreadPreferredCulture(); } return(DispatchStepResult.Continue); }
internal static CultureInfo GetUserCultureFromEcpCookie(RequestContext requestContext, EcpUserSettings settingToReload) { CultureInfo cultureInfo = null; if (UserContextUtilities.IsFlagSet((int)settingToReload, 32)) { HttpCookie httpCookie = HttpContext.Current.Request.Cookies["mkt"]; if (httpCookie != null && !string.IsNullOrEmpty(httpCookie.Value)) { CultureInfo cultureInfo2 = CultureInfo.GetCultureInfo(httpCookie.Value); if (ClientCultures.IsSupportedCulture(cultureInfo2)) { cultureInfo = cultureInfo2; } } if (cultureInfo == null) { ExTraceGlobals.UserContextCallTracer.TraceDebug(0L, "UserContext.ReloadUserSettings: The culture cookie doesn't have a valid value."); } } return(cultureInfo); }
internal static bool TryReadUpdatedUserSettingsCookie(RequestContext requestContext, out EcpUserSettings settings) { settings = (EcpUserSettings)0U; HttpCookie httpCookie = requestContext.HttpContext.Request.Cookies["UpdatedUserSettings"]; if (httpCookie == null) { return(false); } string value = httpCookie.Value; bool result; try { settings = (EcpUserSettings)Convert.ToUInt32(value); result = true; } catch (FormatException) { throw new OwaInvalidRequestException(string.Format(CultureInfo.InvariantCulture, "The value of the cookie {0} is invalid.", new object[] { "UpdatedUserSettings" })); } catch (OverflowException) { throw new OwaInvalidRequestException(string.Format(CultureInfo.InvariantCulture, "The value of the cookie {0} is invalid.", new object[] { "UpdatedUserSettings" })); } return(result); }