Степаненко Ольга bf2c1cc1be Add Union and Optional types
2021-04-15 17:22:45 +03:00
2021-04-08 15:39:47 +03:00
2021-04-15 14:43:54 +03:00
2021-03-05 19:07:13 +03:00
2021-04-15 17:22:45 +03:00
2021-02-04 20:01:35 +03:00
2021-04-06 14:06:36 +03:00
2021-02-04 20:01:35 +03:00
2021-04-15 14:43:54 +03:00
2021-04-05 14:53:47 +03:00


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


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%