Многопользовательская работа

Для одновременной работы нескольких пользователей с одной и той же информацией базу данных надо расположить на Web хостинге и связать с этой базой приложения на каждом устройстве.

Мы будем использовать в качестве базы данных MySQL как самую популярную систему.
Поскольку приложение не может непосредственно посылать запросы к базе данных MySQL, то нам надо создать промежуточный слой между приложением и базой данных.
Это PHP-сервис – файл apiserver.php. Он создаётся с помощью приложения и затем загружается вручную на Web – сервер.
Этот процесс будет описан ниже.

Вот так схематично выглядит работа нескольких пользователей с единой базой данных.

iOS устройства
  • iPad 1
  • ....
  • iPad N
OS X устройства
  • Mac 1
  • ....
  • Mac N
Internet
Web хостинг
apiserver.php База данных MySQL


Для организации многопользовательской работы нам надо выполнить следующие действия:

  • 1. Создать базу данных на Web хостинге.
  • 2. Сгенерировать файл apiserver.php и закачать его на сервер.
  • 3. Подключить приложения к серверу.
  • 4. Перенести данные с локального сервера на Web хостинг (при необходимости).
  • 5. Добавить пользователей и назначить им права доступа.


1. Создание базы данных на Web хостинге


На этом этапе нам нужно получить:
  • Url-адрес сайта (доменное имя). Например, http://mysite.com
  • Имя хоста (hostname) MySQL. Например, localhost
  • Имя базы данных (database name) MySQL. Например, db_mybase
  • Логин пользователя MySQL. Например, db_user
  • Пароль пользователя MySQL. Например, db_pswd

Если у вас уже есть сайт, например, http://mysite.com, и у вас есть возможность создать на этом сайте дополнительную базу данных, то это будет самый простой и удобный вариант. В этом случае рекомендуем создать субдомен, например, http://nano.mysite.com.

Иначе, вам следует выбрать провайдера web услуг и зарегистрировать новое доменное имя сервера, на котором будет хранится база данных.
Как правило, у всех провайдеров процесс регистрации домена и создания баз данных автоматизирован и хорошо документирован.
Внимание! База данных должна поддерживать кодировку UTF-8.

Переходим к следующему шагу.

2. Создание файла apiserver.php и размещение его на сервере


Перейдите на страницу "База данных".
Для этого в Mac версии выберите меню "База данных" в разделе "Настройки" или кликните кнопку быстрого доступа   .
В мобильной версии нажмите на кнопку      в панели инструментов на домашней странице ("Основная информация").

2.1. На вкладке "Общие" введите URL сервера. По умолчанию в этом поле будет значение http://yourserver.com/apiserver.php. Замените yourserver.com на имя вашего домена. Если ваш домен http://mysite.com, то у вас должно получиться http://mysite.com/apiserver.php.

2.2. Ключ доступа обеспечивает дополнительную безопасность и используется приложением при каждом обращении к серверу. Это может быть любое слово.

2.3. На вкладке "Файлы" введите параметры базы данных MySQL, полученные на предыдущем этапе.

2.4. Нажмите кнопку "Создать файл apiserver.php".

2.5. В Mac версии сохраните файл в любом удобном месте. В мобильной версии файл сохранится в папке "Документы" приложения. Скачайте его на компьютер с помощью iTunes.

2.6. Загрузите полученный файл в корневую (домашнюю) папку вашего сайта с помощью "Файл-менеджера" в панели управления вашего аккаунта или через ftp-доступ к сайту.
Чтобы убедиться в том что вы всё правильно сделали, наберите в браузере http://mysite.com/apiserver.php (вместо mysite.com подставьте реальное имя вашего домена).
Если вы всё сделали правильно, то должны получить такое сообщение {"success":0,"errormsg":"Action not found.","data":""}.

3. Подключение приложения к серверу


Вернитесь на вкладку "Общие" и в поле "Расположение базы данных" установите "Удалённое".
Нажмите кнопку "Изменить".

Приложение попытается подключиться к серверу и, в случае удачи, создаст на нём базу данных с тестовыми данными.
Вам будет предложено ввести логин и пароль пользователя.
Введите логин admin и пароль admin. Вы сможете изменить эти данные.

