public void AutenticadoDeveRetornarFalsoSeASenhaForNula()
        {
            UsuarioEmpresa usuario = new UsuarioEmpresa(empresa, nomeContato, email, senha, senha);

            Assert.IsFalse(usuario.Autenticado(null));
        }
        public void AutenticadoDeveRetornarVerdadeiroSeASenhaForIgualASenhaDoUsuario()
        {
            UsuarioEmpresa usuario = new UsuarioEmpresa(empresa, nomeContato, email, "teste$1234*", "teste$1234*");

            Assert.IsTrue(usuario.Autenticado("teste$1234*"));
        }
        public void AutenticadoDeveRetornarFalsoSeASenhaForEspacosEmBranco()
        {
            UsuarioEmpresa usuario = new UsuarioEmpresa(empresa, nomeContato, email, senha, senha);

            Assert.IsFalse(usuario.Autenticado("    "));
        }
        public void AutenticadoDeveRetornarFalsoSeASenhaForDiferenteDaSenhaDoUsuario()
        {
            UsuarioEmpresa usuario = new UsuarioEmpresa(empresa, nomeContato, email, senha, senha);

            Assert.IsFalse(usuario.Autenticado("12345"));
        }
        public async Task <IActionResult> Autenticar([FromForm] AutenticarUsuarioEmpresaComando comando)
        {
            if (comando == null)
            {
                return(await Resposta(null, new List <Notification> {
                    new Notification("Usuario", "Usuário ou senha inválidos")
                }));
            }

            var claimsIdentity = await BuscarClaims(comando);

            if (claimsIdentity == null)
            {
                return(await Resposta(null, new List <Notification> {
                    new Notification("Usuario", "Usuário não encontrado.")
                }));
            }

            if (!_usuarioEmpresa.Autenticado(comando.Senha))
            {
                return(await Resposta(null, new List <Notification> {
                    new Notification("Usuario", "Senha inválida.")
                }));
            }

            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.UniqueName, _usuarioEmpresa.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.NameId, _usuarioEmpresa.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.Email, _usuarioEmpresa.Email.EnderecoEmail),
                new Claim(JwtRegisteredClaimNames.Sub, _usuarioEmpresa.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.Jti, await _tokenOptions.JtiGenerator()),
                new Claim(JwtRegisteredClaimNames.Iat, ConversorData.ConverterParaUnixEpochDate(_tokenOptions.IssuedAt).ToString(), ClaimValueTypes.Integer64),
            };

            foreach (Claim claim in claimsIdentity.Claims)
            {
                claims.Add(claim);
            }

            var jwt = new JwtSecurityToken(
                issuer: _tokenOptions.Issuer,
                audience: _tokenOptions.Audience,
                claims: claims,
                notBefore: _tokenOptions.NotBefore,
                expires: _tokenOptions.Expiration,
                signingCredentials: _tokenOptions.SigningCredentials);

            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

            var response = new
            {
                token   = encodedJwt,
                expires = (int)_tokenOptions.ValidFor.TotalSeconds,
                user    = new
                {
                    usuarioId   = _usuarioEmpresa.Id,
                    nome        = _usuarioEmpresa.Nome.nome,
                    email       = _usuarioEmpresa.Email.EnderecoEmail,
                    empresaId   = _usuarioEmpresa.Empresa.Id,
                    nomeEmpresa = _usuarioEmpresa.Empresa.NomeEmpresa.nome
                }
            };

            var json = JsonConvert.SerializeObject(response, _serializerSettings);

            return(new OkObjectResult(json));
        }