- 1
- 2
- 3
- 4
function checkPermission(user, post) {
return equals(post.author, user) ||
user.role = 'admin';
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+7
function checkPermission(user, post) {
return equals(post.author, user) ||
user.role = 'admin';
}
when you see it, you'll shit bricks
Dummy00001 21.04.2016 16:22 # 0
defecate-plusplus 21.04.2016 16:26 # +4
может по этому role потом клиент принимает решение показывать или нет тыцки "редактировать", "удалить" и т.д.?
всё равно по ним должен уйти post на бек, который есесно сам проверит разрешения на эти операции, и даст по рукам 403
Dummy00001 21.04.2016 16:34 # +5
а вдруг они все сделали правильно и у них код реюзается?)
defecate-plusplus 21.04.2016 16:54 # 0
если говорить конкретно про указанные 3 строчки и закрывающую скобку, то я вижу другие проблемы - должны быть права доступа (а-ля "read", "edit", "delete" и т.д.), а не bool результат, роль это лишь мета сущность аггрегации прав
Dummy00001 21.04.2016 16:58 # +1
defecate-plusplus 21.04.2016 17:00 # 0
найдите синтаксическую ошибку называется, я то думал
а какой приоритет операций в js?
Dummy00001 21.04.2016 17:04 # 0
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
ты типа намекаешь что должно быть синтаксической ошибкой?
я тоже по современному JS не спец.
zizzleZee 21.04.2016 17:19 # 0
Фишка в другом, если это фронтед и без проверки на бекенде - любой школьник присвоит user.role = 'админ'.
Ну и что за вотзефак equals
bakagaijin 21.04.2016 17:22 # 0
defecate-plusplus 21.04.2016 17:26 # +6
>> ты пропустил строку 3? где пользователям раздаётся роль админа?
= вместо ==
про любой школьник я уже написал в самом верхнем посте
клиент может дрочить всё что угодно, у него есть f12 и анонимные прокси
хоть вообще через фиддлер ресты вызывать руками, на беке ты обязан проверять всё
хуярить верификацию прав на клиенте может себе позволить только kerman
zizzleZee 21.04.2016 17:29 # +1
шта за kerman ?
алсо, условие вывалится с ексепшеном.
Vasiliy 21.04.2016 17:32 # 0
kerman 21.04.2016 18:52 # 0
BTW, проверка прав на клиенте - это один из основных недостатков всех двузвенных решений. Такое получается по причине наличия бизнес-логики в тушке толстого клиента и неотделимости проверки прав от логики.
Lokich 21.04.2016 17:40 # 0
defecate-plusplus 21.04.2016 17:56 # 0
Dummy00001 21.04.2016 19:15 # 0
guest 22.04.2016 17:33 # −2