ЙажаСценарий / Говнокод #19856 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
function checkPermission(user, post) {
  return equals(post.author, user) ||
         user.role = 'admin';
}

when you see it, you'll shit bricks

Запостил: thepotato thepotato, (Updated )

Комментарии (17) RSS

  • вопрос в догонку: это клиент- или сервер-сайд? потому что если клиент-сайд...
    Ответить
    • то что?
      может по этому role потом клиент принимает решение показывать или нет тыцки "редактировать", "удалить" и т.д.?

      всё равно по ним должен уйти post на бек, который есесно сам проверит разрешения на эти операции, и даст по рукам 403
      Ответить
      • > который есесно сам проверит разрешения

        а вдруг они все сделали правильно и у них код реюзается?)
        Ответить
        • я не силён в js и не вижу подвоха, поясни

          если говорить конкретно про указанные 3 строчки и закрывающую скобку, то я вижу другие проблемы - должны быть права доступа (а-ля "read", "edit", "delete" и т.д.), а не bool результат, роль это лишь мета сущность аггрегации прав
          Ответить
          • ты пропустил строку 3? где пользователям раздаётся роль админа? или я не понял твоего вопроса?
            Ответить
            • ах вот оно чо
              найдите синтаксическую ошибку называется, я то думал
              а какой приоритет операций в js?
              Ответить
              • при чем тут приоритет, приоритет чего перед чем ? Тут один логич. оператор, или. 0\1 || 0\1.

                Фишка в другом, если это фронтед и без проверки на бекенде - любой школьник присвоит user.role = 'админ'.

                Ну и что за вотзефак equals
                Ответить
                • Эцсамое. Скорее всего действительно тут просто проверяется, показывать ли админские экшны; однозначно должна быть проверка на бэкенде. equals - может сравнивать юзеров по id, например (или сравнивать оба объекта по полям, это было бы говном). В общем, трудноуловимый запашок имеется, но вот так чтобы говно - так нет.
                  Ответить
                • > приоритет чего перед чем
                  >> ты пропустил строку 3? где пользователям раздаётся роль админа?
                  = вместо ==

                  про любой школьник я уже написал в самом верхнем посте
                  клиент может дрочить всё что угодно, у него есть f12 и анонимные прокси
                  хоть вообще через фиддлер ресты вызывать руками, на беке ты обязан проверять всё
                  хуярить верификацию прав на клиенте может себе позволить только kerman
                  Ответить
                  • точно, монсиньор, пепел на мою детскую лысину второклассника. ==

                    шта за kerman ?

                    алсо, условие вывалится с ексепшеном.
                    Ответить
                  • Бгг, а причём тут kerman? )

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

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8