Skip to content

Commit 98fffa3

Browse files
committed
Merge branch 'main' into feature/payment-provider-integration
2 parents a2aabf5 + 6c28060 commit 98fffa3

File tree

13 files changed

+112
-24
lines changed

13 files changed

+112
-24
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,8 @@ src/Umbraco.Forms.Integrations.TestSite/Media
396396
src/Umbraco.Forms.Integrations.TestSite/scripts
397397
src/Umbraco.Forms.Integrations.TestSite/Umbraco
398398
src/Umbraco.Forms.Integrations.TestSite/Views
399+
src/Umbraco.Forms.Integrations.TestSite.V9/App_Plugins
400+
src/Umbraco.Forms.Integrations.TestSite.V9/Views
399401
*.zip
400402
appsettings.Local.json
401403
src/Umbraco.Forms.Integrations.Automation.Zapier/app.config

azure-pipeline - Automation.Zapier.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
trigger:
2-
- feature/zapier-form-submitted
2+
- main
33

44
pool:
55
vmImage: 'windows-latest'
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
trigger:
2+
- feature/payment-provider-integration
3+
4+
pool:
5+
vmImage: 'windows-latest'
6+
7+
variables:
8+
projectName: 'Umbraco.Forms.Integrations.Commerce.EMerchantPay'
9+
solution: '**/*.sln'
10+
project: 'src/$(projectName)/$(projectName).csproj'
11+
testPoject: 'src/$(projectName).Tests/$(projectName).Tests.csproj'
12+
buildPlatform: 'Any CPU'
13+
buildConfiguration: 'Release'
14+
15+
steps:
16+
- task: NuGetToolInstaller@1
17+
displayName: 'Install NuGet'
18+
19+
- task: NuGetCommand@2
20+
displayName: 'NuGet Restore'
21+
inputs:
22+
restoreSolution: '$(solution)'
23+
24+
- task: VSBuild@1
25+
displayName: 'Build Project'
26+
inputs:
27+
solution: '$(project)'
28+
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
29+
platform: '$(buildPlatform)'
30+
configuration: '$(buildConfiguration)'
31+
32+
- task: DotNetCoreCLI@2
33+
displayName: 'Create NuGet Package'
34+
inputs:
35+
command: 'pack'
36+
arguments: '--configuration $(buildConfiguration)'
37+
packagesToPack: '$(project)'
38+
versioningScheme: 'off'
39+
40+
- task: CmdLine@2
41+
displayName: 'Create Umbraco Package'
42+
inputs:
43+
script: |
44+
dotnet tool install --global Umbraco.Tools.Packages
45+
cd src/$(projectName)/
46+
umbpack pack .\package.xml -o $(Build.ArtifactStagingDirectory)
47+
cd ../../
48+
- task: PublishBuildArtifacts@1
49+
displayName: 'Publish Build Artifacts'
50+
inputs:
51+
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
52+
ArtifactName: 'drop'
53+
publishLocation: 'Container'

src/Umbraco.Forms.Integrations.Automation.Zapier/Configuration/ZapierSettings.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,13 @@ public ZapierSettings()
1111

1212
public ZapierSettings(NameValueCollection appSettings)
1313
{
14-
UserGroup = appSettings[Constants.UmbracoFormsIntegrationsAutomationZapierUserGroup];
14+
UserGroupAlias = appSettings[Constants.UmbracoFormsIntegrationsAutomationZapierUserGroupAlias];
15+
16+
ApiKey = appSettings[Constants.UmbracoFormsIntegrationsAutomationZapierApiKey];
1517
}
1618

17-
public string UserGroup { get; set; }
19+
public string UserGroupAlias { get; set; }
20+
21+
public string ApiKey { get; set; }
1822
}
1923
}

