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']); }
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; }