Ejemplo n.º 1
0
        public TokenUserDto Login(LoginDto dto)
        {
            var user = _baseRepository.Get <User>(x => x.UserName == dto.UserName);

            if (user == null)
            {
                throw new UnauthorizedAccessException(
                          AuthExceptionMessages.INVALID_USERNAME_OR_PASSWORD);
            }

            var computedHash = PasswordHelper.DecodePassword(user.PasswordSalt, dto.Password);

            for (var i = 0; i < computedHash.Length - 1; i++)
            {
                if (computedHash[i] != user.Password[i])
                {
                    throw new UnauthorizedAccessException(
                              AuthExceptionMessages.INVALID_USERNAME_OR_PASSWORD);
                }
            }

            var result = new TokenUserDto
            {
                Token = _jwtService.GenerateToken(dto)
            };

            return(result);
        }
Ejemplo n.º 2
0
            public async Task <CommandResponse> Handle(Command message, CancellationToken cancellationToken)
            {
                var result = new CommandResponse();

                #region Validate

                var isValid = true;

                if (string.IsNullOrEmpty(message.UserName))
                {
                    isValid = false;
                    result.Messages.Add("Username is required");
                }

                if (string.IsNullOrEmpty(message.Password))
                {
                    isValid = false;
                    result.Messages.Add("Password is required");
                }

                if (isValid)
                {
                    if ((await _mediator.Send(new CheckUserApi.Query()
                    {
                        UserName = message.UserName, Email = message.Email
                    })).IsExist)
                    {
                        isValid = false;
                        result.Messages.Add("Username or email was existed");
                    }
                    else
                    {
                        try
                        {
                            using (var scope = _scopeFactory.Create())
                            {
                                var context = scope.DbContexts.Get <MainContext>();

                                var profile = new UserProfile()
                                {
                                    Id    = Guid.NewGuid(),
                                    Email = message.Email
                                };

                                var user = new UserCredential()
                                {
                                    Id            = Guid.NewGuid(),
                                    UserName      = message.UserName,
                                    Password      = PasswordHelper.DecodePassword(message.Password),
                                    UserProfileId = profile.Id
                                };

                                context.Set <UserProfile>().Add(profile);
                                context.Set <UserCredential>().Add(user);

                                scope.SaveChanges();
                            }
                        }
                        catch (Exception ex)
                        {
                            isValid = false;
                            result.Messages.Add(ex.Message);
                        }
                    }
                }

                result.IsSuccessful = isValid;

                #endregion


                return(await Task.FromResult(result));
            }