• Как правильно использовать RBAC с разными моделями?

    myks92
    @myks92 Куратор тега Yii
    bezdealnick, вам написали два человека с полным разъяснением и вы до сих пор стоите на своём. Ваша ситуация простая для всех кроме вас. И дело не в том, что кто-то язвит. Я вам все пояснил. Если не доходит - есть вариант перечитать и погуглить. Если найдёте какой-то особый вариант, который вам не предложили, то считайте себя либо гением, либо очередным человеком, который изобрёл костыль.

    Подсказка на будущее... Правильный вариант это только три таблицы.
  • Как правильно использовать RBAC с разными моделями?

    myks92
    @myks92 Куратор тега Yii
    bezdealnick, ваши администраторы и менеджеры ОБА являются ПОЛЬЗОВАТЕЛЯМИ. Я вам привёл пример, когда сотрудники могут быть в таблице employees, но не иметь логина и пароля.
  • Как правильно использовать RBAC с разными моделями?

    myks92
    @myks92 Куратор тега Yii
    bezdealnick, клиенты будут иметь логин и пароль в users, а данные о клиенте будут храниться в customers. customers будет иметь связь с user по user_id по которому клиент получает доступ в систему и связывает логин пароль с клиента.
  • Как правильно использовать RBAC с разными моделями?

    myks92
    @myks92 Куратор тега Yii
    bezdealnick, глупости вы говорите. Я вижу вы большой знаток всех в мире систем)

    1. Вы этого могли и не заметить.
    2. Да, сотрудники которые являются пользователями системы имеют логин и пароль. Логично. Но есть сотрудники которые не пользуются системой, но нужны для работы системы.

    Например: доставщик, уборщица, дворник. И так далее. Зачем им пользоваться нашей системой? При этом мы можем их как-то использовать в нашей системе. Уборщица и дворник могут фигурировать в графике работ, в расчёте зарплаты и так далее. Но им логин и пароль не нужен.
  • Как правильно использовать RBAC с разными моделями?

    myks92
    @myks92 Куратор тега Yii
    bezdealnick что такое frontend и backend? Это по сути одна система(подсистема) с разным UI интерфейсами работающая с одними и теми же данными. Судя по всему у вас какая-то CRM. Поэтому, вас не должны смущать разные приложения.

    Мне предлагают сделать users, но я не могу совместить клиентов и администратора в одну таблицу.
    С точки здравого смысла да, не можете. Вам никто и не предлагает это сделать. Вам предлагают следовать правилу SOLID. Так как сотрудники у вас имеют две функции: отвечать за аутентификацию и существовать в системе, то логично, что клиенты не могут быть сотрудниками с разделением по роли. Поэтому у вас несколько вариантов:
    1. Логин, пароль, роль, приватный ключ... вынести в таблицу users. А employees имеет связь с user по id. Так же как и customer имеет связь с user по id.
    В итоге у вас клиентская информация хранится в customer, информация о сотрудниках в employees, а логин и пароль в users.
    2. Переименовать таблицу employees в users.
    3. Оставить все как есть и использовать employees как users. Вариант подходит только для самых отбитых)
  • Как правильно использовать RBAC с разными моделями?

    myks92
    @myks92 Куратор тега Yii
    bezdealnick, просто забегая вперёд может случиться история того, когда вам потребуется создать сотрудника без логина и пароля. Тут вы вспомните мои слова. Если же сотрудники всегда с логином и паролем, то можете переименовать таблицу сотрудников в пользователи. Ну или оставить так, а разделять клиентов в таблице сотрудников по роли. Что не очень, конечно логично. В любом случае для системы лучше все три таблицы.
  • Как правильно использовать RBAC с разными моделями?

    myks92
    @myks92 Куратор тега Yii
    bezdealnick, если вы не видите в этом ответа очень странно) User != Employee
  • Сайт выполнил переадресацию слишком много раз, как решить?

    myks92
    @myks92 Куратор тега Yii
    djienbaev97,
    public function behaviors()
        {
            return [
                'access' => [
                    'class' => AccessControl::className(),
                    'rules' => [
                        [
                            'actions' => ['index'],
                            'allow' => true,
                            'roles' => ['@'],
                            'matchCallback' => function ($rule, $action) {
                                /** @var User $user */
                                $user = Yii::$app->user->getIdentity();
                                return $user->admin!=1
                            }
                        ],
                    ],
                ],
            ];
        }
  • Миграция существующих таблиц в YII?

    myks92
    @myks92 Куратор тега Yii
    P747, можно, но сложная история)) Да и зачем тогда выбирать Yii если используете доктрину) Разве что сразу смотреть на Yii3
  • Как сделать тех. работы на сайте вкл/выкл через catchAll?

    myks92
    @myks92 Куратор тега Yii
    Дмитрий, да-да))) Это вам же нечего делать со своим парсером)) Помогите человеку))
  • Как сделать тех. работы на сайте вкл/выкл через catchAll?

    myks92
    @myks92 Куратор тега Yii
    Владислав, рад за вас, только это всё можно сделать получше. Там уже разберётесь.
  • Как правильно и безопасно пользоваться ORM в Yii2?

    myks92
    @myks92 Куратор тега Yii
    Игорь Васильев, вы сейчас задаете кучу вопросов в одной теме. То у вас надо вывести работу с командами в UI. То у вас проблема с ORM. То вы не знаете какой фреймворк выбрать. То вы не знаете что за метод. У вас все вопросы разные... На Ваш вопрос по теме я ответил. Решение дал.
  • Как правильно и безопасно пользоваться ORM в Yii2?

    myks92
    @myks92 Куратор тега Yii
    Игорь Васильев, там вроде всё понятно написано:

    Upsert

    Ещё одним существенным улучшением слоя работы с базами данных стала поддержка UPSERT — атомарной операции, которая создаёт новые записи, если они ещё не существуют (проверяется уникальный ключ), или изменяет существующие записи. Он или создаёт новую запись, или увеличит её счётчик посещений автоматически, если запись существует.
  • Как правильно и безопасно пользоваться ORM в Yii2?

    myks92
    @myks92 Куратор тега Yii
    Есть просто вот такой фреймворк для ORM - https://www.redbeanphp.com/index.php
    У меня была дилемма, либо использовать ресурсы Yii, и найти ORM там, либо устанавливать Doctrine или RedBean PHP.
    С этим фреймворком не знаком. Не могу посоветовать. Но могу сказать одно, что самописный PHP бред. Лучше тогда использовать микрофремворк, например Slim. Там можно подключить хоть AR, хоть Doctrine. Тут вы уж сам решайте. Однако на Yii2 начинать новый проект уже плохая история. Выбирайте Yii3, Laravel, Symfony, Slim. Предложенный вами фреймворк тоже бы не советовал, так как он не полпулярный.

    В документации так же есть Class yii\db\Command
    Который в принципе делает тоже самое что и миграции, в таблице даже методы называются так же.
    Можете использовать и так.

    Не до конца понятна вот эта функция, которая позволяет вставить строку, даже если нет какого-то столбца в БД в таблице.
    Это не понял.
  • Как правильно и безопасно пользоваться ORM в Yii2?

    myks92
    @myks92 Куратор тега Yii
    Игорь Васильев,
    Всё, что может AR - это CRUD!
    Вы ошибаетесь. AR и Doctrine никак не влияют на архитектуру проекта и с той и стой ORM вы можете использовать хоть DDD.

    В чём отличие?
    В AR методы работы с БД хранятся в самом объекте, а в Doctrine- отдельно.

    Когда что использовать?
    ActiveRecord имеет смысл использовать, если ваша модель хорошо ложаться на реляционную структуру данных. Т.е. свойства классов соответствуют полям таблицы. При таком подходе сначала строится БД, а потом под неё делают Модели (Data Base First)

    Для сложной бизнес логики - лучше доктрина, она "маппит" данные из таблиц на наши доменные объекты и структура таблиц субд может сильно отличаться от структуры нашей модели. Также доктрина включает много замечательных штук таких как UnitOfWork, EntityManager и кучу других удобных вещей. При таком подходе мы не думаем о БД, а смотрим только на объекты и архитектуру (Code First)
  • Назначить разрешение роли RBAC?

    myks92
    @myks92 Куратор тега Yii
    alex4answ, да. Вы так долго ищите вопрос но есть примеры даже на картинках. И потом. Вы хоть попробовали бы сделать. Зачем спрашивать?) Попробуете и увидите, что у вас все получилось) А если хотите детально разобраться, то уроки Дмитрия Елисеева RBAC
  • Как подружить валидацию в yii2 и type hint's в php7?

    myks92
    @myks92 Куратор тега Yii
    Alex657913, я вам ни разу не предложил использовать before и подобную магию, а тем более костыли. Я этим вообще не пользуюсь)

    Причём тут Фреймворк? Каждый может использовать фреймворк так, как считает нужным. Вы и на хорошем фреймворке сможете столкнуться с этой проблемой. Но так же точно вы можете реализовать хорошую бизнес логику с использованием различных паттернов. Фреймворк Yii2 отличается от других лишь тем, что он монолит и используется чаще для RAD разработки.

    У вас есть два варианта:
    1. В контроллере API, который принимает данные, преобразовывать эти данные к нужному типу
    2. Оставить ошибку и заставить Frontend присылать данные в нужном типе.

    Первый вариант стоит использовать тогда, когда у вас много приложений, которые работают с одним API. Чтобы исправить ошибку вы делаете преобразование в контроллере. Но предупреждаете всех клиентов о том, что в API скоро изменится типизация данных в следующей версии

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

    Типизацию убирать не стоит. Это точно. Все остальное в зависимости вашей ситуации.
  • Как подружить валидацию в yii2 и type hint's в php7?

    myks92
    @myks92 Куратор тега Yii
    Alex657913, отвечу вашими терминами — был бы фермер с руками и с мозгами у него бы все получилось.
  • Symfony - разделение на модули?

    myks92
    @myks92
    P747, архитектура не относится к фреймворку. Вы такое же можете сделать на Yii. Фреймворк подбирают по другим критериям.