Pull to refresh
60
0
Сергей Стоцкий @serjoga

Tech Lead

Send message

Управление правами доступа в Expressjs при помощи CASL

Reading time 5 min
Views 7.9K



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


Управление этой видимостью может стать полным кошмаром с увеличением количества ролей. Вероятно, вы уже писали или видели код вроде этого:

Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Comments 1

CASL. Авторизация для JavaScript приложения

Reading time 4 min
Views 10K

CASL JavaScript В наше время почти каждое приложение имеет понятие прав доступа и предоставляет различные функции для разных групп пользователей (например, admin, member, subscriber и т.д.). Эти группы обычно называются "роли".


По своему опыту скажу, что логика прав доступа большинства приложений построена вокруг ролей (проверка звучит так: если пользователь имеет эту роль, то он может что-то сделать) и в конечном итоге имеем массивную систему, с множеством сложных проверок, которую трудно поддерживать. Эту проблему можно решить при помощи CASL.

Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Comments 0

Aka rspeс, т.е. ленивые переменные в тестах

Reading time 4 min
Views 3.9K
Как говорится: «Запретный плод сладок», так и у меня. Попробовав однажды писать тесты на RSpec, хочется иметь декларативный BDD DSL в каждом языке. Вот например JavaScript, имеет аналоги mocha.js, jasmine.js, etc. Но нет, мало. Хочется не просто всяких describe-ов или it-ов, а еще и ленивых переменных, я имею в виду subject и let.

На первый взгляд глупо! Внутренний голос кричит «Зачем?», а совесть в ответ: «Чистый код — это важно! Ну а простые тесты — вообще мега важно!».

Вот так и родилась библиотека для mochajs, которая позволяет создавать ленивые переменные (aka let) и `subject`.

Для тех кто понимает о чем я и уже напрягся засветился от радости, милости просим на Github.
Всем остальным, а в особенности скептикам предлагаю заглянуть под cut.
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Comments 2

Jasmine DRY: а ты правильно пишешь тесты?

Reading time 4 min
Views 13K
В промежутке времени между переквалификацией с Back-end программиста на Front-end, мне пришлось писать код для RoR приложения (да-да и тесты были). Интересным для меня показалась своеобразная атмосфера сообщества рубистов, которые очень строго относятся к написанию кода и если ты пишешь плохо, то тебе могут поломать пальцы не простить. Ведь код должен быть максимально простым и читабельным.

Это же правило применимо и к тестам (как по мне то, они должны быть на порядок проще чем сам код). В дополнение, в тестах есть свое золотое правило — One Expectation per Test. Не нужно писать кучу expect/assert/should вызовов в одном тесте, просто перестаньте это делать! И не забывайте, что тесты это тоже код, а copy-paste — плохая практика.
Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Comments 12

Легкий путь или 0 Step Checkout в Magento

Reading time 3 min
Views 2.8K
3 года назад я впервые столкнулся с оформлением покупки через Интернет-магазин созданный на платформе Magento. Выбрав понравившийся мне товар, я перешел на страницу оформления заказа (чекаут), но не все оказалось так просто! Чекаут чуть не отбил желание вообще что-то покупать в этом магазине! Еще бы — 5 шагов и целая куча полей в формах. А все мы знаем: чем меньше кликов сделает клиент, оформляя заказ, тем больше продаст интернет-магазин.
Читать дальше →
Total votes 5: ↑2 and ↓3 -1
Comments 8

sjFilemanager — Reloaded. AJAX + PHP файловый менеджер версия 1.0 бета

Reading time 4 min
Views 6.9K
Много воды утекло с тех пор когда я сел за написания своего файлового менеджера. В то время поддержка ИЕ6 считалась обычным делом, а про фичи HTML5 можно было только мечтать. В общем вот ссылка на версию 0.1.0 альфа. В конце первого топика, я написал, что планирую сделать в будущем, можно сказать я сдержал свое обещание и хочу представить Вам версию 1.0b. Из того, что планировалось, была отброшена идея внедрения авторизации в менеджер, потому что, как говорили здесь, это пятое колесо. Рассмотрим, что изменилось и что улучшилось, но для начала скрин

