public async Task <IActionResult> Editar([FromBody] UsuarioAddUpdateRequest req) { if (ModelState.IsValid) { await _usuarioService.EditarAsync(req); return(Ok()); } return(BadRequest()); }
public async Task <IActionResult> Adicionar([FromBody] UsuarioAddUpdateRequest req) { if (ModelState.IsValid) { var id = await _usuarioService.AdicionarAsync(req); if (!string.IsNullOrEmpty(id)) { return(Created($"/api/user/{id}", req)); } } return(BadRequest()); }
public async Task <string> AdicionarAsync(UsuarioAddUpdateRequest req) { // Valida se as permissoes informadas existem no sistema if (req.Permissoes != null) { foreach (var permissao in req.Permissoes) { if (String.IsNullOrWhiteSpace(permissao)) { throw new EntityModelInvalidException($"Permissão {permissao} inválida"); } if (!Roles.RolesExistentes().Contains(permissao.ToUpper())) { throw new EntityNotFoundException($"Permissão {permissao} inexistente"); } } } var usuario = _mapper.Map <Usuario>(req); if (_userManager.FindByNameAsync(usuario.UserName).Result == null) { var resultado = _userManager .CreateAsync(usuario, req.Password).Result; if (resultado.Succeeded) { foreach (var permissao in req.Permissoes) { await _userManager.AddToRoleAsync(usuario, permissao.ToUpper()); } } else { string sMsgErro = string.Empty; foreach (var err in resultado.Errors) { sMsgErro += err.Description + "\r\n"; } throw new EntityModelInvalidException($"Não foi possível criar o usuário.\r\nDetalhes: {sMsgErro}"); } } else { throw new EntityUniqueViolatedException("Usuario existente"); } return(usuario.Id); }
public async Task EditarAsync(UsuarioAddUpdateRequest req) { // Valida se as permissoes informadas existem no sistema foreach (var permissao in req.Permissoes) { if (String.IsNullOrWhiteSpace(permissao)) { throw new EntityModelInvalidException($"Permissão {permissao} inválida"); } if (!Roles.RolesExistentes().Contains(permissao.ToUpper())) { throw new EntityNotFoundException($"Permissão {permissao} inexistente"); } } Usuario usuario = await _userManager.FindByNameAsync(req.UserName); if (usuario == null) { throw new EntityNotFoundException("Usuario não encontrado"); } usuario.Email = req.Email; usuario.Roles = null; await _userManager.UpdateAsync(usuario); // Remove todas as permissoes e adiciona as que vierem da requisicao if (req.Permissoes.Length > 0) { var resultRoles = await _userManager.GetRolesAsync(usuario); await _userManager.RemoveFromRolesAsync(usuario, resultRoles); foreach (var permissao in req.Permissoes) { await _userManager.AddToRoleAsync(usuario, permissao.ToUpper()); } } // Troca de senha if (!string.IsNullOrWhiteSpace(req.Password)) { await _userManager.RemovePasswordAsync(usuario); await _userManager.AddPasswordAsync(usuario, req.Password); } }