7 месяцев назад
История
README.md
Тестовое задание от forento.ru
Условие задания
Имеется таблица пользователей – users
, в которой хранится базовая информация о пользователях всей системы
CREATE TABLE "users" (
"id" serial PRIMARY KEY,
"email" varchar(50) COLLATE "default" NOT NULL,
"password" varchar(64) COLLATE "default" NOT NULL,
"status_id" int4 DEFAULT 1 NOT NULL,
"name" varchar(500) COLLATE "default" NOT NULL,
"sex" bool,
"created_at" timestamp(0) DEFAULT now() NOT NULL,
"deleted" bool DEFAULT true NOT NULL,
"auth_key" varchar(32) COLLATE "default"
);
Имеется таблица клиентов – clients
, в которой представлены клиенты системы:
CREATE TABLE "clients" (
"id serial PRIMARY KEY,
"name" varchar(255) COLLATE "default" NOT NULL,
"description" text COLLATE "default",
"account_type" int4 DEFAULT 1 NOT NULL,
"balance" float8 DEFAULT 0,
"created_by int4,
"updated_by" int4,
"created_at" int4,
"updated_at" int4,
"status" int4 DEFAULT 1,
"deleted" bool DEFAULT false
);
У каждого клиента может быть свой список пользователей, но все они осуществляют процесс авторизации на базе полей email
и password
. Необходимо выполнить указанные модификации помощью стандартных YII-инструментов (там, где это требуется).
- Обеспечить уникальность идентификационных данных внутри системы
- Сформировать классы моделей, которые можно было безопасно переформировать на любом этапе работы, без потери ранее разработанного функционала модели.
- Обеспечить возможность привязки пользователя к клиенту (сформировать миграцию)
- Дополнить модель клиентов возможностью редактирования привязки к клиенту
- Предусмотреть возможность связи пользователя с несколькими клиентами.
- Обеспечить возможность (со стороны модели и базы) заведения групповых пользователей, таких как например «Группа разработчиков», «Магазин» и т.д. Без изменения алгоритма авторизации (email + password). С возможностью авторизоваться как член группы разработчиков или сотрудник магазина под индивидуальными данными для авторизации.
- Обеспечить возможность идентификации групповых и индивидуальных пользователей в общем списке
Пункты, требующие простых действий можно описать в общем файле. Пункты с миграциями, обновленными классами и пр., оптимальнее всего распределять по папкам с соответствующими названиями, чтоб можно было проследить изменение модели и структуры БД.
Развертывание сайта
- Установить все зависимости
composer install
- Выполнить инициализацию окружения
php init
- Выполнить предварительную миграцию
php yii migrate/up 2
- Выполнить миграцию RBAC
php yii migrate/up --migrationPath=@yii/rbac/migrations
- Выполнить оставшиеся миграции
php yii migrate/up
- Настроить хостинг для административной (backend) и публичной (frontend) частей
- Имя и пароль администратора:
admin@it-crowd.com/administrator