protected override async Task <Unit> Process(UpdateRoleCommand request, CancellationToken cancellationToken)
        {
            var role = await _roleManager.GetById(request.Id);

            if (role == null)
            {
                await _notifiable.Notify("grupo", "grupo não encontrada.");

                return(Unit.Value);
            }

            role.Name = request.Name;

            var createRoleIdentityResult = await _roleManager.Update(role);

            foreach (var erro in createRoleIdentityResult.Errors)
            {
                await _notifiable.Notify(erro.Code, erro.Description);
            }

            if (_notifiable.IsValid())
            {
                await _roleManager.ClearAllClaims(role);

                foreach (var permissao in request.Permissions)
                {
                    _ = await _roleManager
                        .AddClaim(role, new Claim(IdentityConfigurations.DefaultRoleClaim, permissao.ToLower()));
                }
            }

            return(Unit.Value);
        }
示例#2
0
        private static async Task EnsureRoles <TContext>(TContext dbContext, IRoleManager roleManager, IEnumerable <string> permissions)
            where TContext : DbContext
        {
            var roleDbSet = dbContext.Set <Role>();

            if (!await roleDbSet.AnyAsync())
            {
                var role = new Role(Guid.NewGuid(), AdminRole);

                await roleManager.CreateRole(role);

                foreach (var permission in permissions)
                {
                    await roleManager.AddClaim(role, new Claim(IdentityConfigurations.DefaultRoleClaim, permission.ToLower()));
                }
            }
        }
        protected override async Task <Unit> Process(CreateNewRoleCommand request, CancellationToken cancellationToken)
        {
            var role = new Role(request.Id, request.Name);

            var createRoleIdentityResult = await _roleManager.CreateRole(role);

            foreach (var erro in createRoleIdentityResult?.Errors)
            {
                await _notifiable.Notify(erro.Code, erro.Description);
            }

            if (_notifiable.IsValid())
            {
                foreach (var permissao in request.Permissions)
                {
                    _ = await _roleManager
                        .AddClaim(role, new Claim(IdentityConfigurations.DefaultRoleClaim, permissao.ToLower()));
                }
            }

            return(Unit.Value);
        }