Exemplo n.º 1
0
        public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
        {
            var user = await _userReadRepository.GetByEmailAsync(request.Email);

            var password = request.OldPassword.Encrypt(user.Salt);

            switch (request.GrantType)
            {
            case "new_password":
                if (!user.Password.Equals(password))
                {
                    return(new Response().AddError("The current password does not match"));
                }

                user.UpdatePassword(request.NewPassword);
                await _uow.CommitAsync();

                SendEmail(user);
                break;

            case "forgot_password":
                if (!user.ChangePasswordCode.Equals(request.VerificationCode.Encrypt(user.Salt)) && user.CodeExpiration < DateTime.UtcNow)
                {
                    return(new Response().AddError("Invalid verification code"));
                }

                user.UpdatePassword(request.NewPassword);
                await _uow.CommitAsync();

                SendEmail(user);
                break;
            }

            return(new Response());
        }
Exemplo n.º 2
0
        public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
        {
            var user = await _userReadRepository.GetAsync(request.Id);

            var UserEmailVerify = await _userReadRepository.GetByEmailAsync(request.Email);

            if (user.Id != UserEmailVerify.Id)
            {
                return(new Response().AddError("Email already registered"));
            }

            user.Update(request.Name, request.Email);
            _userWriteRepository.Update(user);
            await _uow.CommitAsync();

            var emailSubject = "Alteração de conta";

            var emailBody = $"<p>Olá, {user.Name}!</p>" +
                            "<p>Sua conta de usuário no sistema Calculador de Dívida alterada com sucesso!<p/>";

            List <string> emails = new List <string>();

            emails.Add(user.Email);

            await _mediator.Publish(new Notification(emailSubject, emailBody, emails));

            return(new Response(user));
        }
Exemplo n.º 3
0
        public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
        {
            var userData = await _userReadRepository.GetByEmailAsync(request.Email);

            var validCredentials = (userData != null && request.Password.Encrypt(userData.Salt) == userData.Password);

            if (!validCredentials)
            {
                return(new Response().AddError("Invalid Credentials"));
            }

            return(new Response(new UserModel(userData.Id, userData.Name, userData.Email, userData.IdProfile)));
        }
Exemplo n.º 4
0
        public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
        {
            var user = await _userReadRepository.GetByEmailAsync(request.Email);

            if (user == null)
            {
                return(new Response().AddError("Email is not registered"));
            }

            var newCode = _userWriteRepository.GenerateVerificationCode();

            user.UpdateChangePasswordCode(newCode);
            await _uow.CommitAsync();

            var emailSubject = "Código de Verificação";

            var emailBody = "<tr>" +
                            "<tr>" +
                            "<td align = \"center\" valign = \"middle\" width = \"100%\" style = \"font-family: Arial, sans-serif, 'Lato'; color: #585858; font-size: 22px; line-height: 1; padding-top: 48px;\" >" +
                            $"Olá, {user.Name}" +
                            "</td>" +
                            "</tr>" +
                            "<tr>" +
                            "<td align = \"center\" valign = \"middle\" width = \"100%\" style = \"font-family: Arial, sans-serif, 'Lato'; font-size: 32px; line-height: 1; padding-top: 35px;\" >" +
                            "Aqui está seu código de verificação para a troca de senha: " +
                            "</td>" +
                            "</tr>" +
                            "</tr>" +
                            "<tr>" +
                            "<td align=\"center\" width=\"100%\" style =\"font-family: Arial, sans-serif, 'Lato'; color: #000000; font-size: 42px; line-height: 1; padding-top: 0px;\">" +
                            $"{newCode}" +
                            "</td>" +
                            "</tr>";

            List <string> emails = new List <string>();

            emails.Add(user.Email);

            await _mediator.Publish(new Notification(emailSubject, emailBody, emails));

            return(new Response());
        }
Exemplo n.º 5
0
        public Task <User> GetUserByEmailAsync(string email)
        {
            var result = userReadRepository.GetByEmailAsync(email);

            return(result);
        }