예제 #1
0
        public async Task <ObjectResult> Login([FromBody] LoginViewModel usuario)
        {
            ObjectDataResult <JWTToken> result = new ObjectDataResult <JWTToken>();
            bool credenciaisValidas            = false;

            if (usuario != null && !string.IsNullOrWhiteSpace(usuario.UserName))
            {
                // Verifica a existência do usuário nas tabelas do
                // ASP.NET Core Identity
                var userIdentity = await _userManager
                                   .FindByNameAsync(usuario.UserName);

                if (userIdentity != null)
                {
                    // Efetua o login com base no Id do usuário e sua senha
                    SignInResult resultadoLogin = _signInManager
                                                  .CheckPasswordSignInAsync(userIdentity, usuario.Password, false)
                                                  .Result;
                    credenciaisValidas = resultadoLogin.Succeeded;
                }
            }

            if (credenciaisValidas)
            {
                result.Success = true;
                result.Data    = _accountManagement.GenerateToken(usuario.UserName);
            }
            else
            {
                result.Success = false;
                result.Message = "invalid credentials";
            }

            return(result);
        }
        public async Task <IActionResult> Login(LoginCredentials credentials)
        {
            var user = await LoginManager.Login(credentials);

            if (user != null)
            {
                var token = AccountManager.GenerateToken(user);
                return(Ok(new { token }));
            }
            else
            {
                return(Unauthorized());
            }
        }