public IComandResult Handle(AutenticarUsuarioComand comand) { //verificar se tem notificação no comand if (!comand.IsValid()) { return(new ComandResult(false, "Por favor corrija os campos abaixo", comand.Notifications)); } //verifica se o usuário ja existe var usuario = _repository.Autenticar(comand.Login, comand.Senha); if (usuario == null) { AddNotification("Usuario", "Senha ou email inválidos!"); } else { usuario.SetarUltimoAcesso(); _repository.Alterar(usuario); } //AddNotifications(email.Notifications); if (Invalid) { return(new ComandResult(false, "Por favor corrija os campos abaixo", Notifications)); } // Persistir no banco // Enviar um E-mail de boas vindas // Retornar o resultado para tela return(new ComandResult(true, "Login efetuado com sucesso", new { usuario.Login, usuario.Id, usuario.Nome, usuario.SobreNome, usuario.TipoUsuario, usuario.Foto, usuario.ConfigDadoPessoal })); }
public object Post( [FromBody] AutenticarUsuarioComand usuario, [FromServices] SigningConfigurations signingConfigurations, [FromServices] TokenConfigurations tokenConfigurations) { bool credenciaisValidas = false; var resposta = (ComandResult)_usuarioHandler.Handle(usuario); if (resposta.Success == false) { return(resposta); } else { usuarioComand = DeserializerObjeto <UsuarioComand> .RetornoObjetoTipado(resposta.Data); credenciaisValidas = true; Commit(resposta.Success); } //var usuarioBase = usersDAO.Find(usuario.UserID); //credenciaisValidas = (usuarioBase != null usuario.UserID == usuarioBase.UserID && usuario.AccessKey == usuarioBase.AccessKey); if (credenciaisValidas) { ClaimsIdentity identity = new ClaimsIdentity( new GenericIdentity(usuarioComand.Id, "UsuarioId"), new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")), new Claim(JwtRegisteredClaimNames.UniqueName, usuarioComand.Id), new Claim(JwtRegisteredClaimNames.Email, usuario.Login), new Claim(JwtRegisteredClaimNames.Sid, usuarioComand.Id), new Claim("Administrador", usuarioComand.TipoUsuario) //new Claim(JwtRegisteredClaimNames.NameId, usuario.Nome), //new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Id.ToString()) } ); var usuarioHomeCommandResult = new UsuarioHomeCommandResult(usuario.Login, usuarioComand.Nome, usuarioComand.SobreNome, usuarioComand.Foto, usuarioComand.TipoUsuario); DateTime dataCriacao = DateTime.Now; DateTime dataExpiracao = dataCriacao + TimeSpan.FromSeconds(tokenConfigurations.Seconds); var handler = new JwtSecurityTokenHandler(); var securityToken = handler.CreateToken(new SecurityTokenDescriptor { Issuer = tokenConfigurations.Issuer, Audience = tokenConfigurations.Audience, SigningCredentials = signingConfigurations.SigningCredentials, Subject = identity, NotBefore = dataCriacao, Expires = dataExpiracao }); var token = handler.WriteToken(securityToken); return(new { authenticated = true, created = dataCriacao.ToString("yyyy-MM-dd HH:mm:ss"), expiration = dataExpiracao.ToString("yyyy-MM-dd HH:mm:ss"), accessToken = token, message = "OK", Usuario = usuarioComand }); } else { return(new { authenticated = false, message = "Falha ao autenticar" }); } }