Совет. Вы в любой момент можете вернуться к работе с локальной базой данных. Для этого в форме авторизации кликните на ссылку "Или нажмите сюда чтобы работать с локальной базой данных" под кнопкой "Войти".
Или же в меню "База данных" установите поле "Расположение базы данных" в "Локальное".



4. Перенос локальных данных на web хостинг.


В режиме работы с локальной базой данных зайдите в меню "Резервное копирование" и нажмите кнопку "MySQL dump".
В Mac версии файл mysql.dump вы найдете с помощью Finder. Из мобильной версии его надо скачать на компьютер с помощью iTunes.
Данные из этого файла надо импортировать в базу данных MySQL с промощью "phpMySqlAmon" в панели управления вашего аккаунта.

5. Добавление пользователей. Управление доступом.



Права на доступ к функциям (операциям) приложения
Для разграничения прав пользователей в приложении реализовано Ролевое управление доступом (Role-Based Access Control - RBAC).
Это означает, что права назначаются не пользователям, а ролям. Таким образом, роль выступает как набор прав. Пользователь получает те или иные права после того как он будет включен в одну или несколько ролей.
Количество ролей и пользователей в системе не ограничено. Набор прав определяется функциональными возможностями системы.
Таким образом, основными объектами системы управления доступом являются Пользователи, Роли и Права.
Пользователи входят в роли через матрицу Роли - Пользователи.
Ролям назначаются права через матрицу Роли - Права. В этой матрице также указывается уровень доступа для каждого права - Чтение, Изменение, Добавление и Удаление.

На диаграмме показано как связаны эти объекты

Пользователи   Роли   Права
         
  Роли - Пользователи   Роли - Права  


Права на доступ к объектам приложения
Приложение позволяет вам также ограничить доступ к объектам системы таким, как Расчётные счета, Прайслисты, Разделы справочника и пр.
Например, на вашем предприятии работают несколько кассиров. Права у них могут быть одинаковыми (вносить и выдавать деньги из кассы).
Т.е. они все будут входить в одну и ту же Роль приложения. Но каждый кассир должен видеть только свою кассу.
Такая возможность реализована в приложении с помощью ещё одной матрицы Пользователи - объекты.

Как в приложении добавить пользователя и назначить ему права

Задача: Добавить пользователя системы дать ему возможность работать приходами и расходами денег. Дать доступ только к одному расчётному счету.

Это только пример, описывающий общие принципы системы доступа.

В данном конкретном приложении может не быть денежных операций.

Последовательность действий:
  • Переходим в меню "Управление доступом" - "Пользователи".
  • Добавляем нового пользователя (нажимаем кнопку "+"), заполняем обязательные поля. Обратите внимание на признак "Активирован". Только активированные пользователи могут входить в систему.
  • В меню "Роли" добавляем роль "Кассиры".
  • Теперь для этой роли назначаем права.
  • В списке ролей кликаем на ссылку "Показать права". Откроется матрица "Роли - Права".
  • Нажимаем кнопку "+", отмечаем в первой колонке нужные права, например, Деньги - Приходы и расходы, Деньги - Счета. И нажимаем кнопку готово чтобы выбранные права добавились в нашу роль. Здесь нам предложат указать степень доступа (чтение, изменение, добавление, удаление). Подтверждаем нажатием на кнопку "Добавить".
  • Осталось добавить пользователя в роль.
  • В списке ролей кликаем на ссылку "Показать пользователей". Откроется матрица "Роли - Пользователи".
  • Нажимаем кнопку "+", отмечаем в первой колонке пользователей и нажимаем кнопку готово.
  • Новый пользователь уже может зайти в систему и работать с денежными операциями. Но сейчас ему доступны все расчётные счета.
  • Ограничиваем список доступных счетов. Переходим в меню "Пользователи".
  • В списке пользователей кликаем на ссылку "Показать объекты". Откроется матрица "Пользователи - Объекты".
  • Выбираем тип объекта "Счета"
  • Нажимаем кнопку "+" и добавляем нужный счёт.
Внимание! Все изменения прав начинают действовать при следующем входе в систему (логированию) пользователя.

Совет. Все описанные выше действия можно производить из одного меню "Роли".

Когда вы выбираете пользователей для добавления в роль, то в списке выбора нажмите кнопку "+" и добавьте нового пользователя.