Esempio n. 1
0
        public async Task <TokenViewModel> RecuperarMinhaSenha(string email)
        {
            Usuario _usuario = _repository.GetByUserName(
                email,
                q => q
                .Include(i => i.Tokens)
                );

            /// <summary>
            /// Para prever segurança e privacidade para o proprietário do endereço de e-mail,
            /// o usuário solicitante do "Recuperar senha" não será avisado que o e-mail não está registrado no sistema
            /// </summary>
            if (_usuario == null)
            {
                return(null);
            }

            string _identityToken = await _userManager.GeneratePasswordResetTokenAsync(_usuario);

            Token _newToken = _usuario.AddNewToken(_identityToken,
                                                   _repositoryTokenType.GetByCodigo(TokenType.ResetSenha).Id);

            _repository.Update(_usuario);

            if (!_uow.Commit())
            {
                throw new ApiException(ApiErrorCodes.ERRGERTOK);
            }

            //TODO: Enviar tokenId por email para reset de senha e retirar do return.

            return(new TokenViewModel(tokenId: _newToken.Id));
        }