ZenDesk Access Controller

Управление правами доступа

Идея - написать программу(Web приложение), которая будет выдавать права пользователям системы по запросу самого пользователя. Например, из 12 человек 3 сейчас работают с правами админа, по окончании рабочей смены они сдают свои права (освобождают места) и другие пользователи могут запросить эти права в свое пользование.

Оставшиеся 9 человек получают права легкого агента - без прав редактирования, а только чтение.

Из технологий - программа должна взаимодействовать с api системы Zendesk(система обращений клиентов - жалобы), проверять авторизованного пользователя на права(будет возможность менять права напрямую из Zendesk - нужна синхронизация прав с приоритетом у Zendesk).

Если руками в самом Zendesk права у пользователя отобрали или наоборот присвоили, то наша программа обновляет статус пользователя в соответствии с данными синхронизации (например, раз в минуту).

Так же в идеале должна быть проверка, что пользователь сайта существует на сайте Zendesk(по токену).

Сэндбокс Zendesk нам предоставит моя компания, библиотеку для работы с api уже подсказали. Сама программа (наша) будет обладать админскими правами и реализовывать контроль и выдачу прав другим пользователям.

Итого:

  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 Access Controller instruction for eng

##Перед запуском для тестирования:

Убедитесь, что вы зарегистрированы в песочнице 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 токен зендеск 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

Description
No description provided
Readme 2.8 MiB
Languages
Python 70.3%
HTML 14.3%
JavaScript 11.4%
SCSS 2.4%
CSS 0.8%
Other 0.8%