src/Umbraco.Forms.Integrations.Automation.Zapier/Constants.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@ namespace Umbraco.Forms.Integrations.Automation.Zapier
33
{
44
public class Constants
55
{
6-
public const string UmbracoFormsIntegrationsAutomationZapierUserGroup = "Umbraco.Forms.Integrations.Automation.Zapier.UserGroup";
6+
public const string UmbracoFormsIntegrationsAutomationZapierUserGroupAlias = "Umbraco.Forms.Integrations.Automation.Zapier.UserGroupAlias";
7+
8+
public const string UmbracoFormsIntegrationsAutomationZapierApiKey = "Umbraco.Forms.Integrations.Automation.Zapier.ApiKey";
79

810
public static class ZapierAppConfiguration
911
{
1012
public const string UsernameHeaderKey = "X-USERNAME";
1113

1214
public const string PasswordHeaderKey = "X-PASSWORD";
15+
16+
public const string ApiKeyHeaderKey = "X-APIKEY";
1317
}
1418

1519
public static class Configuration

src/Umbraco.Forms.Integrations.Automation.Zapier/Controllers/ZapierFormAuthorizedApiController.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public bool IsUserValid()
4040
{
4141
string username = string.Empty;
4242
string password = string.Empty;
43+
string apiKey = string.Empty;
4344

4445
#if NETCOREAPP
4546
if (Request.Headers.TryGetValue(Constants.ZapierAppConfiguration.UsernameHeaderKey,
@@ -48,18 +49,24 @@ public bool IsUserValid()
4849
if (Request.Headers.TryGetValue(Constants.ZapierAppConfiguration.PasswordHeaderKey,
4950
out var passwordValues))
5051
password = passwordValues.First();
52+
if (Request.Headers.TryGetValue(Constants.ZapierAppConfiguration.ApiKeyHeaderKey,
53+
out var apiKeyValues))
54+
apiKey = apiKeyValues.First();
5155
#else
5256
if (Request.Headers.TryGetValues(Constants.ZapierAppConfiguration.UsernameHeaderKey,
5357
out var usernameValues))
5458
username = usernameValues.First();
5559
if (Request.Headers.TryGetValues(Constants.ZapierAppConfiguration.PasswordHeaderKey,
5660
out var passwordValues))
5761
password = passwordValues.First();
62+
if (Request.Headers.TryGetValues(Constants.ZapierAppConfiguration.ApiKeyHeaderKey,
63+
out var apiKeyValues))
64+
apiKey = apiKeyValues.First();
5865
#endif
5966

60-
if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) return false;
67+
if (string.IsNullOrEmpty(apiKey) && (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))) return false;
6168

62-
var isAuthorized = _userValidationService.Validate(username, password, Options.UserGroup).GetAwaiter()
69+
var isAuthorized = _userValidationService.Validate(username, password, Options.ApiKey).GetAwaiter()
6370
.GetResult();
6471
if (!isAuthorized) return false;
6572

src/Umbraco.Forms.Integrations.Automation.Zapier/Services/IUserValidationService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ namespace Umbraco.Forms.Integrations.Automation.Zapier.Services
44
{
55
public interface IUserValidationService
66
{
7-
Task<bool> Validate(string username, string password, string userGroup);
7+
Task<bool> Validate(string username, string password, string apiKey);
88
}
99
}

src/Umbraco.Forms.Integrations.Automation.Zapier/Services/UserValidationService.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
using System.Linq;
22
using System.Threading.Tasks;
33

4+
using Umbraco.Forms.Integrations.Automation.Zapier.Configuration;
5+
46
#if NETCOREAPP
7+
using Microsoft.Extensions.Options;
8+
59
using Umbraco.Cms.Core.Security;
610
using Umbraco.Cms.Core.Services;
711
#else
12+
using System.Configuration;
813
using Umbraco.Core.Services;
914
#endif
1015

@@ -14,23 +19,31 @@ public class UserValidationService : IUserValidationService
1419
{
1520
private readonly IUserService _userService;
1621

22+
private readonly ZapierSettings _zapierSettings;
1723

1824
#if NETCOREAPP
1925
private readonly IBackOfficeUserManager _backOfficeUserManager;
2026

21-
public UserValidationService(IBackOfficeUserManager backOfficeUserManager, IUserService userService)
27+
public UserValidationService(IOptions<ZapierSettings> options, IBackOfficeUserManager backOfficeUserManager, IUserService userService)
2228
{
2329
_backOfficeUserManager = backOfficeUserManager;
30+
31+
_zapierSettings = options.Value;
2432
}
2533
#else
2634
public UserValidationService(IUserService userService)
2735
{
2836
_userService = userService;
37+
38+
_zapierSettings = new ZapierSettings(ConfigurationManager.AppSettings);
2939
}
3040
#endif
3141

32-
public async Task<bool> Validate(string username, string password, string userGroup)
42+
public async Task<bool> Validate(string username, string password, string apiKey)
3343
{
44+
if (!string.IsNullOrEmpty(apiKey))
45+
return apiKey == _zapierSettings.ApiKey;
46+
3447
#if NETCOREAPP
3548
var isUserValid =
3649
await _backOfficeUserManager.ValidateCredentialsAsync(username, password);
@@ -40,11 +53,11 @@ public async Task<bool> Validate(string username, string password, string userGr
4053

4154
if (!isUserValid) return false;
4255

43-
if (!string.IsNullOrEmpty(userGroup))
56+
if (!string.IsNullOrEmpty(_zapierSettings.UserGroupAlias))
4457
{
4558
var user = _userService.GetByUsername(username);
4659

47-
return user != null && user.Groups.Any(p => p.Name == userGroup);
60+
return user != null && user.Groups.Any(p => p.Alias == _zapierSettings.UserGroupAlias);
4861
}
4962

5063
return true;

src/Umbraco.Forms.Integrations.Crm.Hubspot.Tests/Umbraco.Forms.Integrations.Crm.Hubspot.Tests.csproj

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@
1313
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
1414
</ItemGroup>
1515

16-
<ItemGroup>
17-
<PackageReference Include="UmbracoCms.Core" Version="8.14.0" />
18-
</ItemGroup>
19-
2016
<ItemGroup>
2117
<ProjectReference Include="..\Umbraco.Forms.Integrations.Crm.Hubspot\Umbraco.Forms.Integrations.Crm.Hubspot.csproj" />
2218
</ItemGroup>

src/Umbraco.Forms.Integrations.Crm.Hubspot/App_Plugins/UmbracoForms.Integrations/Crm/Hubspot/hubspot-field-mapper-template.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<p>Umbraco Forms is not configured with a HubSpot CRM account.</p>
99
<p>To do this you can either create and save an API key into the <i>UmbracoForms.config</i> file.</p>
1010
<p>Or you can click <a ng-click="vm.openAuth()" style="text-decoration: underline">here</a> to complete an OAuth connection.</p>
11-
<p><em>If your browser is unable to process the automated connection, paste the provided authorization code below and click to complete the authentication.</em></dd>
11+
<p><em>If your browser is unable to process the automated connection, paste the provided authorization code below and click to complete the authentication.</em>
1212
<input type="text" placeholder="Enter authorization code" ng-model="vm.authorizationCode" />
1313
<umb-button type="button" disabled="vm.authorizationCode === ''" action="vm.authorize()" label="Authorize"></umb-button>
1414
</div>

0 commit comments

Comments
 (0)