From 129edd724c6d468679b725447a5326c3dcaa2eee Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 12 Apr 2022 08:06:16 +0200 Subject: [PATCH] More placeholder fixes. --- .../HandleRules/RuleEventFormatter.cs | 30 +++++++++++++++---- .../Scripting/EventScriptVars.cs | 17 +++++++++++ .../Scripting/ScriptingCompleter.cs | 10 +++---- .../asset-changed-trigger.component.html | 2 +- .../triggers/comment-trigger.component.html | 2 +- .../content-changed-trigger.component.html | 6 +++- .../schema-changed-trigger.component.html | 2 +- 7 files changed, 54 insertions(+), 15 deletions(-) diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleEventFormatter.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleEventFormatter.cs index e2f76c472..52ddf5712 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleEventFormatter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleEventFormatter.cs @@ -6,6 +6,7 @@ // ========================================================================== using System.Globalization; +using System.Security.Claims; using System.Text; using System.Text.RegularExpressions; using Newtonsoft.Json; @@ -14,6 +15,8 @@ using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; using Squidex.Domain.Apps.Core.Scripting; using Squidex.Domain.Apps.Core.Templates; using Squidex.Infrastructure.Json; +using Squidex.Shared; +using Squidex.Shared.Identity; using Squidex.Text; using ValueTaskSupplement; @@ -76,12 +79,16 @@ namespace Squidex.Domain.Apps.Core.HandleRules public virtual string ToPayload(T @event) { - return jsonSerializer.Serialize(@event); + var payload = @event; + + return jsonSerializer.Serialize(payload); } public virtual string ToEnvelope(EnrichedEvent @event) { - return jsonSerializer.Serialize(new { type = @event.Name, payload = @event, timestamp = @event.Timestamp }); + var payload = new { type = @event.Name, payload = @event, timestamp = @event.Timestamp }; + + return jsonSerializer.Serialize(payload); } public async ValueTask FormatAsync(string text, EnrichedEvent @event) @@ -106,12 +113,13 @@ namespace Squidex.Domain.Apps.Core.HandleRules // Script vars are just wrappers over dictionaries for better performance. var vars = new EventScriptVars { - Event = @event + Event = @event, + AppId = @event.AppId.Id, + AppName = @event.AppId.Name, + User = Admin() }; -#pragma warning disable MA0042 // Do not use blocking calls in an async method - var result = scriptEngine.Execute(vars, script).ToString(); -#pragma warning restore MA0042 // Do not use blocking calls in an async method + var result = (await scriptEngine.ExecuteAsync(vars, script)).ToString(); if (result == "undefined") { @@ -131,6 +139,16 @@ namespace Squidex.Domain.Apps.Core.HandleRules return CombineParts(text, parts); } + private static ClaimsPrincipal Admin() + { + var claimsIdentity = new ClaimsIdentity(); + var claimsPrincipal = new ClaimsPrincipal(claimsIdentity); + + claimsIdentity.AddClaim(new Claim(SquidexClaimTypes.Permissions, Permissions.All)); + + return claimsPrincipal; + } + private static string CombineParts(string text, List parts) { var span = text.AsSpan(); diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/EventScriptVars.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/EventScriptVars.cs index 41f157249..b131eccae 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/EventScriptVars.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/EventScriptVars.cs @@ -5,12 +5,29 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System.Security.Claims; using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; +using Squidex.Infrastructure; namespace Squidex.Domain.Apps.Core.Scripting { public sealed class EventScriptVars : ScriptVars { + public DomainId AppId + { + set => SetValue(value); + } + + public string AppName + { + set => SetValue(value); + } + + public ClaimsPrincipal User + { + set => SetValue(value); + } + public EnrichedEvent Event { set => SetValue(value); diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ScriptingCompleter.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ScriptingCompleter.cs index 7cb761163..914016a73 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ScriptingCompleter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ScriptingCompleter.cs @@ -119,7 +119,7 @@ namespace Squidex.Domain.Apps.Core.Scripting public IReadOnlyList SchemaTrigger() { - AddHelpers(ScriptScope.SchemaTrigger); + AddHelpers(ScriptScope.SchemaTrigger | ScriptScope.Async); AddObject("event", FieldDescriptions.Event, () => { @@ -131,7 +131,7 @@ namespace Squidex.Domain.Apps.Core.Scripting public IReadOnlyList CommentTrigger() { - AddHelpers(ScriptScope.CommentTrigger); + AddHelpers(ScriptScope.CommentTrigger | ScriptScope.Async); AddObject("event", FieldDescriptions.Event, () => { @@ -143,7 +143,7 @@ namespace Squidex.Domain.Apps.Core.Scripting public IReadOnlyList UsageTrigger() { - AddHelpers(ScriptScope.UsageTrigger); + AddHelpers(ScriptScope.UsageTrigger | ScriptScope.Async); AddObject("event", FieldDescriptions.Event, () => { @@ -169,7 +169,7 @@ namespace Squidex.Domain.Apps.Core.Scripting public IReadOnlyList ContentTrigger() { - var scope = ScriptScope.ContentTrigger; + var scope = ScriptScope.ContentTrigger | ScriptScope.Async; AddHelpers(scope); @@ -183,7 +183,7 @@ namespace Squidex.Domain.Apps.Core.Scripting public IReadOnlyList AssetTrigger() { - AddHelpers(ScriptScope.AssetTrigger); + AddHelpers(ScriptScope.AssetTrigger | ScriptScope.Async); AddObject("event", FieldDescriptions.Event, () => { diff --git a/frontend/src/app/features/rules/shared/triggers/asset-changed-trigger.component.html b/frontend/src/app/features/rules/shared/triggers/asset-changed-trigger.component.html index 3e6d90dac..6e58d55b2 100644 --- a/frontend/src/app/features/rules/shared/triggers/asset-changed-trigger.component.html +++ b/frontend/src/app/features/rules/shared/triggers/asset-changed-trigger.component.html @@ -4,7 +4,7 @@ - +
diff --git a/frontend/src/app/features/rules/shared/triggers/comment-trigger.component.html b/frontend/src/app/features/rules/shared/triggers/comment-trigger.component.html index c6fcdf26d..9968d8d86 100644 --- a/frontend/src/app/features/rules/shared/triggers/comment-trigger.component.html +++ b/frontend/src/app/features/rules/shared/triggers/comment-trigger.component.html @@ -4,7 +4,7 @@ - +
diff --git a/frontend/src/app/features/rules/shared/triggers/content-changed-trigger.component.html b/frontend/src/app/features/rules/shared/triggers/content-changed-trigger.component.html index 752d1187a..b1f1e390d 100644 --- a/frontend/src/app/features/rules/shared/triggers/content-changed-trigger.component.html +++ b/frontend/src/app/features/rules/shared/triggers/content-changed-trigger.component.html @@ -21,7 +21,11 @@ {{triggerSchema.schema.displayName}} - +