134 lines
8.9 KiB
Markdown
134 lines
8.9 KiB
Markdown
*************************
|
||
ZenDesk Access Controller
|
||
*************************
|
||
|
||
******************************
|
||
Управление правами доступа
|
||
******************************
|
||
|
||
**Идея** - Web приложение, выдает права пользователям системы по запросу самого пользователя. Например, из 12 человек 3
|
||
сейчас работают с правами админа, по окончании рабочей смены они сдают свои права (освобождают места) и другие
|
||
пользователи могут права запросить.
|
||
|
||
Оставшиеся 9 человек получают права легкого агента - без прав редактирования, только чтение.
|
||
|
||
Технологически приложение взаимодействует с **api** системы **Zendesk** (система обращений клиентов - жалобы),
|
||
проверяет авторизованного пользователя на права с возможностью менять права напрямую из Zendesk (синхронизация
|
||
с приоритетом у Zendesk).
|
||
|
||
Присутствует проверка, регистрации пользователя сайта на сайте Zendesk (по токену).
|
||
|
||
*Итого:*
|
||
1. Реализовать авторизацию пользователей с проверкой по API на существование такого пользователя
|
||
2. Реализовать интерфейс со статистикой рабочих мест(занято, свободно, кто занимает)
|
||
3. Реализовать логгирование действий(когда взял права, когда отдал - запись в файл и БД)
|
||
4. Реализовать передачу прав приложением по запросу от пользователя и замену прав пользователя у которого права отбираются внутри Zendesk (на легкий агент)
|
||
5. Реализовать синхронизацию по API на проверку прав(не менялись ли в системе Zendesk)
|
||
6. Реализовать возможность добавить большее количество админских прав
|
||
7. Реализовать возможность добавления легких агентов(права только на просмотр)
|
||
8. Реализовать на общей странице текущую информацию о пользователе - текущие права, карточка пользователя
|
||
|
||
************************
|
||
Технологический стек:
|
||
************************
|
||
- Python 3
|
||
- Django 3
|
||
|
||
**************
|
||
Quickstart
|
||
**************
|
||
``sudo apt install make``
|
||
|
||
``pip install --upgrade pip``
|
||
|
||
``pip install -r requirements.txt``
|
||
|
||
``./manage.py migrate``
|
||
|
||
``./manage.py loaddata data.json``
|
||
|
||
``./manage.py runserver``
|
||
|
||
**********************************
|
||
Перед запуском для тестирования:
|
||
**********************************
|
||
|
||
* убедитесь, что вы зарегистрированы в песочнице ZenDesk, у вас назначена организация (SYSTEM)
|
||
* для админов ZenDesk дополнительно - создайте токен доступа в ZenDesk
|
||
* при запуске в Docker убедитесь что папка, которая будет служить хранилищем для БД, открыта на запись и чтение
|
||
|
||
*****************************
|
||
Запуск на локальной машине:
|
||
*****************************
|
||
|
||
* скопировать репозиторий на локальную машину
|
||
* перейти в папку приложения
|
||
* активировать виртуальное окружение
|
||
* выполнить команду **pip install -r requirements.txt**
|
||
* в виртуальное окружение добавить следующие переменные:
|
||
|
||
|
||
| *ACCESS_CONTROLLER_API_EMAIL={EMAIL}* - почта админа в ZenDesk
|
||
| *ACCESS_CONTROLLER_API_PASSWORD={PASSWORD}* - пароль админа ZenDesk
|
||
| *ACCESS_CONTROLLER_API_TOKEN={API_TOKEN}* - API токен ZenDesk
|
||
| *ZD_DOMAIN={DOMAIN}* - домен ZenDesk
|
||
| *ENG_CROLE_ID={ENGINEER_CUSTOM_ROLE_ID}* - id роли инженера( custom_role_id сотрудника смены)
|
||
| *LA_CROLE_ID={LIGHT_AGENT_CUSTOM_ROLE_ID}* - id роли легкого агента (custom_role_id роли -легкий агент)
|
||
| *EMPL_GROUP={EMPLOYEE_GROUP_NAME}* - имя группы которой принадлежат сотрудники ССКС
|
||
| *BUF_GROUP={BUFFER_GROUP_NAME}* - имя буферной группы для передачи смен(через нее происходит управление тикетами)
|
||
| *ST_EMAIL={SOLVED_TICKETS_EMAIL}* - почта на которую будут переназначатся закрытые тикеты
|
||
| *LICENSE_NO={LICENSE_NO}* - количество лицензий, отображаемых как доступные в приложении
|
||
| *SHIFTH={SHIFT_HOURS}* - количество часов в рабочей смене (нужно для статистики, пока не реализовано но требует указания значения)
|
||
|
||
|
||
* выполнить команду **python manage.py makemigrations**
|
||
* выполнить команду **python manage.py migrate**
|
||
* запустить приложение командой **python manage.py runserver** (можно указать в параметрах для файла manage.py)
|
||
* перейти по ссылке в консоли (вероятнее всего откроется по адресу http://127.0.0.1:8000/)
|
||
|
||
******************
|
||
Запуск в Docker:
|
||
******************
|
||
|
||
Требуется установленный и настроенный Docker
|
||
|
||
* скопировать репозиторий на локальную машину
|
||
* в командной строке перейти в папку проекта
|
||
* выполнить команду **docker build**.
|
||
* выполнить команду **docker images** (нам нужен id созданного образа)
|
||
* выполнить команду **docker run -d -p 8000:8000 -e ACCESS_CONTROLLER_API_EMAIL={EMAIL} -e ACCESS_CONTROLLER_API_PASSWORD={PASSWORD}**...(перечисляем все параметры виртуального окружения, разделяя их -e) -v {абсолютный путь к папке, в которой будет размещена база}:/zendesk-access-controller/db {id образа докера}
|
||
* открыть запущенный контейнер в браузере (можно перейти по ссылке http://localhost:8000/)
|
||
|
||
*****************************
|
||
Запуск с тестовыми юзерами:
|
||
*****************************
|
||
|
||
| На локальной машине - перед запуском команды **python manage.py runserver** выполнить команду **python manage.py loaddata data.json**.
|
||
| Это создаст тестового админа и тестового пользователя в приложении для песочницы ZenDesk.
|
||
| **Админ - admin@gmail.com / zendeskadmin** ,
|
||
| **пользователь - 123@test.ru / zendeskuser** .
|
||
| Не сработает если домен песочницы отличается от ngenix1612197338 (на другом домене нужно будет создать сначала пользователей в песочнице с правами админа и легкого агента
|
||
| с этими же почтами, назначить им организацию (SYSTEM))
|
||
|
||
*******************************
|
||
Параметры тестовой песочницы:
|
||
*******************************
|
||
|
||
| *ACCESS_CONTROLLER_API_EMAIL={EMAIL}* - почта админа в ZenDesk - взять у роководителя(если вы не админ)
|
||
| *ACCESS_CONTROLLER_API_PASSWORD={PASSWORD}* - пароль админа ZenDesk - взять у роководителя(если вы не админ)
|
||
| *ACCESS_CONTROLLER_API_TOKEN={API_TOKEN}* - API токен зендеск - взять у роководителя(если вы не админ)
|
||
| *ZD_DOMAIN* =ngenix1612197338
|
||
| *ENG_CROLE_ID* =360005209000
|
||
| *LA_CROLE_ID* =360005208980
|
||
| *EMPL_GROUP* =Поддержка
|
||
| *BUF_GROUP* =Сменная группа
|
||
| *ST_EMAIL* =d.krikov@ngenix.net
|
||
| *LICENSE_NO* =3
|
||
| *SHIFTH* =12
|
||
|
||
************
|
||
Read more
|
||
************
|
||
- Zenpy: [http://docs.facetoe.com.au](http://docs.facetoe.com.au)
|
||
- Zendesk API: [https://developer.zendesk.com/rest_api/docs/](https://developer.zendesk.com/rest_api/docs/)
|