| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Серверная часть сервиса хранения и управления информации о пользователе
Перейдите в папку проекта
Создайте виртуальное окружение командой и активируйте его:
foo@bar:~$ python3 -m venv venv
foo@bar:~$ source ./venv/bin/activate # На MacOS и Linux
foo@bar:~$ venv\Scripts\activate # На WindowsУстановите библиотеки
foo@bar:~$ pip install -r requirements.txt
foo@bar:~$ pip install -r requirements.dev.txtЗапускайте приложение!
foo@bar:~$ python -m userdata_api start --instance api -- запустит АПИ
foo@bar:~$ python -m userdata_api start --instance worker -- запустит Kafka workerПриложение состоит из двух частей - АПИ и Kafka worker'а.
АПИ нужно для управления структурой пользовательских данных - контроль над категориями данных, параметрами, источниками данных. Также, в АПИ пользовательские данные может слать сам пользователь(владелец этих данных), а также админ
Kafka worker нужен для того, чтобы разгребать поступающие от OAuth методов авторизации AuthAPI пользовательские данные
🌟 Все параметры для Kafka являются необязательными
Параметр - поле для пользовательской информации(например: Email, Телефон, Адрес, Курс обучения, Номер студенческого билета)
Категория - объединение нескольких параметров по общему признаку. Например: Email, Телефон - личная информация; Курс обучения, Номер студенческого билета - учеба. Категория имеет read_scope - право на её чтение другими пользователями и update_scope - право на её изменение дургими пользователями
Источник - откуда пришла информация о пользователе. Наприимер: VK, GitHub, LKMSU, User(он сам её добавил), Admin(админ её добавил). Источник имеет trust_level: то есть информации из одних источников мы можем доверять больше, чем другим
Информация - само значение поля. Имеет ссылку на параметр и источник. Соответственно, значение одного параметра у пользователя может быть списком, так как информация для этого параметра пришла из различных источников
Пользователь с id=1
| Категория | Параметр | Источник | Значение |
|---|---|---|---|
| Учёба | Курс обучения | User | 4 |
| Учёба | Курс обучения | LKMSU | 4 |
| Учёба | Номер студенческого билета | LKMSU | 42424242 |
| Личная информация | User | email1@real.email | |
| Личная информация | Admin | email2@real.email | |
| Личная информация | VK | email3@vk.real.email | |
| Личная информация | Yandex | email4@ya.real.email | |
| Личная информация | GitHub | email5@github.email | |
| Личная информация | Телефон | User | +79094242 |
{
"name": "", // Имя категории
"read_scope": "", // Скоуп на чтение
"update_scope": "" // Скоуп на запись
}{
"name": "", // Имя параметра
"is_required": bool, // Обязателен ли он
"changeable": bool, // Изменяем ли он после установки
"type": "all || last || most_trusted" // Какой значение параметра из множества, задаваемого источником, будет возвращаться
}{
"items": [ // Список новых значений
{
"category": "", // Имя категории в которой находится параметр
"param": "", // Имя изменяемого параметра
"value": "" // Новое значение. Если раньше значения не существовало, то оно будет создано. Если передать null, то значение будет удалено.
}
],
"source": "string" // Источник информации. По http доступно только user и admin
}Информацию меняется только в пределах источника. То есть админ не может поменять инфоормацию, переданную пользователем. Он может только создать новую или поменять информацию из источника admin
Пользователь может создать любую информацию о себе
Пользователь может обновить/удалить только изменяемую информацию
Неизменяемая информация изменяема при наличии scope userdata.info.update
Обновить информацию о другом пользователе из конкретноой категории можно только при наличии права на изменение в этой категории (см. category.update_scope)
Дернуть ручку GET /user/{user_id}.
Дернуть ручку GET /user?users=...?categories=....
Ручка закрыта за скоупом userdata.info.admin
Query параметры users и categories обязательные
В обеих GET /user/ ручках информация будет возвращаться таким образом:
В соответствии с переданными scopes
Можно получить только информацию из тех категорий на которые у него есть права (см category.read_scope)
С поставленными param.type.
Основная информация по разработке наших приложений
Ссылка на страницу с информацией по разработке userdata-api
| Back | FazBrowse Home | New Git URL |