Merge branch 'develop' into dist/risotto/risotto-2.8.0/develop

This commit is contained in:
Emmanuel Garette 2021-04-12 15:11:54 +02:00
commit 83d74c2b06
2 changed files with 28 additions and 2 deletions

View File

@ -48,6 +48,31 @@ class Controller:
**kwargs,
)
@staticmethod
async def check_role(self,
uri: str,
username: str,
**kwargs: dict,
) -> None:
# create a new config
async with await Config(dispatcher.option) as config:
await config.property.read_write()
await config.option('message').value.set(uri)
subconfig = config.option(uri)
for key, value in kwargs.items():
try:
await subconfig.option(key).value.set(value)
except AttributeError:
if get_config()['global']['debug']:
print_exc()
raise ValueError(_(f'unknown parameter in "{uri}": "{key}"'))
except ValueOptionError as err:
raise ValueError(_(f'invalid parameter in "{uri}": {err}'))
await dispatcher.check_role(subconfig,
username,
uri,
)
async def on_join(self,
risotto_context,
):

View File

@ -333,7 +333,7 @@ class Dispatcher(register.RegisterDispatcher,
parameters = await subconfig.value.dict()
if extra_parameters:
parameters.update(extra_parameters)
return parameters
return parameters
def get_service(self,
name: str):
@ -342,7 +342,8 @@ class Dispatcher(register.RegisterDispatcher,
async def check_role(self,
config: Config,
user_login: str,
uri: str) -> None:
uri: str,
) -> None:
async with self.pool.acquire() as connection:
async with connection.transaction():
# Verify if user exists and get ID