Skip to content

Commit 07c1867

Browse files
committed
Merge branch 'dev' into vs-internal-issue-#7738
2 parents 4775270 + b24f5b8 commit 07c1867

File tree

282 files changed

+8545
-361
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

282 files changed

+8545
-361
lines changed

Directory.Packages.props

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
<PackageVersion Include="Azure.Identity" Version="1.14.2" />
2121
<PackageVersion Include="Azure.Messaging.ServiceBus" Version="7.20.1" />
2222
<PackageVersion Include="Azure.Storage.Blobs" Version="12.25.0" />
23-
<PackageVersion Include="Blazorise" Version="1.8.6" />
24-
<PackageVersion Include="Blazorise.Components" Version="1.8.6" />
25-
<PackageVersion Include="Blazorise.DataGrid" Version="1.8.6" />
26-
<PackageVersion Include="Blazorise.Snackbar" Version="1.8.6" />
23+
<PackageVersion Include="Blazorise" Version="1.8.8" />
24+
<PackageVersion Include="Blazorise.Components" Version="1.8.8" />
25+
<PackageVersion Include="Blazorise.DataGrid" Version="1.8.8" />
26+
<PackageVersion Include="Blazorise.Snackbar" Version="1.8.8" />
2727
<PackageVersion Include="Castle.Core" Version="5.2.1" />
2828
<PackageVersion Include="Castle.Core.AsyncInterceptor" Version="2.1.0" />
2929
<PackageVersion Include="CommonMark.NET" Version="0.15.1" />
3.66 KB
Loading

docs/en/modules/ai-management/index.md

Lines changed: 201 additions & 49 deletions
Large diffs are not rendered by default.

framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/AbpPermissionOptions.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using Volo.Abp.Authorization.Permissions.Resources;
23
using Volo.Abp.Collections;
34

45
namespace Volo.Abp.Authorization.Permissions;
@@ -9,6 +10,8 @@ public class AbpPermissionOptions
910

1011
public ITypeList<IPermissionValueProvider> ValueProviders { get; }
1112

13+
public ITypeList<IResourcePermissionValueProvider> ResourceValueProviders { get; }
14+
1215
public HashSet<string> DeletedPermissions { get; }
1316

1417
public HashSet<string> DeletedPermissionGroups { get; }
@@ -17,6 +20,7 @@ public AbpPermissionOptions()
1720
{
1821
DefinitionProviders = new TypeList<IPermissionDefinitionProvider>();
1922
ValueProviders = new TypeList<IPermissionValueProvider>();
23+
ResourceValueProviders = new TypeList<IResourcePermissionValueProvider>();
2024

2125
DeletedPermissions = new HashSet<string>();
2226
DeletedPermissionGroups = new HashSet<string>();

framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/ICanAddChildPermission.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ PermissionDefinition AddPermission(
1111
ILocalizableString? displayName = null,
1212
MultiTenancySides multiTenancySide = MultiTenancySides.Both,
1313
bool isEnabled = true);
14-
}
14+
}

framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/IPermissionDefinitionContext.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System;
2+
using JetBrains.Annotations;
23
using Volo.Abp.Localization;
4+
using Volo.Abp.MultiTenancy;
35

46
namespace Volo.Abp.Authorization.Permissions;
57

@@ -46,4 +48,16 @@ PermissionGroupDefinition AddGroup(
4648
/// <param name="name">Name of the permission</param>
4749
/// </summary>
4850
PermissionDefinition? GetPermissionOrNull(string name);
51+
52+
PermissionDefinition AddResourcePermission(
53+
string name,
54+
string resourceName,
55+
string managementPermissionName,
56+
ILocalizableString? displayName = null,
57+
MultiTenancySides multiTenancySide = MultiTenancySides.Both,
58+
bool isEnabled = true);
59+
60+
PermissionDefinition? GetResourcePermissionOrNull([NotNull] string resourceName, [NotNull] string name);
61+
62+
void RemoveResourcePermission([NotNull] string resourceName, [NotNull] string name);
4963
}

framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/IPermissionDefinitionManager.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,14 @@ public interface IPermissionDefinitionManager
1111

1212
Task<PermissionDefinition?> GetOrNullAsync([NotNull] string name);
1313

