Работа с данными

Загрузка данных

User Manager ожидает URL для загрузки и сохранения данных:

view:"usermanager", url:"remote/data"

Более подробную информацию о роутах и параметрах читайте в статье Работа с сервером.

Если у вас нет бэкенд сервера или ваш проект требует нестандартной логики, вы можете кастомизировать сервис Backend.

Структура данных

Пользователи

User Manager ожидает JSON данные, где у каждого элемента массива (пользователя) следующая структура:

  • avatar (string) - URL к авату пользователя;
  • details (string) - заметки о пользователе;
  • email (string) - email пользователя;
  • id (number) - ID пользователя;
  • name (string) - имя пользователя;
  • registered (string) - дата регистрации пользователя (формат ISO);
  • status (number) - текущий статус пользователя со следующими возможными значениями:
    • 0 - пользователь неактивен;
    • 1 - пользователь активен;
  • visited (string) - дата последнего посещения пользователя (формат ISO).

Пример данных пользователя

[
  {
    avatar: "remote/assets/image.jpg",
    details: "CEO of the Best CO.",
    email: "dvor.august@gmail.com",
    id: 97,
    name: "August Dvorak",
    registered: "2020-05-31T17:40:48Z",
    status: 0,
    visited: "2020-05-31T17:40:48Z"
  },
  // другие объекты
]

Роли

User Manager ожидает JSON данные, где у каждого элемента массива (роли) следующая структура:

  • id (number) - ID роли;
  • name (string) - название роли;
  • color (string) - цвет роли (код формата hex);
  • details (string) - заметки о роли.

Пример данных роли

[
  {
    id:1,
    name: "Admin",
    color: "#00a037",
    details: "Some details"
  },
  // другие объекты
]

Правила

User Manager ожидает JSON данные, где у каждого элемента массива (правила) следующая структура:

  • id (number) - ID правила;
  • long (string) - полное описание правила;
  • short (string) - краткое описание правила.

Пример данных правила

[
  {
    id: 1,
    long: "Can see user details and access levels",
    short: "CanSeeUsers"
  },
  // другие объекты
]

Сервисы для работы с данными

У User Manager следующие сервисы для работы с данными:

1. Local

  • хранит данные в коллекциях на клиентской стороне
  • предоставляет методы для получения пользователей, ролей и правил
  • предоставляет методы для получения метаданных
const local = $$("um").getService("local");
local.users(); // получаем коллекцию пользователей

2. Operations

  • предоставляет методы для добавления/обновления/удаления пользователей, ролей и правил
const ops = $$("um").getService("operations");
ops.updateRole(id, obj); // обновляем указанную роль

3. Prompt

  • предоставляет методы для инициализации и управления диалоговыми окнами
const prompt = $$("um").getService("prompt");
prompt.config(text); // определяем текст для окна

4. Progress

  • предоставляет методы для работы с индикатором прогресса
const prog = $$("um").getService("progress");
prog.start();

5. Backend

  • предоставляет методы запросов к серверу для получения данных и сохранения изменений
const back = $$("um").getService("backend");
back.rules().then((data) => console.log(data));

Смотрите папку models исходного кода, чтобы познакомиться с сигнатурами методов.

Как получить клиентские данные

Все данные о пользователях, ролях и правах хранятся в DataCollections. Чтобы получить доступ к коллекции, вызовите один из одноимённых методов сервиса Local: .users(), .roles() или .rules() соответственно. Методы принимают один параметр:

  • now (boolean) - если true, мы подразумеваем, что коллекция доступна на клиенте.
const data = $$("um").getService("local");
 
// доступ к коллекции 'users' 
const collection = data.users();

Если вы не уверены, загружена ли коллекция, можно запросить её асинхронно. Данные будут подгружены в процессе:

data.roles(true).then(collection => {/* ваш код */});

С помощью сериализации коллекции можно получить массив всех элементов:

const rules = data.rules(true)
.then(collection => {
    collection.serialize(); // массив прав доступа
});

Related sample:  User Manager: Data Operations

Как получить метаданные

Доступ к зависимостям между пользователями, ролями и правами

Загруженные записи не содержат информации о том, как пользователи, роли и права доступа связаны между собой. Это сделано из-за соображений безопасности.

Чтобы получить отношения, вызовите метод meta у сервиса Local. Метод принимает 1 параметр:

  • now (boolean) - если true, мы подразумеваем, что коллекция доступна на клиенте.
const data = $$("um").getService("local");
data.meta(true);

Метод возвращает объект со следующей структурой:

{
  "RoleRule":[[3,1]],
  "UserRole":[[4,3]], // пользователю с ID: 4 присвоена роль с ID: 3
  "UserRule":[[2,6]]
}

Доступ к последним действиям

Чтобы получить доступ к последним действиям пользователей, вызовите метод .logsMeta(). Метод принимает один параметр:

  • now (boolean) - если true, мы подразумеваем, что коллекция доступна на клиенте.
const data = $$("um").getService("local");
data.meta(true);

Метод возвращает объект с названием действий и области, где они были произведены:

{
  "1":{"name":"User login","target":"user"},
  "2":{"name":"Role added","target":"role"},
  "3":{"name":"Role data changed","target":"role"}
}
Наверх