public Uteis.Retornos.Validacao.Resultado <AutenticacaoUsuario, Uteis.Retornos.Validacao.Falha> Autenticar(int codigo, string senha) { var senhaBase64 = Base64.ParaBase64(senha); var usuario = _usuarioServico.ValidarUsuario(codigo, senhaBase64); if (!usuario.EstaValido) { return(new Uteis.Retornos.Validacao.Falha("Codigo ou senha incorretos")); } usuario.Sucesso.Senha = senha; var claim = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, usuario.Sucesso.Id.ToString()) }); var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_configuracoes.ChaveSecreta); var tokenDescriptor = new SecurityTokenDescriptor { Subject = claim, Expires = DateTime.UtcNow.AddMinutes(5), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); AutenticacaoUsuario autenticacao = new AutenticacaoUsuario(); autenticacao.Usuario = usuario.Sucesso; autenticacao.Token = tokenHandler.WriteToken(token); return(autenticacao); }
private async void BtnEntrar_OnClicked(object sender, EventArgs e) { ActIndicator.IsVisible = true; #region Validação de Campos if (string.IsNullOrEmpty(TxtEmail.Text)) { await DisplayAlert("Put's, faltou algo! :O", "O campo EMAIL é obrigatório!", "Ok"); ActIndicator.IsVisible = false; return; } if (string.IsNullOrEmpty(TxtSenha.Text)) { await DisplayAlert("Put's, faltou algo! :O", "O campo SENHA é obrigatório!", "Ok"); ActIndicator.IsVisible = false; return; } #endregion var parametros = new Login { email = _email, senha = _senha }; if (await AutenticacaoUsuario.AutenticarUsuario(parametros)) { await Navigation.PushAsync(new MasterPageView()); } ActIndicator.IsVisible = false; }
public Retorno <AutenticacaoUsuario, Falha> Autenticar([FromBody] AutenticacaoUsuario autenticacao) { /*Esse código comentado seria util caso o token precisasse ser validado*/ //var token = autenticacao.Token; //var tokHandler = new JwtSecurityTokenHandler(); //if (token != string.Empty && tokHandler.CanReadToken(token)) //token formatado adequadamente? //{ // var jwtTokenLido = tokHandler.ReadJwtToken(token); //deserializa o token // if (jwtTokenLido.ValidTo.CompareTo(DateTime.UtcNow) > 0) // ainda não expirou // { // var jwtTokenLidoClaimsCount = jwtTokenLido.Claims.Where(x => x.Value == autenticacao.Usuario.Id.ToString()).Count(); //conta quantos claims vindos do token possuem o Id do usuário passado // if (jwtTokenLidoClaimsCount > 0) // { // return FormataRetorno(autenticacao); //retorna o mesmo token que ainda está válido // } // } //} //caso o token passado não seja válido, ou não esteja presente, gera um novo token com o usuário e senha passados var login = _loginServico.Autenticar(autenticacao.Usuario.Codigo, autenticacao.Usuario.Senha); if (!login.EstaValido) { return(FormataRetorno(autenticacao, "Codigo ou senha incorretos")); } return(FormataRetorno(login.Sucesso)); }
private void BtnEsqueciSenha_OnClicked(object sender, EventArgs e) { ActIndicator.IsVisible = true; AutenticacaoUsuario.GerarNovaSenha(TxtEmail.Text); ActIndicator.IsVisible = false; }
public ActionResult Entrar(UsuarioViewModel usuarioViewModel) { AutenticacaoUsuario usuarioParaAutenticar = new AutenticacaoUsuario(); usuarioParaAutenticar.Usuario = AutoMapper.Mapper.Map <Usuario>(usuarioViewModel); UsuarioService usuarioService = new UsuarioService(); var usuarioCadastrado = usuarioService.Autenticar(usuarioParaAutenticar); if (!usuarioCadastrado.EstaValido) { ModelState.AddModelError("", "Senha ou código(s) incorreto(s)."); //ou algum outro problema, investigar return(View("Index")); } else { Session[Login.ChaveUsuarioSession] = usuarioCadastrado.Sucesso; // pra poder gerar o token var professorUsuario = new ProfessorService().ObterPeloIdUsuario(usuarioCadastrado.Sucesso.Usuario.Id); //if (true) { } if (professorUsuario.Sucesso == null && !professorUsuario.EstaValido) { var alunoUsuario = new AlunoService().ObterPeloIdUsuario(usuarioCadastrado.Sucesso.Usuario.Id); if (alunoUsuario.Sucesso == null && !alunoUsuario.EstaValido) { ModelState.AddModelError("", "Erro interno. O código do usuário está cadastrado mas não existe nenhum professor ou aluno com este código."); return(View("Index")); } else { alunoUsuario.Sucesso.Codigo = usuarioCadastrado.Sucesso.Usuario.Codigo; alunoUsuario.Sucesso.Senha = usuarioCadastrado.Sucesso.Usuario.Senha; var autenticacaoAluno = new AutenticacaoAluno(alunoUsuario.Sucesso, usuarioCadastrado.Sucesso.Token); Session[Login.ChaveUsuarioSession] = autenticacaoAluno; return(RedirectToAction("Index", "Home")); } } else { professorUsuario.Sucesso.Codigo = usuarioCadastrado.Sucesso.Usuario.Codigo; professorUsuario.Sucesso.Senha = usuarioCadastrado.Sucesso.Usuario.Senha; var autenticacaoProfessor = new AutenticacaoProfessor(professorUsuario.Sucesso, usuarioCadastrado.Sucesso.Token); Session[Login.ChaveUsuarioSession] = autenticacaoProfessor; return(RedirectToAction("Index", "Home")); } } }
public Helpers.Retornos.Validacao.Resultado <AutenticacaoUsuario, Helpers.Retornos.Validacao.Falha> Autenticar(AutenticacaoUsuario autenticacaoUsuario) { /*O ERRO que ta acontecendo aqui é por que na primeira vez a senha vem decidoficada e a segunda vez não, preciso * descobrir onde seria a melhor parte pra decodificar a senha*/ if (autenticacaoUsuario == null) { return(new Helpers.Retornos.Validacao.Falha("Informe um usuário para autenticar")); } var response = JsonConvert.DeserializeObject <Retorno <AutenticacaoUsuario, Falha> >(RequisitarAPI("login/autenticar", RestSharp.Method.POST, autenticacaoUsuario).Content); if (response.Falha == null) { return(response.Sucesso.Objeto); } return(new Helpers.Retornos.Validacao.Falha(response.Falha.Mensagem)); }