Exemplo n.º 1
0
        public async Task <string> Authenticate(UserAuthenticateDTO userAuthenticate)
        {
            if (string.IsNullOrEmpty(userAuthenticate.Login))
            {
                throw new Exception("É necessário informar o login para autenticar!");
            }

            if (string.IsNullOrEmpty(userAuthenticate.Password))
            {
                throw new Exception("É necessário informar a senha para autenticar!");
            }

            var user = await _userRepository.GetByUsername(userAuthenticate.Login);

            if (user == null)
            {
                throw new Exception("Usuário informado não existe no sistema!");
            }

            var encryptedPassword = GenerateHash.ComputeSha256Hash(userAuthenticate.Password);

            if (encryptedPassword != user.Password)
            {
                throw new Exception("Não foi possível recuperar o token!");
            }

            return(TokenService.GenerateToken(user));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Authenticate(UserAuthenticateDTO userAuthenticateDto)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByEmailAsync(userAuthenticateDto.Email);

                if (user == null)
                {
                    return(NotFound());
                }

                var result =
                    await _signInManager.PasswordSignInAsync(user, userAuthenticateDto.Password, userAuthenticateDto.RememberMe, false);

                if (result.Succeeded)
                {
                    // проверяем, принадлежит ли URL приложению
                    if (!string.IsNullOrEmpty(userAuthenticateDto.ReturnUrl) && Url.IsLocalUrl(userAuthenticateDto.ReturnUrl))
                    {
                        return(Redirect(userAuthenticateDto.ReturnUrl));
                    }
                    else
                    {
                        return(RedirectToAction("Index", "Home"));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Неправильный логин и (или) пароль");
                }
            }
            return(View(userAuthenticateDto));
        }
Exemplo n.º 3
0
        public async Task <User> GetUserForPasswordAndUsername(UserAuthenticateDTO userAuthenticateDTO)
        {
            //Feito pois existe uma regra de hash no password
            var userAux = _mapper.Map <UserAuthenticateDTO, User>(userAuthenticateDTO);

            User user = await _context.TbUsers
                        .Where(w => w.UserName.Equals(userAux.UserName) && w.Password.Equals(userAux.Password))
                        .AsNoTracking()
                        .SingleOrDefaultAsync();

            return(user);
        }
Exemplo n.º 4
0
        public async Task <ActionResult <dynamic> > Authenticate([FromBody] UserAuthenticateDTO userAuthenticate)
        {
            try
            {
                var token = await _userService.Authenticate(userAuthenticate);

                return(Ok(new { token }));
            }
            catch (Exception ex)
            {
                return(Problem(ex.Message));
            }
        }
Exemplo n.º 5
0
        public async Task <ActionResult <dynamic> > AuthenticateAsync([FromBody] UserAuthenticateDTO userAuthenticateDTO)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    throw new Exception($"{ModelState.GenerateValidation()}");
                }

                User validUser = await _userService.GetUserForPasswordAndUsername(userAuthenticateDTO);

                if (validUser == null)
                {
                    return(NotFound(new { Message = "Usuário não encontrado!" }));
                }

                if (validUser.DeletedAt != null)
                {
                    return(BadRequest(new
                    {
                        Message = $"O usuário {validUser.FName} {validUser.LName}, foi bloqueado na data {validUser.DeletedAt}!"
                    }));
                }


                var token = _tokenService.GenerateToken(validUser);
                validUser.SetPassword("");

                return(new OkObjectResult(new
                {
                    BearerToken = token,
                    User = validUser
                }));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }