コード例 #1
0
        public async Task <ActionResult> TrocarSenha(Guid id, [FromBody] ContaTrocaSenhaModel model)
        {
            if (id != model.Id)
            {
                return(BadRequest(new BadRequestResponse("O id da rota precisa ser igual ao id do usuário")));
            }

            if (ModelState.IsInvalid())
            {
                return(BadRequest(new BadRequestResponse("Não foi possível atualizar a senha", ModelState, model)));
            }

            if (model.SenhaAtual == model.NovaSenha)
            {
                return(BadRequest(new BadRequestResponse("A nova senha precisa ser diferente da senha antiga")));
            }

            var usuario = await _contaServico.ObterPorUsuarioId(id);

            if (usuario == null)
            {
                return(NotFound(new NotFoundResponse("Usuário não localizado na base de dados")));
            }

            if (await _contaServico.TrocarSenha(usuario, model))
            {
                return(Ok(new OkResponse("Senha atualizada com sucesso")));
            }

            return(BadRequest(new BadRequestResponse("Não foi possível trocar a senha", _notificador.ObterNotificacoes(), model)));
        }
コード例 #2
0
        public async Task <bool> TrocarSenha(AppUser usuario, ContaTrocaSenhaModel conta)
        {
            var result = await _userManager.ChangePasswordAsync(usuario, conta.SenhaAtual, conta.NovaSenha);

            if (result.Succeeded)
            {
                return(true);
            }

            foreach (var erro in result.Errors)
            {
                _notificador.Handle(new Notificacao(erro.Description));
            }
            return(false);
        }