Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 976c2a9

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /