-
Notifications
You must be signed in to change notification settings - Fork 5
Резюме зустрічі 20.10.15
romach edited this page Oct 20, 2015
·
2 revisions
🔉 Аудіо
📺 Відео - таймінг
🕒 [0:00 - 2:19]
-
/events/{event_id}/register
; - у відповіть повертається url події, що далі робити з цим url - вирішує клієнт;
- до таблиці
visit_log
додається інформація про реєстрацію на подію;
🕒 [2:19 - 2:50]
-
/login
; - при логіні з невірними даними (логін, пароль) - поверається відповідь з кодом
401
;
🕒 [2:50 - 4:35], 6:50 - 10:00]
-
/users/register
; - треба вводити логін (email) і пароль;
- якщо спробувати зареєструватися залогіненому користувачу, повернеться код
403
; - якщо спробувати зареєструватися з даними користувача, який вже присутній в базі, повертається код
226
- краще замінити на400
;
🕒 [10:00 - 15:10]
- якщо, користувач зареєструвався на подію, то при його видаленні повертається код
500 (Internal Server Error)
через constraint violation - на нього посилаються інші таблиці;- стратегії вирішення цієї проблеми:
- каскадна - видаляються всі залежні записи в інших таблицях;
- ми не можемо використати цю стратегію, бо порушується логіка: при видаленні користувача записи в залежних таблицях (
visit_log
) не повинні видалятись;
- ми не можемо використати цю стратегію, бо порушується логіка: при видаленні користувача записи в залежних таблицях (
- "mark not active" - треба помітити користувача, як неактивного і не видаляти його. Відповідно, треба враховувати цей параметр у SQL-запитах;
- каскадна - видаляються всі залежні записи в інших таблицях;
- стратегії вирішення цієї проблеми:
🕒 [15:10 - 17:35]
-
/admin
; - при відсутності прав - повертається код
403
;
🕒 [18:02 - 34:55]
- при реєстрації користувача треба хешувати пароль (популярний алгоритм - SHA-256 і зберігати його у хешованому вигляді (Примітка: Hash String via SHA-256 in Java));
- при реєстрації треба робити валідацію паролю (наприклад, мінімум 6 літер, наявність цифри, спец. символу);
- після реєстрації бажано виконувати авторизацію;
- треба валідувати логін, як email;
- треба використовувати OTP (задача #48);
- треба додати нову роль для користувача, який не підтвердив OTP;
- користувач з такою роллю буде мати обмежені права, наприклад не зможе активувати підписку;
- login і logout краще перенести в
UserController
;
🕒 [34:55 - 50:18]
-
UserRestController
>registerNewSubscriber
:- треба додати параметр
confirmPassword
. Цей параметр можна перевіряти на фронтенді; - параметри метода варто валідувати за допомогою JSR 303: Bean Validation (Примітка: Знакомство с Bean Validation API, Specification);
-
username
іpassword
краще винести в окремі класи, щоб не засмічувати анотаціями список параметрів; - треба переробити контроллер так, щоб він викидав Exception, якщо користувач вже існує;
- для обробки треба використовувати Exception handler (Примітка: Exception Handling in Spring MVC);
- треба додати параметр
🕒 [50:18 - 1:02:43]
- спосіб розробки "згори-донизу" : тестовий метод > controller > dao
- зробити так, щоб можна було переходити на файл з датасетом DbUnit, клікнувши по його назві в аннотації (Це, мабуть, можна зробити за допомогою Unitils);
- демонстрацію краще проводити на CI-сервері;