Skip to content
This repository was archived by the owner on Jun 1, 2023. It is now read-only.

Commit 40a89c6

Browse files
committed
Added 2 helper functions.
1 parent 5788b92 commit 40a89c6

File tree

2 files changed

+58
-16
lines changed

2 files changed

+58
-16
lines changed

src/oidcrp/configure.py

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
from oidcrp.util import get_http_params
77
from oidcrp.util import load_yaml_config
88
from oidcrp.util import lower_or_upper
9+
from oidcrp.util import replace
10+
from oidcrp.util import set_param
911

1012
try:
1113
from secrets import token_urlsafe as rnd_token
@@ -22,13 +24,9 @@ def __init__(self, conf: Dict) -> None:
2224
# server info
2325
self.domain = lower_or_upper(conf, "domain")
2426
self.port = lower_or_upper(conf, "port")
27+
format_args = {'domain': self.domain, 'port': self.port}
2528
for param in ["server_name", "base_url"]:
26-
_pre = lower_or_upper(conf, param)
27-
if _pre:
28-
if '{domain}' in _pre:
29-
setattr(self, param, _pre.format(domain=self.domain, port=self.port))
30-
else:
31-
setattr(self, param, _pre)
29+
set_param(self, conf, param, **format_args)
3230

3331
# HTTP params
3432
_params = get_http_params(conf.get("http_params"))
@@ -42,7 +40,7 @@ def __init__(self, conf: Dict) -> None:
4240
# diverse
4341
for param in ["html_home", "session_cookie_name", "preferred_url_scheme",
4442
"services", "federation"]:
45-
setattr(self, param, lower_or_upper(conf, param))
43+
set_param(self, conf, param)
4644

4745
rp_keys_conf = lower_or_upper(conf, 'rp_keys')
4846
if rp_keys_conf is None:
@@ -53,16 +51,12 @@ def __init__(self, conf: Dict) -> None:
5351
for key, spec in _clients.items():
5452
if key == "":
5553
continue
56-
if not spec.get("redirect_uris"):
57-
continue
54+
# if not spec.get("redirect_uris"):
55+
# continue
5856

59-
_redirects = []
60-
for _r in spec["redirect_uris"]:
61-
if '{domain}' in _r:
62-
_redirects.append(_r.format(domain=self.domain, port=self.port))
63-
else:
64-
_redirects.append(_r)
65-
spec["redirect_uris"] = _redirects
57+
for uri in ['redirect_uris', 'post_logout_redirect_uris','frontchannel_logout_uri',
58+
'backchannel_logout_uri']:
59+
replace(spec, uri, **format_args)
6660

6761
setattr(self, "clients", _clients)
6862

src/oidcrp/util.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,54 @@ def lower_or_upper(config, param, default=None):
290290
return res
291291

292292

293+
def replace(config, param, **kwargs):
294+
lc_param = param.lower()
295+
uc_param = None
296+
res = config.get(lc_param)
297+
if not res:
298+
uc_param = param.upper()
299+
res = config.get(uc_param)
300+
301+
if res:
302+
if uc_param is not None:
303+
del config[uc_param]
304+
305+
_keys = kwargs.keys()
306+
if _keys:
307+
# just grab one key
308+
_key = list(_keys)[0]
309+
if isinstance(res, list):
310+
_lst = []
311+
for _re in res:
312+
if "{{{}}}".format(_key) in _re:
313+
_lst.append(_re.format(**kwargs))
314+
config[lc_param] = _lst
315+
else:
316+
if "{{{}}}".format(_key) in res:
317+
config[lc_param] = res.format(**kwargs)
318+
else:
319+
config[lc_param] = res
320+
321+
322+
def set_param(instance, config, param, **kwargs):
323+
lc_param = param.lower()
324+
res = config.get(lc_param)
325+
if not res:
326+
res = config.get(param.upper())
327+
328+
if res:
329+
_keys = list(kwargs.keys())
330+
if _keys:
331+
# just grab one key
332+
_key = list(kwargs.keys())[0]
333+
if "{{{}}}".format(_key) in res:
334+
setattr(instance, lc_param, res.format(**kwargs))
335+
else:
336+
setattr(instance, lc_param, res)
337+
else:
338+
setattr(instance, lc_param, res)
339+
340+
293341
def create_context(dir_path, config, **kwargs):
294342
_fname = lower_or_upper(config, "server_cert")
295343
if _fname:

0 commit comments

Comments
 (0)