14+
[ItemNotNull]
15+
Task<PermissionDefinition> GetResourcePermissionAsync([NotNull]string resourceName, [NotNull] string name);
16+
17+
Task<PermissionDefinition?> GetResourcePermissionOrNullAsync([NotNull]string resourceName, [NotNull] string name);
18+
1419
Task<IReadOnlyList<PermissionDefinition>> GetPermissionsAsync();
1520

21+
Task<IReadOnlyList<PermissionDefinition>> GetResourcePermissionsAsync();
22+
1623
Task<IReadOnlyList<PermissionGroupDefinition>> GetGroupsAsync();
1724
}

framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/IPermissionValueProvider.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ public interface IPermissionValueProvider
66
{
77
string Name { get; }
88

9-
//TODO: Rename to GetResult? (CheckAsync throws exception by naming convention)
109
Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context);
1110

1211
Task<MultiplePermissionGrantResult> CheckAsync(PermissionValuesCheckContext context);

framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinition.cs

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
namespace Volo.Abp.Authorization.Permissions;
99

10-
public class PermissionDefinition :
10+
public class PermissionDefinition :
1111
IHasSimpleStateCheckers<PermissionDefinition>,
1212
ICanAddChildPermission
1313
{
@@ -16,6 +16,16 @@ public class PermissionDefinition :
1616
/// </summary>
1717
public string Name { get; }
1818

19+
/// <summary>
20+
/// Resource name of the permission.
21+
/// </summary>
22+
public string? ResourceName { get; set; }
23+
24+
/// <summary>
25+
/// Management permission of the resource permission.
26+
/// </summary>
27+
public string? ManagementPermissionName { get; set; }
28+
1929
/// <summary>
2030
/// Parent of this permission if one exists.
2131
/// If set, this permission can be granted only if parent is granted.
@@ -76,6 +86,19 @@ public object? this[string name] {
7686
set => Properties[name] = value;
7787
}
7888

89+
protected internal PermissionDefinition(
90+
[NotNull] string name,
91+
string resourceName,
92+
string managementPermissionName,
93+
ILocalizableString? displayName = null,
94+
MultiTenancySides multiTenancySide = MultiTenancySides.Both,
95+
bool isEnabled = true)
96+
: this(name, displayName, multiTenancySide, isEnabled)
97+
{
98+
ResourceName = Check.NotNull(resourceName, nameof(resourceName));
99+
ManagementPermissionName = Check.NotNull(managementPermissionName, nameof(managementPermissionName));
100+
}
101+
79102
protected internal PermissionDefinition(
80103
[NotNull] string name,
81104
ILocalizableString? displayName = null,
@@ -99,6 +122,11 @@ public virtual PermissionDefinition AddChild(
99122
MultiTenancySides multiTenancySide = MultiTenancySides.Both,
100123
bool isEnabled = true)
101124
{
125+
if (ResourceName != null)
126+
{
127+
throw new AbpException($"Resource permission cannot have child permissions. Resource: {ResourceName}");
128+
}
129+
102130
var child = new PermissionDefinition(
103131
name,
104132
displayName,
@@ -109,12 +137,12 @@ public virtual PermissionDefinition AddChild(
109137
};
110138

111139
child[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName] = this[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName];
112-
140+
113141
_children.Add(child);
114142

115143
return child;
116144
}
117-
145+
118146
PermissionDefinition ICanAddChildPermission.AddPermission(
119147
string name,
120148
ILocalizableString? displayName = null,
@@ -124,7 +152,6 @@ PermissionDefinition ICanAddChildPermission.AddPermission(
124152
return this.AddChild(name, displayName, multiTenancySide, isEnabled);
125153
}
126154

127-
128155
/// <summary>
129156
/// Sets a property in the <see cref="Properties"/> dictionary.
130157
/// This is a shortcut for nested calls on this object.

framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinitionContext.cs

Lines changed: 64 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Linq;
34
using JetBrains.Annotations;
45
using Volo.Abp.Localization;
6+
using Volo.Abp.MultiTenancy;
57

68
namespace Volo.Abp.Authorization.Permissions;
79

@@ -11,17 +13,20 @@ public class PermissionDefinitionContext : IPermissionDefinitionContext
1113

1214
public Dictionary<string, PermissionGroupDefinition> Groups { get; }
1315

16+
public List<PermissionDefinition> ResourcePermissions { get; }
17+
1418
internal IPermissionDefinitionProvider? CurrentProvider { get; set; }
1519

1620
public static class KnownPropertyNames
1721
{
1822
public const string CurrentProviderName = "_CurrentProviderName";
1923
}
20-
24+
2125
public PermissionDefinitionContext(IServiceProvider serviceProvider)
2226
{
2327
ServiceProvider = serviceProvider;
2428
Groups = new Dictionary<string, PermissionGroupDefinition>();
29+
ResourcePermissions = new List<PermissionDefinition>();
2530
}
2631

2732
public virtual PermissionGroupDefinition AddGroup(
@@ -43,45 +48,31 @@ public virtual PermissionGroupDefinition AddGroup(
4348
}
4449

4550
Groups[name] = group;
46-
51+
4752
return group;
4853
}
4954

5055
[NotNull]
5156
public virtual PermissionGroupDefinition GetGroup([NotNull] string name)
5257
{
5358
var group = GetGroupOrNull(name);
54-
55-
if (group == null)
56-
{
57-
throw new AbpException($"Could not find a permission definition group with the given name: {name}");
58-
}
59-
60-
return group;
59+
return group ?? throw new AbpException($"Could not find a permission definition group with the given name: {name}");
6160
}
6261

6362
public virtual PermissionGroupDefinition? GetGroupOrNull([NotNull] string name)
6463
{
6564
Check.NotNull(name, nameof(name));
66-
67-
if (!Groups.ContainsKey(name))
68-
{
69-
return null;
70-
}
71-
72-
return Groups[name];
65+
return Groups.GetOrDefault(name);
7366
}
7467

7568
public virtual void RemoveGroup(string name)
7669
{
7770
Check.NotNull(name, nameof(name));
7871

79-
if (!Groups.ContainsKey(name))
72+
if (!Groups.Remove(name))
8073
{
8174
throw new AbpException($"Not found permission group with name: {name}");
8275
}
83-
84-
Groups.Remove(name);
8576
}
8677

8778
public virtual PermissionDefinition? GetPermissionOrNull([NotNull] string name)
@@ -100,4 +91,58 @@ public virtual void RemoveGroup(string name)
10091

10192
return null;
10293
}
94+
95+
public virtual PermissionDefinition AddResourcePermission(
96+
string name,
97+
string resourceName,
98+
string managementPermissionName,
99+
ILocalizableString? displayName = null,
100+
MultiTenancySides multiTenancySide = MultiTenancySides.Both,
101+
bool isEnabled = true)
102+
{
103+
Check.NotNull(name, nameof(name));
104+
Check.NotNull(resourceName, nameof(resourceName));
105+
Check.NotNull(managementPermissionName, nameof(managementPermissionName));
106+
107+
if (ResourcePermissions.Any(x => x.ResourceName == resourceName && x.Name == name))
108+
{
109+
throw new AbpException($"There is already an existing resource permission with name: {name} for resource: {resourceName}");
110+
}
111+
112+
var permission = new PermissionDefinition(
113+
name,
114+
resourceName,
115+
managementPermissionName,
116+
displayName,
117+
multiTenancySide,
118+
isEnabled)
119+
{
120+
[KnownPropertyNames.CurrentProviderName] = CurrentProvider?.GetType().FullName
121+
};
122+
123+
ResourcePermissions.Add(permission);
124+
125+
return permission;
126+
}
127+
128+
public virtual PermissionDefinition? GetResourcePermissionOrNull([NotNull] string resourceName, [NotNull] string name)
129+
{
130+
Check.NotNull(resourceName, nameof(resourceName));
131+
Check.NotNull(name, nameof(name));
132+
133+
return ResourcePermissions.FirstOrDefault(p => p.ResourceName == resourceName && p.Name == name);
134+
}
135+
136+
public virtual void RemoveResourcePermission([NotNull] string resourceName, [NotNull] string name)
137+
{
138+
Check.NotNull(resourceName, nameof(resourceName));
139+
Check.NotNull(name, nameof(name));
140+
141+
var resourcePermission = GetResourcePermissionOrNull(resourceName, name);
142+
if (resourcePermission == null)
143+
{
144+
throw new AbpException($"Not found resource permission with name: {name} for resource: {resourceName}");
145+
}
146+
ResourcePermissions.Remove(resourcePermission);
147+
}
103148
}

0 commit comments

Comments
 (0)