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)); } } } }
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()); } }