protected override MailboxSession CreateMailboxSession() { if (base.IsDisposed || this.isInProcessOfDisposing) { string message = string.Format(CultureInfo.InvariantCulture, "Cannot call UserContext.CreateMailboxSession when object is disposed. isDisposed={0}, isInProcessOfDisposing={1}.", new object[] { base.IsDisposed, this.isInProcessOfDisposing }); throw new ObjectDisposedException("UserContext", message); } if (base.LogonIdentity == null) { throw new OwaInvalidOperationException("Cannot call CreateMailboxSession when logonIdentity is null"); } MailboxSession result; try { if (base.ExchangePrincipal.RecipientTypeDetails == RecipientTypeDetails.TeamMailbox) { Exception ex = null; ExTraceGlobals.UserContextTracer.TraceDebug(0L, "Creating Mailbox session for TeamMailbox"); SharepointAccessManager.Instance.UpdateAccessTokenIfNeeded(base.ExchangePrincipal, OauthUtils.GetOauthCredential(base.LogonIdentity.GetOWAMiniRecipient()), base.LogonIdentity.ClientSecurityContext, out ex, false); if (ex != null) { ExTraceGlobals.UserContextTracer.TraceDebug <Exception>(0L, "CreateMailboxSession for TeamMailbox hit exception while updating AccessToken: {0}", ex); } } CultureInfo cultureInfo = Culture.GetPreferredCultureInfo(base.ExchangePrincipal) ?? Thread.CurrentThread.CurrentCulture; MailboxSession mailboxSession; if (base.ExchangePrincipal.RecipientTypeDetails == RecipientTypeDetails.GroupMailbox) { mailboxSession = base.LogonIdentity.CreateDelegateMailboxSession(base.ExchangePrincipal, cultureInfo); } else { mailboxSession = base.LogonIdentity.CreateMailboxSession(base.ExchangePrincipal, cultureInfo); } if (mailboxSession == null) { throw new OwaInvalidOperationException("CreateMailboxSession cannot create a mailbox session"); } result = mailboxSession; } catch (AccessDeniedException innerException) { throw new OwaExplicitLogonException("user has no access rights to the mailbox", "errorexplicitlogonaccessdenied", innerException); } return(result); }
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); }
public static bool IsDownLevelClient(HttpContext httpContext, bool avoidUserContextAccess = false) { if (httpContext == null) { throw new ArgumentNullException("httpContext cannot be null"); } HttpCookie httpCookie = httpContext.Request.Cookies["PALEnabled"]; if (httpCookie != null && !string.IsNullOrEmpty(httpCookie.Value)) { return(false); } if (httpContext.Items.Contains("IsDownLevelClient")) { return((bool)httpContext.Items["IsDownLevelClient"]); } if (Utility.IsResourceRequest(httpContext.Request.Url.LocalPath)) { avoidUserContextAccess = true; } bool flag = false; bool flag2 = false; bool flag3 = true; bool isAndroidPremiumEnabled = false; if (httpContext.User != null && httpContext.User.Identity.IsAuthenticated && !avoidUserContextAccess) { UserContext userContext = UserContextManager.GetMailboxContext(httpContext, null, true) as UserContext; if (userContext != null) { bool flag4 = Culture.GetPreferredCultureInfo(userContext.ExchangePrincipal) != null; if (flag4) { ConfigurationContext configurationContext = new ConfigurationContext(userContext); flag3 = configurationContext.IsFeatureEnabled(Feature.RichClient); flag2 = userContext.IsOptimizedForAccessibility; flag = true; ExTraceGlobals.CoreCallTracer.TraceDebug(0L, string.Format("isOptimizedForAccessibility: {0}, isRichClientFeatureEnabled: {1}", flag2, flag3)); } if (userContext.FeaturesManager.ServerSettings.AndroidPremium.Enabled) { isAndroidPremiumEnabled = true; } } else { ExTraceGlobals.CoreCallTracer.TraceDebug(0L, "userContext is null when process IsDownLevelClient"); } } bool flag5 = RequestDispatcherUtilities.IsDownLevelClient(httpContext.Request, flag2, flag3, isAndroidPremiumEnabled); if (flag) { httpContext.Items["IsDownLevelClient"] = flag5; ExTraceGlobals.CoreCallTracer.TraceDebug(0L, string.Format("Cache result '{0}' for IsDownLevelClient", flag5)); } else { ExTraceGlobals.CoreCallTracer.TraceDebug(0L, string.Format("Result '{0}' for IsDownLevelClient is not cached.", flag5)); } return(flag5); }
// Token: 0x06000974 RID: 2420 RVA: 0x000209E4 File Offset: 0x0001EBE4 internal static void InternalSetThreadPreferredCulture(IExchangePrincipal exchangePrincipal) { Culture.InternalSetThreadPreferredCulture(Culture.GetPreferredCultureInfo(exchangePrincipal)); }