Exemplo n.º 1
0
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            if (actionContext == null)
            {
                actionContext = new HttpActionContext();
            }

            var token = actionContext.Request?.Headers?.Authorization?.Scheme;

            if (token == null)
            {
                actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized,
                                                                                   "Sem token de autenticação!");
                return;
            }

            _profissionalAcesso = _profissionalAcessoRepositorio.ConsultAcessoPorToken(token);

            if (_profissionalAcesso == null)
            {
                actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized,
                                                                                   "Token de autenticação inválido!");
                return;
            }

            if (_profissionalAcesso.QuantidadeMinuto < 50)
            {
                if (Convert.ToDateTime(_profissionalAcesso.Ultimo).AddHours(1) > DateTime.Now)
                {
                    if (Convert.ToDateTime(_profissionalAcesso.Ultimo).Minute == DateTime.Now.Minute)
                    {
                        _profissionalAcesso.QuantidadeMinuto++;
                    }
                    else
                    {
                        _profissionalAcesso.QuantidadeMinuto = 0;
                    }

                    _profissionalAcesso.Ultimo = DateTime.Now;
                    _profissionalAcesso.Ip     = HttpContext.Current != null
                        ? Convert.ToInt32(HttpContext.Current.Request.UserHostAddress?.Replace(":", ""))
                        : 0;

                    try
                    {
                        _profissionalAcessoRepositorio.Update(_profissionalAcesso);
                    }
                    catch (Exception)
                    {
                        actionContext.Response =
                            actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized,
                                                                      "Erro de conexão com o servidor contate o Administrador!");
                    }
                }
                else
                {
                    actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized,
                                                                                       "Token expirado!");
                }
            }
            else
            {
                actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized,
                                                                                   "Acesso bloqueado devido a quantidade excessiva de acessos ao servidor!");
            }
        }
Exemplo n.º 2
0
 public Auth()
 {
     _profissionalAcessoRepositorio = new ProfissionalAcessoRepository();
     _profissionalAcesso            = new ProfissionalAcesso();
 }