public override async Task InitializeAsync(PermissionsContext permissionsContext = null)
        {
            await base.InitializeAsync();

            var result = await GraphQLClient
                         .Content
                         .Query("blogPost", builder =>
            {
                builder
                .WithField("contentItemId");
            });

            BlogPostContentItemId = result["data"]["blogPost"].First["contentItemId"].ToString();

            var content = await Client.GetAsync($"api/content/{BlogPostContentItemId}");

            OriginalBlogPost = await content.Content.ReadAsAsync <ContentItem>();

            OriginalBlogPostVersionId = OriginalBlogPost.ContentItemVersionId;

            using (var shellScope = await ShellHost.GetScopeAsync(TenantName))
            {
                await shellScope.UsingAsync(async scope =>
                {
                    var remoteClientService = scope.ServiceProvider.GetRequiredService <RemoteClientService>();

                    await remoteClientService.CreateRemoteClientAsync(RemoteDeploymentClientName, RemoteDeploymentApiKey);
                });
            }
        }
        // Used for http based graphql tests, marries a permission context to a request
        public PermissionContextAuthorizationHandler(IHttpContextAccessor httpContextAccessor, IDictionary <string, PermissionsContext> permissionsContexts)
        {
            _permissionsContext = new PermissionsContext();

            var requestContext = httpContextAccessor.HttpContext.Request;

            if (requestContext?.Headers.ContainsKey("PermissionsContext") == true &&
                permissionsContexts.TryGetValue(requestContext.Headers["PermissionsContext"], out var permissionsContext))
            {
                _permissionsContext = permissionsContext;
            }
        }
Beispiel #3
0
        public virtual async Task InitializeAsync(PermissionsContext permissionsContext = null)
        {
            var tenantName = Guid.NewGuid().ToString().Replace("-", "");

            var createModel = new Tenants.ViewModels.CreateApiViewModel
            {
                DatabaseProvider = "Sqlite",
                RecipeName       = "Blog",
                Name             = tenantName,
                RequestUrlPrefix = tenantName
            };

            var createResult = await DefaultTenantClient.PostAsJsonAsync("api/tenants/create", createModel);

            createResult.EnsureSuccessStatusCode();

            var content = await createResult.Content.ReadAsStringAsync();

            var url = new Uri(content.Trim('"'));

            url = new Uri(url.Scheme + "://" + url.Authority + url.LocalPath + "/");

            var setupModel = new Tenants.ViewModels.SetupApiViewModel
            {
                SiteName         = "Test Site",
                DatabaseProvider = "Sqlite",
                RecipeName       = "Blog",
                UserName         = "******",
                Password         = "******",
                Name             = tenantName,
                Email            = "Nick@Orchard"
            };

            var setupResult = await DefaultTenantClient.PostAsJsonAsync("api/tenants/setup", setupModel);

            setupResult.EnsureSuccessStatusCode();

            lock (Site)
            {
                Client     = Site.CreateDefaultClient(url);
                TenantName = tenantName;
            }

            if (permissionsContext != null)
            {
                var permissionContextKey = Guid.NewGuid().ToString();
                SiteStartup.PermissionsContexts.TryAdd(permissionContextKey, permissionsContext);
                Client.DefaultRequestHeaders.Add("PermissionsContext", permissionContextKey);
            }

            GraphQLClient = new OrchardGraphQLClient(Client);
        }
Beispiel #4
0
        public override async Task InitializeAsync(PermissionsContext permissionsContext = null)
        {
            await base.InitializeAsync();

            var result = await GraphQLClient
                         .Content
                         .Query("blog", builder =>
            {
                builder
                .WithField("contentItemId");
            });

            BlogContentItemId = result["data"]["blog"].First["contentItemId"].ToString();
        }
        public override async Task InitializeAsync(PermissionsContext permissionsContext = null)
        {
            await base.InitializeAsync();

            var body = new ContentTypeQueryResourceBuilder("blogPost")
                       .WithField("contentItemId").Build() +
                       new ContentTypeQueryResourceBuilder("blog")
                       .WithField("contentItemId").Build() +
                       new ContentTypeQueryResourceBuilder("taxonomy")
                       .WithField("contentItemId").Build();

            var result = await GraphQLClient.Content.Query(body);

            var blogPostContentItemId = result["data"]["blogPost"].First["contentItemId"].ToString();

            var content = await Client.GetAsync($"api/content/{blogPostContentItemId}");

            BlogPost = await content.Content.ReadAsAsync <ContentItem>();

            BlogContentItemId = result["data"]["blog"].First["contentItemId"].ToString();

            TagsTaxonomyContentItemId = result["data"]["taxonomy"][1]["contentItemId"].ToString();
        }
 // Used for static graphql test; passes a permissionsContext directly
 public PermissionContextAuthorizationHandler(PermissionsContext permissionsContext)
 {
     _permissionsContext = permissionsContext;
 }
Beispiel #7
0
 public static T WithPermissionsContext <T>(this T siteContext, PermissionsContext permissionsContext) where T : SiteContext
 {
     siteContext.PermissionsContext = permissionsContext;
     return(siteContext);
 }