Це готовий модуль авторизації, з якого можна починати писати проєкт, щоб не писати все з початку.
Він включає в себе панель адміна, де можна створювати нових користувачів, керувати їхнім доступом до сторінок та можливістю змінювати самі сторінки відповідно до користувацької ролі.
Систему реєстрації користувача, за допомогою відправки листа підтвердження на email та функціонал скидання паролю.
На початку створюємо нове середовище UI, Node Red та базу даних MongoDB.
1.Node Red
З цього репозиторію завантажуємо файл.
Далі у середовищі Node Red встановлюємо палети: node-red-node-email та node-red-node-mongodb
Після встановлення палет імпортуємо завантажений з репозиторію файл.
Після цього налаштовуємо вузол Mongodb у флові Links та натискаємо деплой.
Налаштовуємо відправку повідомлень. Залежно від того з якої електроної пошти, ви хочете відправляти листи, потрібно внести налаштування.
У вузлі email заповнюємо Userid та password та змінюємо server у разі потреби
Якщо використовувати пошту gmail потріно обов'язково налаштувати двофакторну авторизацію та створити пароль до додатку.
Тоді відповідно у полі password пишете згенерований пароль і Userid - пошта
Далі додаємо ENV до середовища Node Red, зберігаємо посилання нашого нод-реду, та UI.
В сервіс панелі(вона знаходиться ліворуч), коли наводимо на назву нашого Node Red, праворуч від назви, з'являються кнопки з додатковими опціями. Спочатку натискаємо копіювати посилання, потім натискаємо на кнопку зі знаком питання.
Натискаємо Add New Env.
Там в розділі env вставляємо key - nodeUrl, value - посилання на Node Red, яке копіювали.
Натискаємо update env.
Додаємо також посилання на UI. Якщо посилання на UI скопійоване без https://, то обов'язкого спереду його додаємо.
Посилання на UI зберігаємо під key uiUrl.
Натискаємо Add New Env.
Натискаємо update env.
2.UI
Аналогічні env додаємо до UI середовища!!!
З цього репозиторію аналогічно завантажуємо файл.
Імпортуємо його у UI.
І вставляємо перед /check_token посилання на свій Node Red.
Modules
Тут ми створюємо сторінки які будуть показуватись в бічній панелі(меню). Важливо, щоб назва сторінки в модулі співпадала з назвою сторінки в UI Editor.
В Parent Modules записуємо назви сторінок які одразу видно.
В Child Modules вказуємо назви сторінок, які будуть показуватись при наведені на батьківський елемент.
Одразу створюємо батьківський модуль - Management. Натискаємо на кнопку Create Parent Module та заповнюємо форму. МОжна додати при необхідності svg, яке буде відображатися поряд з назвою модуля.
У нього додаємо три child module з назвами сторінок Modules, AdminRoles та User Management. Position - порядок відображення сторінок у меню. Натискаємо на кнопку Create Child Module та заповнюємо форму.
Admin Roles
В Admin Roles ми створюємо ролі, які матимуть різний доступ до сторінок.
На кнопку Create Role - ми створюємо назву ролі.
На кнопку Add Permissions To Role - ми додаємо до вибраної ролі модулі. Це сторінки, які буде бачити користувач з вказаною роллю.
Створюємо роль адміна одразу і даємо доступ до модуля Management, який створили на попередній сторінці.
Та створюємо роль User, якому у майбутньому будемо додавати доступ до потрібних сторінок.
ОБОВ'ЯЗКОВО id ролі user копіюємо та вставляємо у середовищі Node Red в function node - registration user
User Management
В User Management знаходиться вся інформація про користувачів, які зареєстровані. Тут можемо створити, нового користувача. Змінити роль вже існуючому, або зовсім його видалити.
Як побудований захист(Access token)
Код доступу(Access token) ми зберігаємо в cookie під назвою user_name. Він скаладається з ID, та імейлу користувача.
В налаштуванях, нашого проєкту(де ми писали шлях до check_token), вказані сторінки до яких користувач має доступ без авторизації.
Якщо спробувати зайти на сторіку, на яку користувач має зайти, будучи авторизованим його автоматично перенаправить на сторінку Логін, бо він має відсутній токен.
Якщо токену не має, то завжди буде перенаправляти на сторінку Логін.
Токен створюється коли користувач заходить в систему. Далі, при кожному переході між сторінками, буде перевірятись, чи час токекну не минув. Якщо минув, то користувача розлогінить.
check_token
check_token - це флов, який декодить наш token, та повертає інформацію на його основі. Цю інформацію можно побачити, коли робимо якийсь редірект, то в панелі розробника в розділі Network, буде запит, який називаєтьтся me, там в response ми зможемо побачити всю інформацію про користувавча.
check_token будує наше меню, яке ми бачимо в бічній панелі. Він отримує роль користувача(кожна роль говорить, до яких сторінок можна мати доступ, та що саме на них робити). На основі цієї інформації він створює об'єкт з доступними сторінками, які повертає цей запит. А віджет Акрдеон(який відображає меню), чекає коли прийде ця відповідь щоб відобразити сторінки.
Discussion (0)