Skip to content

Веб-Системка для учёта пропусков на проходной

License

Notifications You must be signed in to change notification settings

Aminuxer/Mini-GateHouse

Repository files navigation

Mini-GateHouse

Миниатюрная веб-система для учёта посетителей на проходной по номерным пропускам.

English readme

Mini-GateHouse

Для гостевого / разового / экскурсионного доступа на предпритие часто заводят отдельные номерные пропуска, тогда как данные о посетителе обычно не известны сильно заранее, и поэтому не могут быть добавлены в СКУД-системы ни на этапе конфигурирования, ни в процессе работы. Данная системка заменяет бумажный журнал учёта посетителей и сделана максимально простой, понятной даже минимально обученным охранникам. Это позволяет избежать утрат журналов посетителей и использования столь сложных для освоения охранниками программ, как Excel / Libreoffice Calc.

Установка и системные требования

0). Подготовьте минимальный веб-сервер с поддержкой PHP и MySQL. Например, по вот этому мануалу:

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-ubuntu-18-04-ru

Системные требования - любые, где сможете запустить. По софту - рекомендуется Linux / BSD актуальных версий, nginx, php8, mysql На PHP5 и PHP7 тоже должно работать. Windows тоже можно, но не проверялось.

1). Скопируйте содержимое каталога www из архива в каталог веб-хоста

2). Восстановите из файла gatehouse.sql дамп базы данных gatehouse Если вам нужные примеры тестовых записей, выполните в базе скрипт gatehouse-example_data.sql

3). Создайте в базе данных mysql-пользователя и назначьте ему права доступа:

CREATE USER 'gatehouse'@'localhost' IDENTIFIED BY 'gatehousepassword';

GRANT SELECT,UPDATE,INSERT,DELETE ON gatehouse.* TO 'gatehouse'@'localhost';

При желании можете отозвать DELETE, он нужен только при удалении операторов. Пароль рекомендуется сгенерировать свой - длинный и случайный.

4). Откройте конфиг www/options.php на сервере и проверьте, что там прописаны правильные параметры из шага 3 для соединения с базой данных.

Исправьте значение $db_add_rnd_key в конфиге на длинную случайную строку.

Установите нужный язык интерфейса в параметре localization из списка.

Пулл-реквесты с файлами новых локализаций приветствуются.

5). Откройте страничку веб-сервера в браузере и попробуйте залогиниться с пустым паролем под такими логинами: root admin user readonly

При первом логине будет предложено задать новые пароли.

Использование

Задайте пароли всем пользователям, добавьте новых пользователей. Добавьте на рабочие места охраны стартовую страницу / закладку, сообщите охранникам их пароли.

Ключевая идея - данные пишутся один раз, и после оформления выхода охранники не могут уже ничего испортить во введённых данных.

Зачем такая дичь вообще была написана ?!

Бумажные журналы сонные охранники часто зливают чаем/кофе, а открытый по сети файл Excel часто бывает случайно или даже сознательно испорчен.

Проще было написать такую системку, чем пытаться научить охранников работать в Excel аккуратно.

Частые вопросы

  • Зачем она, если есть Excel / бумажный журнал / текстовый файлик ?

    • Эти носители могут быть испорчены самими охранниками по собственной криворукости.
    • для данной системки ёксель и виндовс не требуются, не надо предоставлять опасный файловый доступ, нет зависимостей от платного софта.
  • Можно ли использовать на мобилке / планшете ?

    • Да, вполне.
  • Я забыл пароль админа/суперпользователя или отключил доступы. Как сбросить пароль / воосстановить права доступа ?

    • Подключитесь к серверу по SSH, введите команду mysql для соединения с базой данных. Используйте root-пароль для MySQL.
    • выберите базу данных: USE gatehouse;
    • Просмотрите список операторов: SELECT id, login FROM operators
    • Для выбранного пользователя поставьте пустой пароль: UPDATE operators SET password = 'da39a3ee5e6b4b0d3255bfef95601890afd80709' WHERE login = 'root'
    • Включение логина пользователю и восстановления root-прав: UPDATE operators SET enable = '1', is_root = '1' WHERE login = 'root'
    • Залогиньтесь в веб-систему с пустым паролем и назначьте новый пароль.
  • Как давно используется и почему не выкладывалась раньше ?

    • Используется на некоторых проходных более 15 лет. Не выкладывалось потому, что это одна из моих первых разработок и за оформление кода несколько стыдно =)
  • Что за пользователи созданы по умолчанию ?

    • Созданы пользрователи с 4 разными ролями. root - главный админ. Может управлять логинами и парамтерами, admin - может смотреть архив и менять настройки, user - может управлять открытыми записями за последние n дней, readonly - иожет только смотреть данные за последние n дней. В интерфейсе есть встроенная мини-справка.
  • Будет ли развитие системы ?

    • Маловероятно. Но о багах / уязвимостях можно создать issue.
  • В чём суть и почему именно веб ?

    • веб - кроссплатформенный. Суть в том, что охранники сильно ограничены в возможности внести совсем уже неправильные данные, и после закрытия записи не могут её удалить / испортить.
  • Можно ли использовать для нескольких проходных ?

    • Да, не вопрос. Разделите проходные по логинам.
  • Надо ли чистить и обслуживать БД ?

    • На ваш выбор, но вообще не обязательно. Можете с помощью веб-интерфейса типа Adminer удалить старые логи из двух таблиц.
  • Мне нужна новая/дополнительная опция.

    • Кнопка [Fork].