|
3 | 3 | # This software is licensed under the BSD 3-Clause License. |
4 | 4 | from typing import Callable, Dict, Iterable, List, Tuple, Union |
5 | 5 |
|
| 6 | +import flask_login |
6 | 7 | from flask import abort, render_template |
7 | 8 | from jinja2.exceptions import TemplateNotFound |
8 | 9 | from signac import Project |
|
12 | 13 | from signac_dashboard.module import Module |
13 | 14 |
|
14 | 15 |
|
15 | | -def plot_viewer_asset(filename): |
16 | | - try: |
17 | | - return render_template(f"plot_viewer/{filename}") |
18 | | - except TemplateNotFound: |
19 | | - abort(404, "The file requested does not exist.") |
20 | | - |
21 | | - |
22 | 16 | class PlotViewer(Module): |
23 | 17 | """Displays a plot associated with the job. |
24 | 18 |
|
@@ -96,7 +90,13 @@ def get_cards(self, job_or_project): |
96 | 90 |
|
97 | 91 | def register(self, dashboard: Dashboard): |
98 | 92 | # Register routes |
99 | | - dashboard.app.route("/module/plot_viewer/<path:filename>")(plot_viewer_asset) |
| 93 | + @dashboard.app.route("/module/plot_viewer/<path:filename>") |
| 94 | + @flask_login.login_required |
| 95 | + def plot_viewer_asset(filename): |
| 96 | + try: |
| 97 | + return render_template(f"plot_viewer/{filename}") |
| 98 | + except TemplateNotFound: |
| 99 | + abort(404, "The file requested does not exist.") |
100 | 100 |
|
101 | 101 | # Register assets |
102 | 102 | assets = ["js/plot_viewer.js"] |
|
0 commit comments