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);
            }
        }
Example #2
0
 public UserPermissionService(AuthzContext dbContext)
 {
     _dbContext = dbContext;
 }