Вопрос:
У нас пользователи разбиты на группы, которым дан доступ к различным дешбордам. Подскажите, пожалуйста, как получить на фронте название группы, к которой принадлежит пользователь?
А еще, оказывается, у пользователей, которые находятся в группах, могут быть свои личные ДОНАСТРОЙКИ, которые заключаются в персональном закрытии доступа к определенным дашбордам. Вот эти донастройки тоже нужно получить на фронте.
Ответ:
import {AuthenticationService} from 'bi-internal/core';
import {useService} from 'bi-internal/services';
const MyComponent = (props) => {
const authenticationServiceModel = useService<AuthenticationService>(AuthenticationService);
console.log(authenticationServiceModel); // модель текущего пользователя.
// интересны поля config, userConfig, sys_config
return (<div>test</div>)
}
export default MyComponent;
А ещё возможно потребуется сходить в таблицы adm.user_dataset_maps ,adm.user_group_dataset_maps
Пример:
GET /api/db/adm.user_dataset_maps
response:
[
{
"id": 11282,
"user_id": 1,
"dataset_id": 3597,
"effect": "can",
"op": "create"
},
{
"id": 7299,
"user_id": 9,
"dataset_id": 3508,
"effect": "can",
"op": "read"
},
{
"id": 11634,
"user_id": 6,
"dataset_id": 5692,
"effect": "can",
"op": "read"
},
{
"id": 11639,
"user_id": 1,
"dataset_id": 5694,
"effect": "can",
"op": "read"
},
...
]
Пример:
GET /api/db/adm.user_group_dataset_maps
response:
[
{
"id": 245,
"group_id": 45,
"dataset_id": 5348,
"effect": "can",
"op": "read"
},
{
"id": 246,
"group_id": 45,
"dataset_id": 5348,
"effect": "can",
"op": "create"
},
{
"id": 247,
"group_id": 45,
"dataset_id": 5348,
"effect": "can",
"op": "update"
},
{
"id": 248,
"group_id": 46,
"dataset_id": 6361,
"effect": "can",
"op": "read"
},
...
]
// модель текущего пользователя
Пример:
{
"id": "1",
"username": "adm",
"email": "haha@luxm11",
"access_level": "admin",
"name": "Админков Аwerg1",
"config": {
"themeId": "light",
"avatarId": "g3x1y5",
"favoriteAtlases": [
9512,
9511
]
},
"sys_config": {
"ext_groups": []
},
"site_role": "Super",
"license_role": "Admin",
"error": null,
"loading": false,
"authenticating": false,
"authenticated": true,
"userId": 1,
"userConfig": {
"themeId": "light",
"avatarId": "g3x1y5",
"favoriteAtlases": [
9512,
9511
]
},
"redirectUri": null
}
Существует несколько источников информации о том, что может пользователь.
Есть еще запросы /can/i на проверку прав совершения того или ного действия. За них отвечает CanIService (bi-internal/services) и компонент-обертка IfICan (bi-internal/ui)
<IfICan one="L databoring.configs">
<RootLink href="databoring/" text="Go to databoring" iconId="logo-databoring" title="Databoring"/>
</IfICan>
Компонент RootLink покажется только если у пользователя есть права L на табличку databoring.configs