Exemplo n.º 1
0
        public IActionResult CheckToken(string token)
        {
            JudgePayload payload;

            try
            {
                payload = JWTJudgeProvider.DecodeToken(token);
            }
            catch (Exception)
            {
                return(Ok("Invalid"));
            }

            if (payload.Expires <= DateTime.Now)
            {
                return(Ok("Expired"));
            }

            var tokens = JWTJudgeFactory.GetAllTokensForJudge(payload.JudgeId);

            if (tokens.Any(t => t == token))
            {
                return(Ok("Valid"));
            }
            return(Ok("Invalid"));
        }
Exemplo n.º 2
0
        public IActionResult Authorize(string judgeId, string pass, string serviceId)
        {
            var currentTour =
                (from ct in _dbContext.CurrentTour
                 select ct.Current).Last();

            switch (currentTour)
            {
            case 0:
                var getJudgeCv = from judge in _dbContext.JudgesCv
                                 where judge.JudgeId == judgeId
                                 select judge;

                if (!getJudgeCv.Any())
                {
                    return(BadRequest("User not found"));
                }

                var judgeCv = getJudgeCv.First();
                if (!judgeCv.PassHash.Equals(pass))
                {
                    return(BadRequest("Incorrect password"));
                }

                var payloadCv = JudgePayload.Create(judgeCv, 0, serviceId);
                var serviceCv =
                    (from service in _dbContext.Services
                     where service.ServiceId == payloadCv.Service
                     select service).FirstOrDefault();
                if (serviceCv == null)
                {
                    return(BadRequest("Unknown service"));
                }

                var tokenCv = JWTJudgeProvider.CreateToken(payloadCv);
                JWTJudgeFactory.AddToken(judgeCv.JudgeId, tokenCv, true);

                return(Ok(tokenCv));


            case 1:
                var getJudgeFin = from judge in _dbContext.JudgesFin
                                  where judge.JudgeId == judgeId
                                  select judge;

                if (!getJudgeFin.Any())
                {
                    return(BadRequest("User not found"));
                }

                var judgeFin = getJudgeFin.First();
                if (!judgeFin.PassHash.Equals(pass))
                {
                    return(BadRequest("Incorrect password"));
                }

                var payloadFin = JudgePayload.Create(judgeFin, 1, serviceId);
                var tokenFin   = JWTJudgeProvider.CreateToken(payloadFin);
                JWTJudgeFactory.AddToken(judgeFin.JudgeId, tokenFin, true);

                return(Ok(tokenFin));


            default:
                return(BadRequest("Server error"));
            }
        }