//public async Task<Cl_UserToReturn> Register(Cl_UserDetails userDto)
        //{



        //    return new Cl_UserToReturn
        //    {
        //        UserName = identityUser.UserName,
        //        Email = identityUser.Email,
        //        Roles = "User",
        //        Message = "Đăng kí thành công"

        //    };

        //}

        public async Task <IEnumerable <Cl_UserToReturn> > GetListUsers()
        {
            var users = await userManager.Users.ToListAsync();

            var userDtos = new List <Cl_UserToReturn>();

            foreach (var user in users)
            {
                var roleNames = await userManager.GetRolesAsync(user);

                if (roleNames[0] == "User")
                {
                    var userDto = new Cl_UserToReturn
                    {
                        UserName = user.UserName,
                        Email    = user.Email,
                        Roles    = roleNames[0]
                    };

                    userDtos.Add(userDto);
                }
            }
            return(userDtos);
        }
Beispiel #2
0
        public async Task <IActionResult> Login([FromBody] LoginCredentials credentials)
        {
            try
            {
                if (!ModelState.IsValid || credentials == null)
                {
                    return(new BadRequestObjectResult(new { Message = "Vui lòng nhập tên tài khoản và mật khẩu" }));
                }

                var identityUser = await _userManager.FindByNameAsync(credentials.UserName);


                if (identityUser == null)
                {
                    return(new BadRequestObjectResult(new { Message = "Sai tên tài khoản" }));
                }

                var result = _userManager.PasswordHasher.VerifyHashedPassword(identityUser, identityUser.PasswordHash, credentials.Password);

                if (result == PasswordVerificationResult.Failed)
                {
                    return(new BadRequestObjectResult(new { Message = "Sai mật khẩu" }));
                }

                var roles = await _userManager.GetRolesAsync(identityUser);

                if (roles[0] != "User")
                {
                    return(new BadRequestObjectResult(new { Message = "Đăng nhập thất bại" }));
                }


                var claims = new List <Claim>
                {
                    new Claim(ClaimTypes.Email, identityUser.Email),
                    new Claim(ClaimTypes.Name, identityUser.UserName),
                    new Claim(ClaimTypes.Role, roles[0])
                };

                var claimsIdentity = new ClaimsIdentity(
                    claims, CookieAuthenticationDefaults.AuthenticationScheme);
                await HttpContext.SignInAsync(
                    CookieAuthenticationDefaults.AuthenticationScheme,
                    new ClaimsPrincipal(claimsIdentity));

                var userToReturn = new Cl_UserToReturn
                {
                    UserId      = identityUser.Id,
                    UserName    = identityUser.UserName,
                    Address     = identityUser.Address,
                    PhoneNumber = identityUser.PhoneNumber,
                    Email       = identityUser.Email,
                    Roles       = roles[0],
                    Message     = "Đăng nhập thành công"
                };
                return(Ok(userToReturn));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message.ToString()));
            }
        }