/// <summary> /// Cria uma credencial para o usuário.. /// </summary> /// <param name="novoUsuario">o usuario a ser cadastrado.</param> /// <returns>Credencial pronta para uso.</returns> private CredencialAcesso CredencialDoNovoUsuario(UsuarioSistema novoUsuario) { CredencialAcesso credencial = new CredencialAcesso(); credencial.UsuarioSistema = novoUsuario; credencial.DtStatusCredencial = DateTime.Now; return(credencial); }
/// <summary> /// Salvars the informacoes pessoais usuario. /// </summary> /// <param name="usuario">The usuario.</param> public void SalvarInformacoesPessoaisUsuario(UsuarioSistema usuario) { var repositorioUsuarioSistema = this.Repositorio as IRepositorioUsuarioSistema; ValidacaoUsuarioSistema validador = new ValidacaoUsuarioSistema(repositorioUsuarioSistema); var resultadoValidacao = validador.ValidadorAlteracaoDadosPessoaisUsuario().Validar(usuario); this.GarantirValidacao(resultadoValidacao); CredencialAcesso credAnteriorBD = this.repositorioCredencialAcesso.Consultar(usuario.Credenciais.Where(x => x.StatusCredencial == EnumSituacao.ATIVO).FirstOrDefault().Id); CredencialAcesso novaCredencial = new CredencialAcesso { DtStatusCredencial = DateTime.Now, LembreteSenha = "Nenhum", Senha = usuario.NovaSenha, StatusCredencial = EnumSituacao.ATIVO, UsuarioSistema = usuario }; credAnteriorBD.StatusCredencial = EnumSituacao.INATIVO; this.repositorioCredencialAcesso.Atualizar(credAnteriorBD); this.repositorioCredencialAcesso.Adicionar(novaCredencial); }
public object Login([FromBody] CredencialAcesso credencial) { try { if (credencial == null) { return(BadRequest("Credenciais não fornecidas.")); } var login = _loginService.GetByLogin(credencial); if (login == null) { return(NoContent()); } return(Ok(login)); } catch (Exception ex) { return(BadRequest(ex)); } }
public object GetByLogin(CredencialAcesso credenciais) { try { bool validadeCredencial = false; if (credenciais != null && !string.IsNullOrWhiteSpace(credenciais.Usuario)) { usuario = _pessoaRepository.GetbyLogin(credenciais.Usuario); if (credenciais.TipoConcessao.Equals("password")) { //convertendo a senha do usuário em base 64 var textBytes = Encoding.UTF8.GetBytes(credenciais.Senha); string encodeText = Convert.ToBase64String(textBytes); credenciais.Senha = encodeText; //verificando se as credenciais do usuário são validas validadeCredencial = (usuario != null && credenciais.Usuario == usuario.Slogin && credenciais.Senha == usuario.Ssenha); } else if (credenciais.TipoConcessao.Equals("refresh_token")) { if (!string.IsNullOrWhiteSpace(credenciais.RefreshToken)) { //buscando no banco o refresh token do usuário RefreshToken refreshTokenBase = _refreshTokenRepository.GetRefreshToken(usuario.NidPessoa); //calculando nova data de expiração do token DateTime dataExpiracao = DateTime.Parse(credenciais.Expiration); dataExpiracao = dataExpiracao + TimeSpan.FromSeconds(_tokenConfiguration.FinalExpiration); DateTime dtaAtual = DateTime.Now; //verificando se o refresh token é valido validadeCredencial = (refreshTokenBase != null && usuario.NidPessoa == refreshTokenBase.NidPessoa && refreshTokenBase.SrefreshToken == credenciais.RefreshToken && dataExpiracao >= dtaAtual); } } } if (validadeCredencial) { ClaimsIdentity identity = new ClaimsIdentity( new GenericIdentity(credenciais.Usuario, "Login"), new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")), new Claim(JwtRegisteredClaimNames.UniqueName, usuario.NidPessoa.ToString()), new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Snome), new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Slogin), new Claim(JwtRegisteredClaimNames.UniqueName, usuario.NidTipoPessoa.ToString()), new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Sapelido) } ); //cria a data de criação e expriração do token DateTime dataCriacao = DateTime.Now; DateTime dataExpiracao = dataCriacao + TimeSpan.FromSeconds(_tokenConfiguration.Seconds); //calcula um tempo de sobre para a expricação do token TimeSpan finalExpriracao = TimeSpan.FromSeconds(_tokenConfiguration.FinalExpiration); JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler(); string token = CreateToken(identity, dataCriacao, dataExpiracao, handler); return(SuccessObject(dataCriacao, dataExpiracao, token, finalExpriracao, usuario.NidPessoa)); } else { return(ExceptionObject()); } } catch (Exception ex) { throw ex; } }