prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Potentially expose user standings in admin scoreboard
  This could let people give out awards for users who earn the most points or something like that. 
  
  The issue with this is that user standings don't really mean anything. A user that earned all the points in a team might just have been the person to submit all the flags, not actually doing the work of a challenge. 
  
  I don't know if I want to expose this data for people to rely on when it fundamentally is based on a flawed data source. 
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `CTFd/admin/scoreboard.py`
  Content:
  ```
  1 from flask import render_template
  2 
  3 from CTFd.admin import admin
  4 from CTFd.scoreboard import get_standings
  5 from CTFd.utils.decorators import admins_only
  6 
  7 
  8 @admin.route("/admin/scoreboard")
  9 @admins_only
  10 def scoreboard_listing():
  11     standings = get_standings(admin=True)
  12     return render_template("admin/scoreboard.html", standings=standings)
  13
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/CTFd/admin/scoreboard.py b/CTFd/admin/scoreboard.py
  --- a/CTFd/admin/scoreboard.py
  +++ b/CTFd/admin/scoreboard.py
  @@ -1,12 +1,16 @@
   from flask import render_template
   
   from CTFd.admin import admin
  -from CTFd.scoreboard import get_standings
  +from CTFd.utils.config import is_teams_mode
   from CTFd.utils.decorators import admins_only
  +from CTFd.utils.scores import get_standings, get_user_standings
   
   
   @admin.route("/admin/scoreboard")
   @admins_only
   def scoreboard_listing():
       standings = get_standings(admin=True)
  -    return render_template("admin/scoreboard.html", standings=standings)
  +    user_standings = get_user_standings(admin=True) if is_teams_mode() else None
  +    return render_template(
  +        "admin/scoreboard.html", standings=standings, user_standings=user_standings
  +    )
  
verification_info: {"golden_diff": "diff --git a/CTFd/admin/scoreboard.py b/CTFd/admin/scoreboard.py\n--- a/CTFd/admin/scoreboard.py\n+++ b/CTFd/admin/scoreboard.py\n@@ -1,12 +1,16 @@\n from flask import render_template\n \n from CTFd.admin import admin\n-from CTFd.scoreboard import get_standings\n+from CTFd.utils.config import is_teams_mode\n from CTFd.utils.decorators import admins_only\n+from CTFd.utils.scores import get_standings, get_user_standings\n \n \n @admin.route(\"/admin/scoreboard\")\n @admins_only\n def scoreboard_listing():\n     standings = get_standings(admin=True)\n-    return render_template(\"admin/scoreboard.html\", standings=standings)\n+    user_standings = get_user_standings(admin=True) if is_teams_mode() else None\n+    return render_template(\n+        \"admin/scoreboard.html\", standings=standings, user_standings=user_standings\n+    )\n", "issue": "Potentially expose user standings in admin scoreboard\nThis could let people give out awards for users who earn the most points or something like that. \r\n\r\nThe issue with this is that user standings don't really mean anything. A user that earned all the points in a team might just have been the person to submit all the flags, not actually doing the work of a challenge. \r\n\r\nI don't know if I want to expose this data for people to rely on when it fundamentally is based on a flawed data source. \n", "before_files": [{"content": "from flask import render_template\n\nfrom CTFd.admin import admin\nfrom CTFd.scoreboard import get_standings\nfrom CTFd.utils.decorators import admins_only\n\n\n@admin.route(\"/admin/scoreboard\")\n@admins_only\ndef scoreboard_listing():\n    standings = get_standings(admin=True)\n    return render_template(\"admin/scoreboard.html\", standings=standings)\n", "path": "CTFd/admin/scoreboard.py"}], "after_files": [{"content": "from flask import render_template\n\nfrom CTFd.admin import admin\nfrom CTFd.utils.config import is_teams_mode\nfrom CTFd.utils.decorators import admins_only\nfrom CTFd.utils.scores import get_standings, get_user_standings\n\n\n@admin.route(\"/admin/scoreboard\")\n@admins_only\ndef scoreboard_listing():\n    standings = get_standings(admin=True)\n    user_standings = get_user_standings(admin=True) if is_teams_mode() else None\n    return render_template(\n        \"admin/scoreboard.html\", standings=standings, user_standings=user_standings\n    )\n", "path": "CTFd/admin/scoreboard.py"}]}