Exemplo n.º 1
0
        public ActionResult ContestRegisterIdentity()
        {
            string contestIdString = Request.QueryString["id"];

            if (string.IsNullOrEmpty(contestIdString))
            {
                return(QueryResult(1, "Contest ID is required."));
            }

            int contestId;

            if (!int.TryParse(contestIdString, out contestId))
            {
                return(QueryResult(2, "Invalid contest ID."));
            }

            ContestHandle contest = new ContestHandle(contestId);
            UserHandle    user    = UserSession.GetUserHandle(Session);

            if (user == null)
            {
                // 当前会话中不存在任何活动的登录用户。
                return(QueryResult(3, "User session not exist."));
            }

            ContestAuthorizationState authState = ContestAuthorization.GetUserAuthorizationState(contest, user);

            if (authState.RegisterState == ContestRegisterState.NotRegistered ||
                authState.RegisterState == ContestRegisterState.PasswordRequired)
            {
                return(QueryResult(string.Empty));
            }
            else
            {
                if (authState.RegisterState == ContestRegisterState.IndividualRegistered)
                {
                    return(QueryResult(user.Username));
                }
                else
                {
                    TeamHandle registeredTeam = new TeamHandle(authState.TeamId);
                    using (TeamDataProvider teamData = TeamDataProvider.Create(registeredTeam, true))
                    {
                        return(QueryResult(teamData.Name));
                    }
                }
            }
        }
Exemplo n.º 2
0
        public ActionResult Verify()
        {
            // 检查用户操作权限。
            if (!UserSession.IsAuthorized(Session))
            {
                return(LoginController.RequestForLogin(this));
            }

            // 检查 URL 查询参数。
            if (string.IsNullOrEmpty(Request.QueryString["id"]))
            {
                return(Redirect("~/Contest"));
            }

            int id;

            if (!int.TryParse(Request.QueryString["id"], out id))
            {
                return(Redirect("~/Contest"));
            }

            ContestHandle             contest = new ContestHandle(id);
            UserHandle                user    = new UserHandle(UserSession.GetUsername(Session));
            ContestAuthorizationState state   = ContestAuthorization.GetUserAuthorizationState(contest, user);

            switch (state.RegisterState)
            {
            case ContestRegisterState.IndividualRegistered:
            case ContestRegisterState.TeamRegistered:
                return(Redirect($"~/Contest/Show?id={id}"));

            case ContestRegisterState.PasswordRequired:
                return(View());

            case ContestRegisterState.NotRegistered:
            default:
                ViewBag.Failed = true;
                return(View());
            }
        }