Skip to content

Commit 5a8b2bc

Browse files
VCST-2969: Add missing permission checks (#2907)
1 parent 872c7ef commit 5a8b2bc

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

src/VirtoCommerce.Platform.Core/PlatformConstants.cs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,23 +74,35 @@ public static class Permissions
7474
public const string SecurityAccess = "platform:security:access";
7575
public const string SecurityUpdate = "platform:security:update";
7676
public const string SecurityDelete = "platform:security:delete";
77-
public const string SecurityVerifyEmail = "platform:security:verifyEmail";
7877
public const string SecurityLoginOnBehalf = "platform:security:loginOnBehalf";
78+
public const string SecurityVerifyEmail = "platform:security:verifyEmail";
7979
public const string SecurityConfirmEmail = "platform:security:confirmEmail";
8080
public const string SecurityGenerateToken = "platform:security:generateToken";
8181
public const string SecurityVerifyToken = "platform:security:verifyToken";
82+
public const string SecurityOAuthApplicationsCreate = "platform:security:oauth_applications:create";
83+
public const string SecurityOAuthApplicationsRead = "platform:security:oauth_applications:read";
84+
public const string SecurityOAuthApplicationsUpdate = "platform:security:oauth_applications:update";
85+
public const string SecurityOAuthApplicationsDelete = "platform:security:oauth_applications:delete";
8286

8387
public const string BackgroundJobsManage = "background_jobs:manage";
8488

8589
public const string PlatformExportImportAccess = "platform:exportImport:access";
8690
public const string PlatformImport = "platform:import";
8791
public const string PlatformExport = "platform:export";
8892

89-
public static string[] AllPermissions { get; } = new[] { ResetCache, AssetAccess, AssetDelete, AssetUpdate, AssetCreate, AssetRead, ModuleQuery, ModuleAccess, ModuleManage,
90-
SettingQuery, SettingAccess, SettingUpdate, DynamicPropertiesQuery, DynamicPropertiesCreate, DynamicPropertiesAccess, DynamicPropertiesUpdate, DynamicPropertiesDelete,
91-
SecurityQuery, SecurityCreate, SecurityAccess, SecurityUpdate, SecurityDelete, BackgroundJobsManage, PlatformExportImportAccess, PlatformImport, PlatformExport, SecurityLoginOnBehalf ,
92-
SecurityVerifyEmail, SecurityConfirmEmail, SecurityGenerateToken, SecurityVerifyToken,
93-
};
93+
public static string[] AllPermissions { get; } =
94+
[
95+
ResetCache,
96+
AssetAccess, AssetDelete, AssetUpdate, AssetCreate, AssetRead,
97+
ModuleQuery, ModuleAccess, ModuleManage,
98+
SettingQuery, SettingAccess, SettingUpdate,
99+
DynamicPropertiesQuery, DynamicPropertiesCreate, DynamicPropertiesAccess, DynamicPropertiesUpdate, DynamicPropertiesDelete,
100+
SecurityQuery, SecurityCreate, SecurityAccess, SecurityUpdate, SecurityDelete,
101+
SecurityLoginOnBehalf, SecurityVerifyEmail, SecurityConfirmEmail, SecurityGenerateToken, SecurityVerifyToken,
102+
SecurityOAuthApplicationsCreate, SecurityOAuthApplicationsRead, SecurityOAuthApplicationsUpdate, SecurityOAuthApplicationsDelete,
103+
BackgroundJobsManage,
104+
PlatformExportImportAccess, PlatformImport, PlatformExport,
105+
];
94106
}
95107

96108
public static class Changes

src/VirtoCommerce.Platform.Web/Controllers/Api/OAuthAppsController.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using OpenIddict.EntityFrameworkCore.Models;
1010
using VirtoCommerce.Platform.Core.Common;
1111
using VirtoCommerce.Platform.Web.Model.Security;
12+
using Permissions = VirtoCommerce.Platform.Core.PlatformConstants.Security.Permissions;
1213

1314
namespace VirtoCommerce.Platform.Web.Controllers.Api
1415
{
@@ -38,6 +39,7 @@ public OAuthAppsController(OpenIddictApplicationManager<OpenIddictEntityFramewor
3839

3940
[HttpGet]
4041
[Route("new")]
42+
[Authorize(Permissions.SecurityOAuthApplicationsCreate)]
4143
public ActionResult<OpenIddictApplicationDescriptor> New()
4244
{
4345
var app = new OpenIddictApplicationDescriptor
@@ -54,6 +56,7 @@ public ActionResult<OpenIddictApplicationDescriptor> New()
5456

5557
[HttpPost]
5658
[Route("")]
59+
[Authorize(Permissions.SecurityOAuthApplicationsUpdate)]
5760
public async Task<ActionResult<OpenIddictApplicationDescriptor>> SaveAsync(OpenIddictApplicationDescriptor descriptor)
5861
{
5962
descriptor.Permissions.Clear();
@@ -81,6 +84,7 @@ public async Task<ActionResult<OpenIddictApplicationDescriptor>> SaveAsync(OpenI
8184

8285
[HttpDelete]
8386
[Route("")]
87+
[Authorize(Permissions.SecurityOAuthApplicationsDelete)]
8488
public async Task<ActionResult> DeleteAsync([FromQuery] string[] clientIds)
8589
{
8690
var apps = await _manager.ListAsync(x => x.Where(y => clientIds.Contains(y.ClientId))).ToListAsync();
@@ -95,6 +99,7 @@ public async Task<ActionResult> DeleteAsync([FromQuery] string[] clientIds)
9599

96100
[HttpPost]
97101
[Route("search")]
102+
[Authorize(Permissions.SecurityOAuthApplicationsRead)]
98103
public async Task<ActionResult<OAuthAppSearchResult>> SearchAsync(OAuthAppSearchCriteria criteria)
99104
{
100105
if (criteria.Sort.IsNullOrEmpty())

src/VirtoCommerce.Platform.Web/Controllers/Api/PlatformExportImportController.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,15 @@ public ActionResult<SampleDataState> GetSampleDataState()
140140

141141
[HttpGet]
142142
[Route("export/manifest/new")]
143+
[Authorize(Permissions.PlatformExport)]
143144
public ActionResult<PlatformExportManifest> GetNewExportManifest()
144145
{
145146
return Ok(_platformExportManager.GetNewExportManifest(_userNameResolver.GetCurrentUserName()));
146147
}
147148

148149
[HttpGet]
149150
[Route("export/manifest/load")]
151+
[Authorize(Permissions.PlatformImport)]
150152
public ActionResult<PlatformExportManifest> LoadExportManifest([FromQuery] string fileUrl)
151153
{
152154
if (string.IsNullOrEmpty(fileUrl))

0 commit comments

Comments
 (0)