ДОВІДНИК З NODE-RED українською мовою
Автор: Олександр Пупена
Частина програми взята з прикладу Ubostech Налаштування авторизаційного темплейту
Написати фрагмент програми на Node-RED, який перевіряє коректність символьної адреси електронної пошти та паролю, які передаються в корисному навантаженні (msg.payload.email
і msg.payload.password
) та перенаправляє потік в залежності від результату:
Поштова адреса повинна складатися з трьох частин:
<>()[].,;:@"
та пробільні символи@
.xx
або більше літер<>()[].,;:@"
та пробільні символиНеобхідно перевірити рядок з паролем, який має відповідати наступним вимогам:
має містити принаймні один спеціальний символ (наприклад, !@#$%^&*()_+-=[]{} | ;’:”,./<>?) |
У даному рішенні використовуються регулярні вирази, які слугують для перевірки наявності та відсутності символів в рядках, про які можна почитати за цим посиланням
Для перевірки коректності адреси пошти використовується наступний регулярний вираз:
^([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$
Для перевірки коректності паролю наступні:
(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=[\]{}|;':",./<>?])(?!.*\s).{8,}
Дані регулярні вирази пояснюються в прикладах за посиланням
Для реалізації можна скористатися вузлом function
з трьом виходами.
Код функції:
const regexEmail = /^([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
const regexPassword = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=[\]{}|;':",./<>?])(?!.*\s).{8,}/;
const email = msg.payload.email.toLowerCase();
if (!regexEmail.test(email)) {
msg.payload.cheresult = "Некоректна пошта";
return [null, msg, null];
} else if (!regexPassword.test(msg.payload.password)) {
msg.payload.cheresult = "Некоректно заданий пароль";
return [null, null, msg];
} else {
msg.payload.cheresult = "Пароль і пошта коректні";
return [msg, null, null];
}
Для перевірки можна використати три варіанти msg.payload
:
{
"email": "user@mail.net",
"password": "Passw0rd_correct"
}
{
"email": "user@mail",
"password": "Passw0rd_correct"
}
{
"email": "user@mail.ne",
"password": "Passw0rdincorrect"