Работа с сервером

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

User Manager ожидает бэкенд сервер для загрузки данных. Вы можете передать ссылку на сервер через параметр url:

webix.ui({
    view: "usermanager",
    url: "https://docs.webix.com/usermanager-backend/"
});

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

  • users (e.g. http://localhost:3200/users) - получает и сохраняет пользователей;
  • roles (e.g. http://localhost:3200/roles) - получает и сохраняет роли;
  • rules (e.g. http://localhost:3200/rules) - получает правила;
  • user (e.g. http://localhost:3200/user/{user_id}/credentials) - получает и сохраняет учётные данные пользователя;
  • logs (e.g. http://localhost:3200/logs/meta) - получает метаинформацию.

Вы также можете скачать готовый бэкенд для User Manager.

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

Сервис Backend

Сервис Backend это серверная модель, у которой есть методы для запросов на сервер. Они вызываются сервисом Operations при необходимости загрузки или сохранения данных.

Полный список методов вы найдёте ниже.

Как кастомизировать модель Backend

Чтобы менять запросы, получать и обрабатывать ответные данные вы можете:

  • создать свой бэкенд сервис и наследовать его от сервиса по умолчанию;
  • определять и переопределять методы;
  • использовать произвольный бэкенд сервис через свойство override.
class MyBackend extends userManager.services.Backend {
    // новые методы 
}
 
webix.ui({
    view: "usermanager",
    url:"http://localhost:3200/",
    override: new Map([
      [userManager.services.Backend, MyBackend]
    ])
});

Как изменить запрос на сервер

Чвы можете отправлять AJAX запросы на ваш сервер с помощью необходимых URL, напр.:

Добавляем пользователя

class MyBackend extends userManager.services.Backend {
  addUser(data) {
    return webix.ajax().post("//localhost:3200/users", data)
      .then(data => data.json());
  }
}

Обработка клиентских данных

Если вы хотите передать в User Manager клиентские данные, вам необходимо вернуть промис внутри следующих методов:

Клиентские данные

class MyBackend extends userManager.services.Backend {
    users() {
        return webix.promise.resolve(users);
    }
    roles() {
        return webix.promise.resolve(roles);
    }
    rules() {
      return webix.promise.resolve(rules);
    }
  }

Related sample:  User Manager: Local Data

Смотрите необходимый формат входных данных.

Методы сервиса Backend

В этой секции вы найдёте детальное описание следующих методов:

get(path)

Вызывается для всех операций по получению данных. Создаёт GET запрос по указанному пути.

Parameters:

  • path (string) - относительный путь.

Returns: промис с данными.

save(path, data, mode)

Вызывается для всех операций по сохранению данных. Создаёт POST/DELETE/PUT запрос с типом данных application/json в зависимости от действия пользователя.

Parameters:

  • path (string) - относительный путь;
  • data (object) - объект с данными для операции;
  • mode (number) - тип запроса. 0, 1 и 2 означают POST, DELETE или PUT запрос соответственно.

Returns: промис с данными.

users()

Вызывается при инициализации виджета.

Returns: промис с массивом объектов пользователей.

Request:

GET http://localhost:3200/users

Response:

Сервер возвращает массив с объектами пользователей.

[
  {"id":87,"name":"Berni Mayour","email":"","details":"",
  "visited":"2020-05-21T10:02:06Z","registered":"2020-05-21T10:02:06Z",
  "avatar":"http://localhost:3200/users/87/avatar/503723673.jpg",
  "status":1},
 
  {"id":95,"name":"John Doe","email":"","details":"",
  "visited":"2020-05-31T17:21:12Z","registered":"2020-05-31T17:21:12Z",
  "avatar":"","status":0}
]

addUser(data)

Добавляет нового пользователя.

Parameters:

  • data (object) - данные пользователя.

Returns: промис с объектом ID пользователя.

Request:

POST http://localhost:3200/users
Request Payload
name: "Walter Scott"

Response:

Сервер возвращает объект с ID пользователя.

{"id":99}

deleteUser(id)

Удаляет указанного пользователя.

Parameters:

  • id (string) - ID пользователя.

Returns: промис с объектом ID пользователя.

Request:

DELETE http://localhost:3200/users/98

Response:

Сервер возвращает объект с ID пользователя.

{"id":98}

updateUser(id, data)

Изменяет и сохраняет данные указанного пользователя.

Parameters:

  • id (string) - ID пользователя;
  • data (object) - новые данные.

Returns: промис с объектом ID пользователя.

Request:

PUT http://localhost:3200/users/99
Request Payload
avatar: ""
details: ""
email: "elly.soyer@example.com"
id: 98
name: "Elly Soyer"
registered: "2020-05-31T17:42:34Z"
status: 1
visited: "2020-05-31T17:42:34Z"

Response:

Сервер возвращает объект с ID пользователя.

{"id":98}

roles()

Вызывается, когда пользователь открывает список ролей.

Returns: промис с массивом объектов ролей.

Request:

GET http://localhost:3200/roles

Response:

Сервер возвращает массив с объектами ролей.

[
  {"id":1,"name":"The Creator","color":"#00a037","details":""},
  {"id":2,"name":"Sales","color":"#e7a90b","details":""},
  {"id":3,"name":"Admin","color":"#038cd9","details":""}
]

addRole(data)

Добавляет новую роль.

Parameters:

  • data (object) - данные роли.

Returns: промис с объектом ID роли.

Request:

POST http://localhost:3200/roles
Request Payload
name: "Manager"

Response:

Сервер возвращает объект с ID роли.

{"id":5}

deleteRole(id)

Удаляет указанную .

Parameters:

  • id (string) - ID роли.

Returns: промис с объектом ID роли.

Request:

DELETE http://localhost:3200/roles/3

Response:

Сервер возвращает объект с ID роли.

{"id":3}

updateRole(id, data)

Изменяет и сохраняет данные указанной роли.

Parameters:

  • id (string) - ID роли;
  • data (object) - новые данные.

Returns: промис с объектом ID роли.

Request:

PUT http://localhost:3200/roles/7
Request Payload
color: "#006EDD"
details: ""
id: 7
name: "Designer"
rules: [7, 1]

Response:

Сервер возвращает объект с ID роли.

{"id":7}

rules()

Вызывается, когда пользователь открывает список правил.

Returns: промис с массивом объектов правил.

Request:

GET http://localhost:3200/rules

Response:

Сервер возвращает массив объектов правил.

[
  {"id":1,"short":"CanSeeUsers","long":"Can see user details and access levels"},
  {"id":2,"short":"CanEditUsers","long":"Can modify user details and access levels"},
  {"id":3,"short":"CanAdminProjects","long":"Can create projects"}
]

meta()

Вызывается, когда пользователь переходит во вкладку аудита.

Returns: промис с объектом отношений категорий.

Request:

GET http://localhost:3200/meta

Response:

Сервер возвращает объект с отношениями между пользователями и ролями:

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

avatar(id)

Вызывается при загрузке нового аватара.

Parameters:

  • id (string) ID пользователя.

Returns: объект с данными аватара.

Request:

POST http://localhost:3200/users/95/avatar

Response:

Сервер возвращает объект данных загруженного аватара.

{
  "status":"server",
  "value":"http://localhost:3200/users/95/avatar/photo.jpg"
}

credentials(id)

Вызывается, когда пользователь переходит в область редактирования профиля.

Parameters:

  • id (string) - ID пользователя.

Returns: промис с массивом учётных данных пользователя.

Request:

GET http://localhost:3200/user/87/credentials

addCredentials(id, data)

Добавляет учётные данные пользователю.

Parameters:

  • id (string) - ID пользователя;
  • data (object) - новые данные.

Returns: промис с объектом ID пользователя.

Request:

POST http://localhost:3200/user/100/credentials
Request Payload
record: "test"
source: 1
user_id: 100

Response:

Сервер возвращает объект с ID пользователя.

{"id":100}

resetPassword(id, data)

Вызывается при сбросе пароля пользователя.

Parameters:

  • id (string) - ID пользователя;
  • data (object) - новый пароль.

Returns: промис с объектом ID учётных данных.

Request:

PUT http://localhost:3200/user/100/credentials
Request Payload
id: 23
record: "qwerty123"

Response:

Сервер возвращает объект с ID учётных данных.

{"id":100}

deleteCredentials(id, credId)

Вызывается при удалении учётный данных.

Parameters:

  • id (string) - ID пользователя;
  • credId (string) - ID учётных данных.

Returns: объект с ID учётных данных.

Request:

DELETE http://localhost:3200/user/100/credentials/23

Содержит URL сегмент, ID пользователя и ID учётных данных.

Response:

Сервер возвращает объект с ID учётной записи.

{"id":23}

logs(type, id)

Вызывается, когда пользователь выбирает одну из записей (logins, changes to или changes by) в разделе аудита.

Parameters:

  • type (string) - тип записи. Может быть login, user или by-user;
  • id (string) - ID пользователя.

Returns: промис с массивом объектов аудита.

GET http://localhost:3200/logs/by-user/100

Содержит URL сегмент, тип записей и ID пользователя.

Response:

Сервер возвращает массив объектов аудита. Ниже представлен пример аудита записи changes to.

[
  {"id":506,"user_id":1,"target_id":87,"type":5,
  "details":"Berni Mayour","date":"2020-05-21T10:02:06Z"},
  {"id":524,"user_id":1,"target_id":87,"type":6,
  "details":"role Guest added","date":"2020-05-21T14:36:56Z"}
]

logsMeta()

Вызывается, когда пользователь переходит в раздел аудита.

Returns: промис с массивом выполненных пользователем действий.

Request:

GET http://localhost:3200/logs/meta

Response:

Сервер возвращает массив объектов аудита по выполненным в User Manager действиям.

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