protected override CustomSharePointContext LoadSharePointContext(ISessionContext context)
            {
                if (null == context)
                {
                    throw new ArgumentNullException(nameof(context));
                }
                // Load context parameters from session store.
                var spHostUrl       = context.GetParam <string>(Constants.SPHostUrlKey).ToUri();
                var spAppWebUrl     = context.GetParam <string>(Constants.SPAppWebUrlKey).ToUri();
                var spLanguage      = context.GetParam <string>(Constants.SPLanguageKey);
                var spClientTag     = context.GetParam <string>(Constants.SPClientTagKey);
                var spProductNumber = context.GetParam <string>(Constants.SPProductNumberKey);

                return(CreateSharePointContext(spHostUrl, spAppWebUrl, spLanguage, spClientTag, spProductNumber, context));
            }
Exemple #2
0
 public static Uri GetSPHostUrl(ISessionContext context)
 {
     if (null == context)
     {
         throw new ArgumentNullException(nameof(context));
     }
     return(context.GetParam <string>(Constants.SPHostUrlKey).ToUri());
 }
            private static string GetContextString(ISessionContext context)
            {
                // Check cookie first.
                var contextString = context.GetParam <string>(Constants.SPContextTokenCookieName);

                if (!string.IsNullOrEmpty(contextString))
                {
                    return(contextString);
                }
                string[] paramNames = { "AppContext", "AppContextToken", "AccessToken", "SPAppToken" };
                return(paramNames.Select(context.GetParam <string>).FirstOrDefault(val => !string.IsNullOrEmpty(val)));
            }
        public CustomSharePointContext CreateSharePointContext(ISessionContext context)
        {
            if (null == context)
            {
                throw new ArgumentNullException(nameof(context));
            }
            var spHostUrl = CustomSharePointContext.GetSPHostUrl(context);

            if (null == spHostUrl)
            {
                return(null);
            }
            var spLanguage = context.GetParam <string>(Constants.SPLanguageKey);

            if (string.IsNullOrEmpty(spLanguage))
            {
                return(null);
            }
            var spClientTag = context.GetParam <string>(Constants.SPClientTagKey);

            if (string.IsNullOrEmpty(spClientTag))
            {
                return(null);
            }
            var spProductNumber = context.GetParam <string>(Constants.SPProductNumberKey);

            if (string.IsNullOrEmpty(spProductNumber))
            {
                return(null);
            }
            var spAppWebUrlString = TokenHelper.EnsureTrailingSlash(context.GetParam <string>(Constants.SPAppWebUrlKey));

            if (!Uri.TryCreate(spAppWebUrlString, UriKind.Absolute, out var spAppWebUrl) ||
                !(spAppWebUrl.Scheme == Uri.UriSchemeHttp || spAppWebUrl.Scheme == Uri.UriSchemeHttps))
            {
                spAppWebUrl = null;
            }
            return(CreateSharePointContext(spHostUrl, spAppWebUrl, spLanguage, spClientTag, spProductNumber, context));
        }
        private static Uri GetAppRedirectUrl(ISessionContext context)
        {
            if (null == context)
            {
                throw new ArgumentNullException(nameof(context));
            }
            // Make sure we don't redirect over and over again.
            const string SPHasRedirectedToSharePointKey = "SPHasRedirectedToSharePoint";

            if (!string.IsNullOrEmpty(context.GetParam <string>(SPHasRedirectedToSharePointKey)))
            {
                return(null);
            }
            var spHostUrl = CustomSharePointContext.GetSPHostUrl(context);

            if (null == spHostUrl)
            {
                return(null);
            }
            var requestUrl = context.GetRequestUrl;

            if (null == requestUrl)
            {
                return(null);
            }
            var queryNameValueCollection = HttpUtility.ParseQueryString(requestUrl.Query);

            // Removes the values that are included in {StandardTokens}, as {StandardTokens}
            // will be inserted at the beginning of the query string.
            queryNameValueCollection.Remove(Constants.SPHostUrlKey);
            queryNameValueCollection.Remove(Constants.SPAppWebUrlKey);
            queryNameValueCollection.Remove(Constants.SPLanguageKey);
            queryNameValueCollection.Remove(Constants.SPClientTagKey);
            queryNameValueCollection.Remove(Constants.SPProductNumberKey);
            // Adds SPHasRedirectedToSharePoint=1.
            queryNameValueCollection.Add(SPHasRedirectedToSharePointKey, "1");
            var returnUrlBuilder = new UriBuilder(requestUrl)
            {
                Query = queryNameValueCollection.ToString()
            };
            // Inserts StandardTokens.
            const string StandardTokens  = "{StandardTokens}";
            var          returnUrlString = returnUrlBuilder.Uri.AbsoluteUri;

            returnUrlString = returnUrlString.Insert(returnUrlString.IndexOf("?", StringComparison.Ordinal) + 1, StandardTokens + "&");
            var redirectUrlString = TokenHelper.GetAppContextTokenRequestUrl(spHostUrl.AbsoluteUri, Uri.EscapeDataString(returnUrlString));

            return(new Uri(redirectUrlString, UriKind.Absolute));
        }