Skip to content

Commit 976c2a9

Browse files
authored
Added permissions in the seed data (#11)
1 parent 51b176b commit 976c2a9

File tree

2 files changed

+97
-2
lines changed

2 files changed

+97
-2
lines changed

server/AuthWebApplication/AuthWebApplication/Models/Db/DbInitializer.cs

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Linq;
55
using System.Threading.Tasks;
66
using Microsoft.AspNetCore.Identity;
7+
using Microsoft.EntityFrameworkCore;
78
using Microsoft.Extensions.Logging;
89
using Newtonsoft.Json;
910

@@ -21,6 +22,7 @@ public static void Initialize(SecurityDbContext context, UserManager<Application
2122
password, SuperAdmin).GetAwaiter()
2223
.GetResult();
2324
CreateResources(context, dbInitializerLogger);
25+
CreatePermissions(context, dbInitializerLogger);
2426
}
2527

2628
private static void CreateRole(SecurityDbContext context, ILogger<DbInitializer> logger, string role)
@@ -90,7 +92,7 @@ private static void AddRoleToApplicationUser(SecurityDbContext context, ILogger<
9092
context.ApplicationUserRoles.FirstOrDefault(x => x.UserId == user.Id && x.RoleId == applicationRole.Id);
9193
if (userRole == null)
9294
{
93-
ApplicationUserRole entity = new ApplicationUserRole() {RoleId = applicationRole.Id, UserId = user.Id};
95+
ApplicationUserRole entity = new ApplicationUserRole() { RoleId = applicationRole.Id, UserId = user.Id };
9496
context.ApplicationUserRoles.Add(entity);
9597
var saveChanges = context.SaveChanges();
9698
if (saveChanges == 0)
@@ -129,7 +131,44 @@ private static void CreateResources(SecurityDbContext context, ILogger<DbInitial
129131
}
130132
}
131133
}
132-
134+
}
135+
136+
private static void CreatePermissions(SecurityDbContext context, ILogger<DbInitializer> logger)
137+
{
138+
var readAllText = File.ReadAllText("./Resources/permissions.json");
139+
var permissions = JsonConvert.DeserializeObject<List<ApplicationPermission>>(readAllText);
140+
foreach (var permission in permissions)
141+
{
142+
logger.LogInformation($"Create the permission for resource `{permission.Resource.Name}` and role `{permission.Role.Name} ");
143+
144+
var role = context.ApplicationRoles.FirstOrDefault(x=>x.Name == permission.Role.Name);
145+
var resource = context.Resources.FirstOrDefault(x=>x.Name == permission.Resource.Name);
146+
147+
var any = context.Permissions.Include(x => x.Role).Include(x => x.Resource).AsEnumerable()
148+
.Any(x => string.Equals(x.RoleId, role.Id, StringComparison.CurrentCultureIgnoreCase)
149+
&& string.Equals(x.ResourceId, resource.Id, StringComparison.CurrentCultureIgnoreCase));
150+
if (!any)
151+
{
152+
var appPermission = new ApplicationPermission(){
153+
IsAllowed = permission.IsAllowed,
154+
ResourceId = resource.Id,
155+
RoleId = role.Id
156+
};
157+
context.Permissions.Add(appPermission);
158+
var i = context.SaveChanges();
159+
if (i > 0)
160+
{
161+
logger.LogDebug($"Created the permission for resource `{permission.Resource.Name}` and role `{permission.Role.Name}");
162+
}
163+
else
164+
{
165+
ApplicationException exception =
166+
new ApplicationException($"Default resource `{permission.Resource.Name}` & role `{permission.Role.Name} cannot be created");
167+
logger.LogError(exception, $"Exception occurred. {exception.Message}");
168+
throw exception;
169+
}
170+
}
171+
}
133172
}
134173
}
135174
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
[
2+
{
3+
"Role": {
4+
"Name": "SuperAdmin"
5+
},
6+
"Resource": {
7+
"Name": "link-permission-create"
8+
},
9+
"IsAllowed": true
10+
},
11+
{
12+
"Role": {
13+
"Name": "SuperAdmin"
14+
},
15+
"Resource": {
16+
"Name": "link-permission-list"
17+
},
18+
"IsAllowed": true
19+
},
20+
{
21+
"Role": {
22+
"Name": "SuperAdmin"
23+
},
24+
"Resource": {
25+
"Name": "link-resource-create"
26+
},
27+
"IsAllowed": true
28+
},
29+
{
30+
"Role": {
31+
"Name": "SuperAdmin"
32+
},
33+
"Resource": {
34+
"Name": "link-resource-list"
35+
},
36+
"IsAllowed": true
37+
},
38+
{
39+
"Role": {
40+
"Name": "SuperAdmin"
41+
},
42+
"Resource": {
43+
"Name": "link-role-create"
44+
},
45+
"IsAllowed": true
46+
},
47+
{
48+
"Role": {
49+
"Name": "SuperAdmin"
50+
},
51+
"Resource": {
52+
"Name": "link-role-list"
53+
},
54+
"IsAllowed": true
55+
}
56+
]

0 commit comments

Comments
 (0)