Сценарій 1: реєстрація користувача
Раут: \signup
JSON Request {
name vaChart 10
surname vaChart 10
email vaChart 10
password vaChart 10
}
JSON Response{
id uint key
}
Вносимо поля по користувачу (id - додається базою даних, name, surname, email, password) у вигляді json. Зробити перевірку по email, чи є вже такий зареєстрований користувач. Для цього із файлу дістати email та пройтись у таблиці Користувач БД для знаходження такого користувача. Якщо не знайдено, то дані декодувати і зберегти у БД. Повернути id створенного користувача. Якщо користувач вже є, то повернути помилку 400 та "Пошта недоступна. Створіть інший".
Валідація: password має містити числа та букви, довжина password та email має складати не менше 5 символів.
Сценарій 2: додавання контакта
Раут: \user\contact\create
JSON Request {
userId uint foreignKey
name vaChart 10
surname vaChart 10
email vaChart 10
birthday vaChart 10
}
JSON Response{
id uint key
}
Вносимо поля по користувачу (id контакта, isDeleted (default: false), expireDate(default: "") - додається базою даних; userId, name, surname, email, birthday). Дані декодувати і зберегти у БД. Повернути 201 та "Контакт успішно створенний"
Сценарій 3: отримання контакту за іменем
Раут: \user\contact\get-by-name
У json передати імя контакта, файл декодувати, передати імя з файлу базі даних (звернутись за пошуком "поле імя дорівнює значення" та "isDeleted=false"). Якщо знайдено одне поле, то повернути json цього контакта. Якщо знайдено більше одного контакта із таким іменем, то повернути json із обєктами кожного знайденого контакта. Якщо не знайдено контакт, повернути користувачу відповідь 404 та "Контакт на імя імя пошуку не знайдено. Змініть запит та повторіть пошук".
Сценарій 4: отримання усіх контактів
Раут: \user\contact\get
Зробити запит до БД і дістати усі контакти в яких "isDeleted=false". Повернути json із обєктами контактів.
Сценарій 5: оновлення контакту
Раут: \user\contact\update
Етап 1. Виконати Сценарій 3 (або за поштою) Етап 2. Декодувати json із новими значення полів, перезаписати необхідні поля. Етап 3. Зберегти у БД контакт. Повернути відповідь 200 та оновлений обєкт контакту.
Сценарій 6: видалення контакту
Раут: \user\contact\delete
На вході маємо пошту у json. Зробити перевірку, чи цей контакт належить користувачу. Для цього дістати цей контакт (Сценарій 3), дістати дані по залогіненному користувачу (Сценарій 11). Порівняти id користувача у обєкті контакта та id залогіненного користувача. Якщо співпало, то зробити оновлення даних (Сценарій 5, етап 1 та 2), а саме: встановити статус isDeleted=true, expireDate=30. За допомогою time ticker кожен день буде проходитись по всім контактам, які мають isDeleted=true, і перевіряти таку умову: якщо expireDate==0, виконати запит до БД на видалення контакта по його id, по успішному завершенню надіслати відповідь 200 та "Контакт імя та прізвище успішно видаленний"; в іншому випадку, пропустити.
Сценарій 7: логінення користувача
Раут: \login
У json-і отримуємо логін та пароль. У БД таблиці Контакти проходимось по полям логін та пароль, перевіряємо, чи є користувач із такими данними. Якщо існує, то встановлюємо isLoggedin=true, повертаємо відповідь 200 та "Ви успішно увійшли у свій профіль". В іншому випадку, повернути неспівпадіння, відповідь 400 та "логін / пароль невірні. Повторіть вхід".
Сценарій 8: оновлення даних користувача
Раут: \update
У БД шукаємо користувача у якого isLoggedin=true, записуємо результат пошуку у змінну. У json-і отримуємо поля та нові значення, що мають бути оновлені. Перезаписуємо поля користувача. Оновлений обєкт зберігаємо у БД, повертаємо статус 201 та "Користувач успішно оновлений".
Сценарій 9: видалення користувача
Раут: \delete
Для видалення свого аккаунту необхідно ввести свій логін та пароль. Зробити перревірку даних у БД. Ці дані передаються у БД, у таблиці Контакти шукаємо користувача із такими даними. Якщо його буде знайдено, то спершу видалити усі контакти, викликавши функцію видалення контактів (без потрапляння до кошика), що були закріпленні за цим користувачем, а потім видалити самого користувача. Автоматично зробити вихід із додатка (Сценарій 10). Повернути відповідь 200 та "Користувач разом із особистими контактами успішно видаленний". Перевести користувача на сторінку логіну та реєстрації.
Сценарій 10: вихід користувача із додатку
Раут: \logout
Скидування налаштувань (активної сессії, встановлення статусу isLoggedin=false) та перенаправлення на сторінку \login.
Сценарій 11: отримання даних про користувача
Раут: \get
У БД шукаємо користувача у якого isLoggedin=true. Якщо знайдено, то повертаємо обєкт із даними користувача. Якщо ні, то повернути помилку 401 та "Ви не авторизовані. Увійдіть у додаток"
Сценарій 12: отримання видалених контактів
Раут: \user\get-removed
Зробити запит до таблиці Контакти БД, де поле контакта "isDeleted=true". Повернути json із обєктами контактів.
Сутність | Представлення у додатку | Представлення у БД |
---|---|---|
Користувач | name | id |
surname | name | |
surname | ||
password | ||
password | ||
Контакт | name | id контакта |
surname | id користувача | |
name | ||
birthday | surname | |
birthday | ||
isDeleted | ||
expireDate |
Розвиток додатка:
- пагінація при відображенні контактів (по 5 осіб)
- групи контактів
- безпека (хешування / шифрування данних)
- сессії користування
- нагадування про день народження
- поле памятна дата та автоматичне нагадування
- заблокувати вхід у додаток на певний час у разі декількох невдалих спроб логінення
- cookies
- SQRS
- помилки які можуть виникнути
- двухетапна реєстрація