|
7 | 7 | from ._common import app, get_real_ip_addr |
8 | 8 | from ._config import RATE_LIMIT, RATELIMIT_STORAGE_URL, REDIS_HOST, REDIS_PASSWORD |
9 | 9 | from ._exceptions import ValidationFailedException |
10 | | -from ._params import extract_dates, extract_integers, extract_strings |
| 10 | +from ._params import extract_dates, extract_integers, extract_strings, parse_source_signal_sets |
11 | 11 | from ._security import _is_public_route, current_user, require_api_key, show_no_api_key_warning, resolve_auth_token, ERROR_MSG_RATE_LIMIT, ERROR_MSG_MULTIPLES |
12 | 12 |
|
13 | 13 |
|
@@ -71,12 +71,13 @@ def get_multiples_count(request): |
71 | 71 | def check_signals_allowlist(request): |
72 | 72 | signals_allowlist = {":".join(ss_pair) for ss_pair in DashboardSignals().srcsig_list()} |
73 | 73 | request_signals = [] |
74 | | - if "signal" in request.args.keys(): |
75 | | - request_signals += extract_strings("signal") |
76 | | - if "signals" in request.args.keys(): |
77 | | - request_signals += extract_strings("signals") |
78 | | - if "data_source" in request.args: |
79 | | - request_signals = [f"{request.args['data_source']}:{request_signal}" for request_signal in request_signals] |
| 74 | + request_args = request.args.keys() |
| 75 | + if "signal" in request_args or "signals" in request_args: |
| 76 | + source_signal_sets = parse_source_signal_sets() |
| 77 | + for source_signal in source_signal_sets: |
| 78 | + if isinstance(source_signal.signal, list): |
| 79 | + for signal in source_signal.signal: |
| 80 | + request_signals.append(f"{source_signal.source}:{signal}") |
80 | 81 | if len(request_signals) == 0: |
81 | 82 | return False |
82 | 83 | return all([signal in signals_allowlist for signal in request_signals]) |
|
0 commit comments