Как мы создали комплексную платформу для контроля автопарков и мобильного персонала. Часть 2.

Авг. 13, 2015

Система “видимости”

Мы решили, что пора поделиться с вами тем, как работает платформа BaseRide - делать это мы будем регулярно, в деталях и последовательно. Поделимся с вами некоторыми техническими деталями, который покажут вам процесс в целом и позволят рассмотреть архитектуру. Вторую часть мы посвятили так называемой системе “видимости”.

Для начала мы построили систему “видимости”. Это по-настоящему важная и рациональная затея, если у вас многопользовательский B2B-сервис. То есть у вас есть несколько разных компаний, которым вы предоставляете доступ для вашего веб-сервиса, но внутри каждой из этих компаний есть несколько представителей, которым необходим доступ на разных уровнях.

Django - это здорово. Правда. Вы можете разделить все объекты на типы и ограничить доступ к каждом из них для пользователей. “Но что делать с объектами внутри одного типа?” - подумали мы. Ок, мы устанавливаем тип - автопарк компании X. Но этот автопарк включает автомобили филиала в городах A и B. Только топ-менеджеры должны иметь доступ к данным по обоим городам, но региональные менеджеры также подключены к BaseRide, потому что им нужен мониторинг и анализ активности автопарка в их филиале.

В общем, мы создали и добавили несколько модулей. И теперь у каждого из пользователей BaseRide есть определенный набор инструментов и параметров доступа к данным. Причем и набор, и параметры легко и быстро настраиваются.

Вы создаете аккаунт компании, каждый из менеджеров компании, работающих с BaseRide, создает персональный профайл. А дальше вы просто распределяете права доступа.

Важно,что ограничивается только доступ к данным, но все объекты, привязанные к автопарку компании, видны всем пользователям, привязанным к аккаунту компании.

Также вы буквально в режиме “drag-and-drop” можете установить и выбрать какие конкретно права получит этот конкретный пользователь. Будет ли он действовать как диспетчер или составитель расписаний или администратор карт  и так далее. Каждый пользователь может выполнять сразу несколько “ролей”.

API у нас работает по такому же принципу. В основе - Tastypie. Так что каждый пользователь может работать с сервером двумя способами - через интерфейс или через API.