• Как настроить разделение ролей (user, moder, admin) внутри проекта на React?

    @slide13
    frontend/web-developer
    Для начала, обязательно проверка ролей должна быть реализована на бэке, чтобы юзер не смог минуя ui выполнять не предназначенные для него действия или получать закрытые для него данные.

    Далее, самый простой вариант - это ограничение на уровне роутинга, тут все понятно в целом, когда перед переходом на отдельную страницу проверяется наличие прав, иначе показываем заглушку, что в этот раздел доступ ограничен.

    Если же требуется разделить на уровне ui одной страницы, когда у нас есть кнопка редактирования данных, например, но обычный юзер может только смотреть, а кнопка должна быть активна редактору/админу, то это уже придется делать на уровне компонентов и отдельной проверки определенных правил для конкретной роли.

    Например, я решал такую задачу следующим способом:
    1. Создал объект правил доступа для различных компонентов/страниц.
    const rules = {
      articles: {
        create: 'articles:create',
        edit: 'articles:edit'
      }
    }

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

    2. Затем создал объект с уровнями доступа и доступными им правилами, для каждой роли это просто Set в который загоняются доступные действия из правил.

    3. Ну и функция, которая на вход принимает правило и по текущей роли пользователя ищет в Set коллекции это самое правило, нашли - значит доступно, вернули true

    Далее в нужном компоненте дергаем нашу функцию проверки прав, передавая туда правило для проверки доступа. Например, у нас просто обычный юзер залогинился, а не редактор.
    Вызываем checkPermission(rules.articles.edit), если функа вернула false, то блокируем или скрываем кнопку редактирования статьи, ну и т.д.

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

    В целом, это просто один из вариантов, который подошел именно мне, а так зависит многое от того, что за приложение, что именно разграничивать надо, сколько ролей будет, какие правила будут пересекаться и т.д.
    Ответ написан
    Комментировать
  • Как настроить кодировку в phpmailer?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    А в phpmailer-то стоит кодировка?

    $mail->CharSet = "utf-8";
    Ответ написан
    2 комментария
  • Что значит ошибка KeyError в turtle.py?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Что третий параметр функции write() модуля turtle не может быть восклицательным знаком. Исправьте на
    write('Hello ' + name + '!')
    Ответ написан
    Комментировать