private async ValueTask SeedDb(AuthzContext dbContext, CancellationToken cancellationToken) { if (!await dbContext.Permissions.AnyAsync(cancellationToken)) { // if no permissions are present, we create everything from scratch // this is so we can all be in the same page during the blog post; var permissions = new[] { new Permission(Guid.NewGuid(), Permissions.Create), new Permission(Guid.NewGuid(), Permissions.Read), new Permission(Guid.NewGuid(), Permissions.Update), new Permission(Guid.NewGuid(), Permissions.Delete) }; dbContext.Permissions.AddRange(permissions); var users = new[] { new User(Guid.NewGuid(), "818727", "*****@*****.**"), new User(Guid.NewGuid(), "88421113", "*****@*****.**") }; dbContext.Users.AddRange(users); var alicePermissions = new[] { // Alice has CRUD permissions new UserPermission(Guid.NewGuid(), users[0].Id, permissions[0].Id), new UserPermission(Guid.NewGuid(), users[0].Id, permissions[1].Id), new UserPermission(Guid.NewGuid(), users[0].Id, permissions[2].Id), new UserPermission(Guid.NewGuid(), users[0].Id, permissions[3].Id) }; var bobPermissions = new[] { // Bob has only Read permission new UserPermission(Guid.NewGuid(), users[1].Id, permissions[1].Id), }; dbContext.UserPermissions.AddRange(alicePermissions.Concat(bobPermissions)); await dbContext.SaveChangesAsync(cancellationToken); } }
public UserPermissionService(AuthzContext dbContext) { _dbContext = dbContext; }