Идея - написать программу(Web приложение), которая будет выдавать права пользователям системы по запросу самого
**Идея** - Web приложение, выдает права пользователям системы по запросу самого пользователя. Например, из 12 человек 3
пользователя. Например, из 12 человек 3 сейчас работают с правами админа, по окончании рабочей смены они сдают
сейчас работают с правами админа, по окончании рабочей смены они сдают свои права (освобождают места) и другие
свои права (освобождают места) и другие пользователи могут запросить эти права в свое пользование.
пользователи могут права запросить.
Оставшиеся 9 человек получают права легкого агента - без прав редактирования,а только чтение.
Оставшиеся 9 человек получают права легкого агента - без прав редактирования, только чтение.
Из технологий - программа должна взаимодействовать с api системы Zendesk(система обращений клиентов - жалобы),
Технологически приложение взаимодействует с**api** системы **Zendesk**(система обращений клиентов - жалобы),
проверять авторизованного пользователя на права(будет возможность менять права напрямую из Zendesk - нужна
проверяет авторизованного пользователя на правас возможностью менять права напрямую из Zendesk (синхронизация
синхронизация прав с приоритетом у Zendesk).
с приоритетом у Zendesk).
Если руками в самом Zendesk права у пользователя отобрали или наоборот
Присутствует проверка, регистрации пользователя сайта на сайте Zendesk (по токену).
присвоили, то наша программа обновляет статус пользователя в соответствии с данными синхронизации
(например, раз в минуту).
Так же в идеале должна быть проверка, что пользователь сайта существует на сайте Zendesk(по токену).
Сэндбокс Zendesk нам предоставит моя компания, библиотеку для работы с api уже подсказали.
Сама программа (наша) будет обладать админскими правами и реализовывать контроль и выдачу прав другим пользователям.
*Итого:*
*Итого:*
1. Реализовать авторизацию пользователей с проверкой по API на существование такого пользователя
1. Реализовать авторизацию пользователей с проверкой по API на существование такого пользователя
2. Реализовать интерфейс со статистикой рабочих мест(занято, свободно, кто занимает)
2. Реализовать интерфейс со статистикой рабочих мест(занято, свободно, кто занимает)
3. Реализовать логирование действий(когда взял права, когда отдал - запись в файл и БД)
3. Реализовать логгирование действий(когда взял права, когда отдал - запись в файл и БД)
4. Реализовать передачу прав приложением по запросу от пользователя и замену прав пользователя
4. Реализовать передачу прав приложением по запросу от пользователя и замену прав пользователя у которого права отбираются внутри Zendesk (на легкий агент)
у которого права отбираются внутри Zendesk (на легкий агент)
5. Реализовать синхронизацию по API на проверку прав(не менялись ли в системе Zendesk)
5. Реализовать синхронизацию по API на проверку прав(не менялись ли в системе Zendesk)
6. Реализовать возможность добавить большее количество админских прав
6. Реализовать возможность добавить большее количество админских прав
7. Реализовать возможность добавления легких агентов(права только на просмотр)
7. Реализовать возможность добавления легких агентов(права только на просмотр)
8. Реализовать на общей странице текущую информацию о пользователе - текущие права, карточка пользователя
8. Реализовать на общей странице текущую информацию о пользователе - текущие права, карточка пользователя
************************
## Технологический стек:
Технологический стек:
************************
- Python 3
- Python 3
- Django 3
- Django 3
**************
Quickstart
**************
``sudo apt install make``
## Quickstart
``pip install --upgrade pip``
```bash
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
``pip install -r requirements.txt``
##Перед запуском для тестирования:
``./manage.py migrate``
Убедитесь, что вы зарегистрированы в песочнице ZenDesk, у вас назначена организация (SYSTEM)
``./manage.py loaddata data.json``
Для админов ZenDesk дополнительно - создайте токен доступа в ZenDesk
При запуске в Docker убедитесь что папка, которая будет служить хранилищем для БД, открыта на запись и чтение
``./manage.py runserver``
**********************************
Перед запуском для тестирования:
**********************************
* убедитесь, что вы зарегистрированы в песочнице ZenDesk, у вас назначена организация (SYSTEM)
* для админов ZenDesk дополнительно - создайте токен доступа в ZenDesk
* при запуске в Docker убедитесь что папка, которая будет служить хранилищем для БД, открыта на запись и чтение
*****************************
Запуск на локальной машине:
*****************************
* скопировать репозиторий на локальную машину
* перейти в папку приложения
* активировать виртуальное окружение
* выполнить команду **pip install -r requirements.txt**
* в виртуальное окружение добавить следующие переменные:
##Запуск на локальной машине:
| *ACCESS_CONTROLLER_API_EMAIL={EMAIL}* - почта админа в ZenDesk
ACCESS_CONTROLLER_API_TOKEN={API_TOKEN} - API токен зендеск
* запустить приложение командой **python manage.py runserver** (можно указать в параметрах для файла manage.py)
ZD_DOMAIN={DOMAIN} - домен ZenDesk
* перейти по ссылке в консоли (вероятнее всего откроется по адресу http://127.0.0.1:8000/)
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} - количество часов в рабочей смене (нужно для статистики, пока не реализовано но требует указания значения)
******************
Запуск в Docker:
******************
выполнить команду python manage.py makemigrations
Требуется установленный и настроенный Docker
выполнить команду python manage.py migrate
запустить приложение командой python manage.py runserver (можно указать в параметрах для файла manage.py)
перейти по ссылке в консоли (вероятнее всего откроется по адресу http://127.0.0.1:8000/)
* скопировать репозиторий на локальную машину
* в командной строке перейти в папку проекта
* выполнить команду **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/)
##Запуск в Docker:
*****************************
Требуется установленный и настроеный Docker
Запуск с тестовыми юзерами:
*****************************
скопировать репозиторий на локальную машину
| На локальной машине - перед запуском команды **python manage.py runserver** выполнить команду **python manage.py loaddata data.json**.
в командной строке перейти в папку проекта
| Это создаст тестового админа и тестового пользователя в приложении для песочницы ZenDesk.
выполнить команду docker build .
| **Админ - admin@gmail.com / zendeskadmin** ,
выполнить команду docker images (нам нужен id созданного образа)
| **пользователь - 123@test.ru / zendeskuser** .
выполнить команду docker run -d -p 8000:8000 -e ACCESS_CONTROLLER_API_EMAIL={EMAIL} -e ACCESS_CONTROLLER_API_PASSWORD={PASSWORD}
| Не сработает если домен песочницы отличается от ngenix1612197338 (на другом домене нужно будет создать сначала пользователей в песочнице с правами админа и легкого агента
...(перечисляем все параметры виртуального окружени разделяя их -e) -v {абсолютный путь к папке, в которой будет размещена база}:/zendesk-access-controller/db {id образа докера}
| с этими же почтами, назначить им организацию (SYSTEM))
открываем запущеный контейнер в браузере (можно перейти по ссылке http://localhost:8000/)
*******************************
Параметры тестовой песочницы:
*******************************
##Запуск с тестовыми юзерами:
| *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
На локальной машине - перед запуском команды python manage.py runserver выполнить команду python manage.py loaddata data.json
************
Это создаст тестового админа и тестового пользователя в приложении для песочницы ZenDesk. Админ - admin@gmail.com / zendeskadmin , пользователь - 123@test.ru / zendeskuser .
Read more
Не сработает если домен песочницы отличается от ngenix1612197338 (на другом домене нужно будет создать сначала пользователей в песочнице с правами админа и легкого агента
************
с этими же почтами, назначить им организацию (SYSTEM))
##Параметры тестовой песочницы:
ACCESS_CONTROLLER_API_EMAIL={EMAIL} - почта админа в ZenDesk - взять у роководителя(если вы не админ)
ACCESS_CONTROLLER_API_PASSWORD={PASSWORD} - пароль админа ZenDesk - взять у роководителя(если вы не админ)
ACCESS_CONTROLLER_API_TOKEN={API_TOKEN} - API токен зендеск - взять у роководителя(если вы не админ)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.