Skip to content

Commit b36dbea

Browse files
authored
Merge pull request #135 from fretje/grantpermissions
Always grant all permissions to admin users during seed
2 parents 04bd5d0 + 527c6d9 commit b36dbea

File tree

2 files changed

+52
-37
lines changed

2 files changed

+52
-37
lines changed

aspnet-core/src/AbpCompanyName.AbpProjectName.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/HostRoleAndUserCreator.cs

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,34 @@ private void CreateHostRoleAndUsers()
3535
_context.SaveChanges();
3636
}
3737

38+
// Grant all permissions to admin role for host
39+
40+
var grantedPermissions = _context.Permissions.IgnoreQueryFilters()
41+
.OfType<RolePermissionSetting>()
42+
.Where(p => p.TenantId == null && p.RoleId == adminRoleForHost.Id)
43+
.Select(p => p.Name)
44+
.ToList();
45+
46+
var permissions = PermissionFinder
47+
.GetAllPermissions(new AbpProjectNameAuthorizationProvider())
48+
.Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Host) &&
49+
!grantedPermissions.Contains(p.Name))
50+
.ToList();
51+
52+
if (permissions.Any())
53+
{
54+
_context.Permissions.AddRange(
55+
permissions.Select(permission => new RolePermissionSetting
56+
{
57+
TenantId = null,
58+
Name = permission.Name,
59+
IsGranted = true,
60+
RoleId = adminRoleForHost.Id
61+
})
62+
);
63+
_context.SaveChanges();
64+
}
65+
3866
// Admin user for host
3967

4068
var adminUserForHost = _context.Users.IgnoreQueryFilters().FirstOrDefault(u => u.TenantId == null && u.UserName == AbpUserBase.AdminUserName);
@@ -61,26 +89,6 @@ private void CreateHostRoleAndUsers()
6189
_context.UserRoles.Add(new UserRole(null, adminUserForHost.Id, adminRoleForHost.Id));
6290
_context.SaveChanges();
6391

64-
// Grant all permissions
65-
var permissions = PermissionFinder
66-
.GetAllPermissions(new AbpProjectNameAuthorizationProvider())
67-
.Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Host))
68-
.ToList();
69-
70-
foreach (var permission in permissions)
71-
{
72-
_context.Permissions.Add(
73-
new RolePermissionSetting
74-
{
75-
TenantId = null,
76-
Name = permission.Name,
77-
IsGranted = true,
78-
RoleId = adminRoleForHost.Id
79-
});
80-
}
81-
82-
_context.SaveChanges();
83-
8492
// User account of admin user
8593
_context.UserAccounts.Add(new UserAccount
8694
{
@@ -89,7 +97,6 @@ private void CreateHostRoleAndUsers()
8997
UserName = AbpUserBase.AdminUserName,
9098
EmailAddress = adminUserForHost.EmailAddress
9199
});
92-
93100
_context.SaveChanges();
94101
}
95102
}

aspnet-core/src/AbpCompanyName.AbpProjectName.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantRoleAndUserBuilder.cs

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,25 +37,33 @@ private void CreateRolesAndUsers()
3737
{
3838
adminRole = _context.Roles.Add(new Role(_tenantId, StaticRoleNames.Tenants.Admin, StaticRoleNames.Tenants.Admin) { IsStatic = true }).Entity;
3939
_context.SaveChanges();
40+
}
4041

41-
// Grant all permissions to admin role
42-
var permissions = PermissionFinder
43-
.GetAllPermissions(new AbpProjectNameAuthorizationProvider())
44-
.Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Tenant))
45-
.ToList();
42+
// Grant all permissions to admin role
4643

47-
foreach (var permission in permissions)
48-
{
49-
_context.Permissions.Add(
50-
new RolePermissionSetting
51-
{
52-
TenantId = _tenantId,
53-
Name = permission.Name,
54-
IsGranted = true,
55-
RoleId = adminRole.Id
56-
});
57-
}
44+
var grantedPermissions = _context.Permissions.IgnoreQueryFilters()
45+
.OfType<RolePermissionSetting>()
46+
.Where(p => p.TenantId == _tenantId && p.RoleId == adminRole.Id)
47+
.Select(p => p.Name)
48+
.ToList();
49+
50+
var permissions = PermissionFinder
51+
.GetAllPermissions(new AbpProjectNameAuthorizationProvider())
52+
.Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Tenant) &&
53+
!grantedPermissions.Contains(p.Name))
54+
.ToList();
5855

56+
if (permissions.Any())
57+
{
58+
_context.Permissions.AddRange(
59+
permissions.Select(permission => new RolePermissionSetting
60+
{
61+
TenantId = _tenantId,
62+
Name = permission.Name,
63+
IsGranted = true,
64+
RoleId = adminRole.Id
65+
})
66+
);
5967
_context.SaveChanges();
6068
}
6169

0 commit comments

Comments
 (0)