public async Task MediatorHandleCustomerLoginRequest()
        {
            var request = new CustomerRegistrationRequest()
            {
                Email     = $"zoom {new Random().Next(0, 9999999)}@gmail.com",
                FirstName = "asdasdsadas",
                LastName  = "qweqweqwe",
                Password  = "******"
            };
            Result result = await mediator.Send(request);

            Assert.True(result.Succeeded, "New Customer should be registered");

            var customer = await customerManager.FindByEmailAsync(request.Email);

            Assert.True(customer != null, "Customer should not be null since we just recently registered this customer");

            customer.UserInfo.EmailConfirmed = true;
            bool updated = await customerManager.UpdateAsync(customer);

            Assert.True(updated, "Customer should be updated");

            var customerLogin = new CustomerLoginRequest()
            {
                Email    = customer.UserInfo.Email,
                Password = request.Password
            };
            Result <AuthenticationTokens> loginResult = await mediator.Send(customerLogin);

            Assert.True(result.Succeeded, "Authentication tokens should be generated for CustomerLoginRequest");
            Assert.True(loginResult.Response.RefresthToken != null, "Refresh token should not be null after login successfully");
            Assert.True(loginResult.Response.AccessToken != null, "Access token should not be null after login successfully");
        }
        public async Task <Result <AuthenticationTokens> > Handle(CustomerLoginRequest request, CancellationToken cancellationToken)
        {
            var result = await authenticationService.LoginCustomerAsync(request);

            if (!result.Succeeded)
            {
                logger.LogError("ExchangeTokenHandler. Client login failed. Request email {email}, errors {@errors}",
                                request.Email, result.Errors);
            }

            return(result);
        }
        public Customer Authenticate(CustomerLoginRequest request)
        {
            var customer = _context.Customer.FirstOrDefault(x => x.Username == request.Username);

            if (customer != null)
            {
                var newHash = HashGenerator.GenerateHash(customer.PasswordSalt, request.Password);

                if (customer.PasswordHash == newHash)
                {
                    return(_mapper.Map <Customer>(customer));
                }
            }
            return(null);
        }
예제 #4
0
 public HttpResponseMessage Put([FromBody] CustomerLoginRequest customerLogin)
 {
     if (ModelState.IsValid && _customerRepository.IsAdmin(customerLogin))
     {
         var result = _customerRepository.InsertCustomer(customerLogin);
         if (result)
         {
             return(Request.CreateResponse(HttpStatusCode.OK, $"The customer was added"));
         }
         else
         {
             return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $"The customer was not added"));
         }
     }
     else
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid credentials!"));
     }
 }
예제 #5
0
        public async Task <IActionResult> Login([FromBody] CustomerLoginRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new AuthFailedResponse
                {
                    Errors = ModelState.Values.SelectMany(x => x.Errors.Select(xx => xx.ErrorMessage))
                }));
            }
            var authResponse = await _customersService.LoginCustomerAsync(request.Email, request.Password);

            if (!authResponse.Success)
            {
                return(BadRequest(new AuthFailedResponse {
                    Errors = authResponse.Errors
                }));
            }
            return(Ok(new AuthSuccessResponse {
                Token = authResponse.Token
            }));
        }
예제 #6
0
        public async Task <Result <AuthenticationTokens> > LoginCustomerAsync(CustomerLoginRequest request)
        {
            Customer customer = await customerManager.FindByEmailAsync(request.Email);

            if (customer != null)
            {
                if (!await customerManager.CheckPasswordAsync(customer, request.Password))
                {
                    logger.LogInformation("IAuthService. Login failed: User provided invalid password. " +
                                          "Client.Id {Id}, Client.Email {Email} ",
                                          customer.Id, customer.UserInfo.Email);

                    return(Result <AuthenticationTokens> .Failure("Invalid login credentials"));
                }

                return(await tokenService.GenerateAuthenticationTokensAsync(customer));
            }

            logger.LogInformation("IAuthService. Login failed: User provided nonexistent Email. " +
                                  "User.Email {Email}", request.Email);

            return(Result <AuthenticationTokens> .Failure("Invalid login credentials"));
        }