Получение на Фронте название группы, к которой принадлежит пользователь

Вопрос:

У нас пользователи разбиты на группы, которым дан доступ к различным дешбордам. Подскажите, пожалуйста, как получить на фронте название группы, к которой принадлежит пользователь?

А еще, оказывается, у пользователей, которые находятся в группах, могут быть свои личные ДОНАСТРОЙКИ, которые заключаются в персональном закрытии доступа к определенным дашбордам. Вот эти донастройки тоже нужно получить на фронте.

Ответ:

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