diff --git a/DOC/core_classes/LE_ALC.md b/DOC/core_classes/LE_ALC.md index e9e22c5..9b86d12 100644 --- a/DOC/core_classes/LE_ALC.md +++ b/DOC/core_classes/LE_ALC.md @@ -4,37 +4,19 @@ > В системе LE предусмотрены уровни доступа, эти уровни могут задаваться на уровне всего пространства (например админка или личный кабинет) и на уровне кокнкретных модулей, например простой менеджер не может добавлять администраторов сайта, а директор может. -## Хранение -Все аккаунты хранятся в таблице `sys_accounts` -Поле | Тип | Описание ------ | ----- | --------- -id | int 12 | -login | varchar 200| Логин для авторизации -level | int 2 | уровень привелегий -password | varchar 32 | пароль в формате md5, позже вероятно можно перейти на sha-256 -name | varchar 250 |Имя для отображения на сайте| -data | JSON |Любые произвольные, обычно анкетные данные, например адрес, этаж, код от домофона, ссылка на соц сеть... - -```sql -CREATE TABLE `sys__accounts` ( - `id` int(12) NOT NULL, - `login` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `level` int(2) NOT NULL DEFAULT 0, - `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `data` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - -ALTER TABLE `sys__accounts` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `sys__accounts` - MODIFY `id` int(12) NOT NULL AUTO_INCREMENT; +## Включение контроля доступа +Контроль доступа можно включить как на уровне всего пространства (например админка), так и на уровне конкретного модуля, для этого в начале файла достаточно добавить +```php +$user_lev = LE::$ALC->set_lev(2); ``` +Где 2 - это минимальный уровень доступа для данного функционала, даже если посетитель авторизовался, но у него уровень 1, то он не будет иметь доступа к данному функционалу и получит 403 ошибку +Помимо этого, указанная функция возвращает уровень доступа текущего пользователя, что позволяет кастомизировать меню, скрывать запрещенные пункты итд... + +Если пользователь не авторизован, то он получит форму для ввода логина и пароля, дальнейшее выполнение скрипта остановится. ## Уровни доступа В конкретном приложении можно придумать свои уровни, но на стандартном решени будут вот такие уровни @@ -49,16 +31,34 @@ ALTER TABLE `sys__accounts` 5 | Директор | 6 | Администратор | -## Включение контроля доступа -Контроль доступа можно включить как на уровне всего пространства (например админка), так и на уровне конкретного модуля, для этого в начале файла достаточно добавить +## Хранение в БД +Все аккаунты хранятся в таблице `sys_accounts`: -```php -$user_lev = LE::$ALC->set_lev(2); -``` -Где 2 - это минимальный уровень доступа для данного функционала, даже если посетитель авторизовался, но у него уровень 1, то он не будет иметь доступа к данному функционалу и получит 403 ошибку -Помимо этого, указанная функция возвращает уровень доступа текущего пользователя, что позволяет кастомизировать меню, скрывать запрещенные пункты итд... +Поле | Тип | Описание +----- | ----- | --------- +id | int (12) | +login | varchar (200)| Логин для авторизации +level | int (2) | уровень привелегий +password | varchar (32) | пароль в формате md5, позже вероятно можно перейти на sha-256 +name | varchar (250) |Имя для отображения на сайте| +data | JSON |Любые произвольные, обычно анкетные данные, например адрес, этаж, код от домофона, ссылка на соц сеть... -Если пользователь не авторизован, то он получит форму для ввода логина и пароля, дальнейшее выполнение скрипта остановится. +```sql +CREATE TABLE `sys__accounts` ( + `id` int(12) NOT NULL, + `login` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + `level` int(2) NOT NULL DEFAULT 0, + `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + `data` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +ALTER TABLE `sys__accounts` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `sys__accounts` + MODIFY `id` int(12) NOT NULL AUTO_INCREMENT; + +```