Пример #1
0
        public async Task <User> LoginUser(LoginUserInfoQuery loginInfo)
        {
            var result = await _db.QueryFirstOrDefaultAsync <User>("select * from users where email=@email and password=@password",
                                                                   new{ @email = loginInfo.Email, @password = loginInfo.Password });

            return(result);
        }
        public async Task <IActionResult> Login(LoginUserInfoQuery loginInfo)
        {
            loginInfo.Password = _passwordHelper.EncodePasswordMd5(loginInfo.Password);
            var user = await _mediator.Send(loginInfo);

            if (user == null)
            {
                return(NotFound(new { info = "کاربری یافت نشد" }));
            }
            else if (user.IsActivated == false)
            {
                return(Error(new { info = "حساب کاربری شما فعال نشده است" }));
            }
            else
            {
                var secretKey         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Jwt:Key"]));
                var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);
                var tokenOptions      = new JwtSecurityToken(
                    issuer: _configuration["Jwt:Issuer"],
                    audience: _configuration["Jwt:Issuer"],
                    claims: new List <Claim>
                {
                    new Claim(ClaimTypes.Name, user.Email),
                    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                    new Claim(ClaimTypes.Role, "User"),
                    new Claim("FullName", user.FirstName + ' ' + user.LastName)
                },
                    expires: loginInfo.RememberMe?DateTime.Now.AddDays(30) : DateTime.Now.AddMinutes(3),
                        // expires: DateTime.Now.AddDays(30),
                        signingCredentials: signinCredentials
                    );

                var tokenString = new JwtSecurityTokenHandler().WriteToken(tokenOptions);


                return(Success(new { token = tokenString, expireTime = loginInfo.RememberMe ? 30 : 3, firstName = user.FirstName, lastName = user.LastName, userId = user.Id, email = user.Email, address = user.Address }));
            }
        }