Читать дальше →
Total votes 80: ↑67 and ↓13 +54
Comments 50

Алеша Попович vs Тугарин Змей или как я боролся со спамом

Reading time 1 min
Views 1.5K
Все началось из того, что я захотел вести свой блог. Как старательный программист, я поставил на комментирование простую капчу для предотвращения спама. Но не тут то было… Капчу взломали… Дважды… Тогда я вышел из себя и решил отключить комментирование, до момента принятия какого-то решения.

Заглянув под кат, я уверен, вы оцените его оригинальность.
Читать дальше →
Total votes 110: ↑74 and ↓36 +38
Comments 94

FAQ по Magento или ответы на все ваши вопросы

Reading time 1 min
Views 5.9K
Magento faq

Вдохновленный идеей (FAQ по JavaScript: задавайте вопросы, JavaScript F.A.Q: Часть 2)

хочу создать аналогичное пособие по eCommerce платформе Magento, так как сам являюсь частью ее Core команды.

Постараюсь ответить на вопросы относительно различных областей системы: настройка, использование моделей, детали архитектуры системы, создание/модификации модулей, других нюансов Magento.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Comments 28

За баранкой пылесоса или умный Firefox

Reading time 5 min
Views 4.2K
Браузер, который сам ходит по ссылкам, открывает/закрывает табы, парсит или сохраняет весь контент на файловую систему — интересно посмотреть на такое, не так ли? Лично мне интересно было создать что-то подобное. Никакой фантастики! В общем в очередной раз во мне проснулось нечто вроде программистской лени вдохновения и вместо того, чтобы писать обычный crawler (он же spider или по-простому парсер сайта) на PHP, Perl или Ruby, я начал разбираться, как это сделать на FireFox.
Читать дальше →
Total votes 39: ↑31 and ↓8 +23
Comments 27

Идея Doctrine I18n в Magento

Reading time 8 min
Views 1.1K
Все началось с того, что я взял на доработку очередной фриланс проект. Заданием было доделатьреализовать мультиязычный модуль Галереи. Проблема возникла, как всегда внезапно…
Читать дальше →
Total votes 7: ↑2 and ↓5 -3
Comments 2

280 кроказябл или взрывная мощь регулярных выражений

Reading time 4 min
Views 18K
В общем, наверное, как и другой любой начинающий JavaScript прогрммист (2 года назад), мне хотелось все реализовать своими руками. Так возникло ужасающее очень быстрое регулярное выражение из 280 символов.

Немного истории


Приблизительно полтора года назад, я узнал о библиотеке yass, которая была самым быстрым инструментом для поиска DOM элементов в JavaScript по CSS селекторам (ссылка на тесты).
И тут у меня возник ужасный интерес. Я захотел придумать способ, который будет еще быстрее. В то время я как раз читал книгу «Регулярные выражения Библиотека программиста» второе издание от Дж. Фридла. И вот… Это было лето, я еще был студентом и у меня была масса времени. Работа закипела…
Читать дальше →
Total votes 128: ↑112 and ↓16 +96
Comments 68

Колекционируем данные или учим Doctrine делать multiple insert

Reading time 1 min
Views 3.5K
Интересная реализация для импорта данных в базу, так как можно вставлять данные в связанные таблицы. Автор тестировал код только на MySQL сервере и по его словах все работает на ура.
Вот собственно ссылка на статью

P.S. пишу топик, так как не хватает кармы чтобы сделать ссылку
Total votes 8: ↑6 and ↓2 +4
Comments 7

sjFilemanager — бесплатный AJAX файл менеджер. Колесо или ноу-хау?

Reading time 2 min
Views 9.4K
Начиная с тех времен когда я только познавал всю прелесть программирования у веб, у меня возникала задача создания файлового менеджера для tinyMCE. Но изобретать велосипед — это пустая трата времени, поэтому я часто обходился какой-то простой реализацией или сторонним плагином, вроде этого. На тот момент Image Manager 1.1 был еще бета версией. К сожалению со временем этот вариант меня перестал устраивать по ряду причин и пришлось реализовать собственное решение.
Читать дальше →
Total votes 32: ↑32 and ↓0 +32
Comments 16

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity