예제 #1
0
        /// <summary>
        /// 客户登录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <CustomerListDto> Authenticate(CustomerLoginDto input)
        {
            var customer = await _customerRepository.FirstOrDefaultAsync(c => c.Account.Equals(input.Account));

            if (customer == null)
            {
                throw new UserFriendlyException("该账户不存在");
            }
            if (!customer.Password.Equals(input.Password))
            {
                throw new UserFriendlyException("密码错误");
            }
            var dto = customer.MapTo <CustomerListDto>();

            if (customer.License.HasValue)
            {
                var pro = await _objectManager.GetOrNullAsync(customer.License.Value);

                if (pro != null)
                {
                    dto.LicenseUrl = Host + pro.Url;
                }
            }
            if (customer.IdentityCard.HasValue)
            {
                var pro = await _objectManager.GetOrNullAsync(customer.IdentityCard.Value);

                if (pro != null)
                {
                    dto.IdentityCardUrl = Host + pro.Url;
                }
            }
            return(dto);
        }
예제 #2
0
        public async Task <IActionResult> CustomerLogin(CustomerLoginDto customerLoginDto)
        {
            var customerFromRepo = await _authRepo.CustomerLogin(customerLoginDto.Email.ToLower(), customerLoginDto.Password);

            if (customerFromRepo == null)
            {
                return(Unauthorized());
            }

            var claims = new [] {
                new Claim(ClaimTypes.NameIdentifier, customerFromRepo.Id.ToString()),
                new Claim(ClaimTypes.Name, customerFromRepo.Email)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8
                                               .GetBytes(_config.GetSection("AppSettings:Token").Value));

            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokenDescriptor = new SecurityTokenDescriptor {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };

            var tokenHandler = new JwtSecurityTokenHandler();

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(Ok(new {
                token = tokenHandler.WriteToken(token),
                username = customerFromRepo.FirstName,
                role = customerFromRepo.Role
            }));
        }
        public async Task <IActionResult> Login([FromBody] CustomerLoginDto model)
        {
            var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure : false);

            if (result.Succeeded)
            {
                var token = GenerateToken(model.Email);
                var user  = _customerService.GetCustomerByTerm(model.Email);

                return(Json(new { user, token, tokenExpireData = DateTime.Now.AddDays(1) }));
            }

            return(Json(JsonResultData.Error("Username or password isn't correct.")));
        }
예제 #4
0
        public async Task <IActionResult> Login([FromBody] CustomerLoginDto model)
        {
            var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure : false);

            if (result.Succeeded)
            {
                var token = GenerateToken(model.Email);
                var user  = _userService.GetCustomerByTerm(model.Email);

                return(Json(new { user, token }));
            }

            return(BadRequest());
        }
예제 #5
0
        public async Task <ActionResult <ApiResponse <AuthUserDto> > > Login(CustomerLoginDto dto)
        {
            try
            {
                var authUser = await _customerAuthService.Authenticate(dto.PhoneNo, dto.Password);

                if (authUser == null)
                {
                    throw new Exception("Invalid phone number or password.");
                }
                return(authUser.CreateSuccessResponse("Logged in successfully"));
            }
            catch (Exception exception)
            {
                return(BadRequest(exception.CreateErrorResponse()));
            }
        }
        public async Task <ActionResult <UserDto> > Login(CustomerLoginDto customerLoginDto)
        {
            var customer = await _context.Customer.FirstOrDefaultAsync(x => x.UserName == customerLoginDto.Username);

            if (customer == null)
            {
                return(Unauthorized("Invalid username or password."));
            }

            if (!VerifyPasswordHash(customerLoginDto.Password, customer.PasswordHash, customer.PasswordSalt))
            {
                return(null);
            }

            return(new UserDto
            {
                Username = customer.UserName,
                Token = _tokenService.CreateToken(customer)
            });
        }