Fix application of command line arguments
The command line arguments (either as arguments or via the prompt) for the
access codes are currently not picked up by itkdb. The problem is that the
commandline module propagates the arguments to settings by setting
environmental variables. However the settings have already been initialized at
the time this happens, so setting the enviromental variable happens too late.
To reproduce the issue:
pip install itkdb==0.3.15
itkdb --accessCode1 test1 --accessCode2 test2 authenticate
The second line fails with the following. Note the empty access codes.
{"grant_type": "password", "accessCode1": "", "accessCode2": "", "scope": "openid https://itkpd-test.unicorncollege.cz"}
The following details may help:
{
"uuAppErrorMap": {
"uu-oidc-main/grantToken/unexpectedError": {
"id": "1f35e77d61e942e5a953a3ba101a0c44",
"timestamp": "2021-12-21T18:16:25.422Z",
"type": "error",
"message": "Grant token failed.",
"cause": {
"uu.app.error/UNEXPECTED_INTERNAL_EXCEPTION": {
"id": "558b3c907342443d8e057e06e174fcba",
"type": "error",
"message": "Secret must be not null."
}
}
}
},
"error_description": "Secret must be not null.",
"error": "server_error"
}
This fixes it by doing two things:
- All command line arguments (access codes, site/auth URL's) directly modify
the attributes of
_sessionand_session._user. - Add
User._prefix_urlattribute that corresponds to theAUTH_URLinstead of hardcoded call to the settings module. The other attributes already existed.