Esempio n. 1
0
 public function testUserDataAnotherUser()
 {
     $user = UserFactory::createUser("testuser3");
     $user2 = UserFactory::createUser("testuser4");
     $r = new Request(array("auth_token" => self::login($user), "username" => $user2->getUsername()));
     $response = UserController::apiProfile($r);
     $this->assertArrayNotHasKey("password", $response["userinfo"]);
     $this->assertEquals($user2->getUsername(), $response["userinfo"]["username"]);
 }
 public function testUserDataAnotherUser()
 {
     $user = UserFactory::createUser('testuser3');
     $user2 = UserFactory::createUser('testuser4');
     $r = new Request(array('auth_token' => self::login($user), 'username' => $user2->getUsername()));
     $response = UserController::apiProfile($r);
     $this->assertArrayNotHasKey('password', $response['userinfo']);
     $this->assertEquals($user2->getUsername(), $response['userinfo']['username']);
 }
Esempio n. 3
0
 public static function apiRequests(Request $r)
 {
     // Authenticate request
     self::authenticateRequest($r);
     Validators::isStringNonEmpty($r["contest_alias"], "contest_alias");
     try {
         $contest = ContestsDAO::getByAlias($r["contest_alias"]);
     } catch (Exception $e) {
         throw new InvalidDatabaseOperationException($e);
     }
     if (!Authorization::IsContestAdmin($r["current_user_id"], $contest)) {
         throw new ForbiddenAccessException();
     }
     try {
         $db_results = ContestUserRequestDAO::getRequestsForContest($contest->getContestId());
     } catch (Exception $e) {
         throw new InvalidDatabaseOperationException($e);
     }
     // @TODO prefetch an alias-user_id map so that we dont need
     // a getbypk (sql select query) on every iteration of the following loop
     // Precalculate all admin profiles.
     $admin_infos = array();
     foreach ($db_results as $result) {
         $admin_id = $result["admin_id"];
         if (!array_key_exists($admin_id, $admin_infos)) {
             $data = UsersDAO::getByPK($admin_id);
             if (!is_null($data)) {
                 $admin_infos[$admin_id]["user_id"] = $data->user_id;
                 $admin_infos[$admin_id]["username"] = $data->username;
                 $admin_infos[$admin_id]["name"] = $data->name;
             }
         }
     }
     $users = array();
     foreach ($db_results as $result) {
         $admin_id = $result["admin_id"];
         $result = new ContestUserRequest($result);
         $user_id = $result->getUserId();
         $user = UsersDAO::getByPK($user_id);
         // Get user profile. Email, school, etc.
         $profile_request = new Request();
         $profile_request["username"] = $user->getUsername();
         $profile_request["omit_rank"] = true;
         $userprofile = UserController::apiProfile($profile_request);
         $adminprofile = array();
         if (array_key_exists($admin_id, $admin_infos)) {
             $adminprofile = $admin_infos[$admin_id];
         }
         $users[] = array_merge($userprofile["userinfo"], array("last_update" => $result->last_update, "accepted" => $result->accepted, "extra_note" => $result->extra_note, "admin" => $adminprofile, "request_time" => $result->request_time));
     }
     $response = array();
     $response["users"] = $users;
     $response["status"] = "ok";
     return $response;
 }