************************* 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/)