Skip to content

Latest commit

 

History

History
152 lines (105 loc) · 10.1 KB

README2.md

File metadata and controls

152 lines (105 loc) · 10.1 KB

Use Cases

Сценарій 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 із обєктами контактів.

Models

Сутність Представлення у додатку Представлення у БД
Користувач name id
surname name
email surname
password email
password
Контакт name id контакта
surname id користувача
email name
birthday surname
email
birthday
isDeleted
expireDate

Development

Розвиток додатка:

  • пагінація при відображенні контактів (по 5 осіб)
  • групи контактів
  • безпека (хешування / шифрування данних)
  • сессії користування
  • нагадування про день народження
  • поле памятна дата та автоматичне нагадування
  • заблокувати вхід у додаток на певний час у разі декількох невдалих спроб логінення
  • cookies
  • SQRS
  • помилки які можуть виникнути
  • двухетапна реєстрація