-
Notifications
You must be signed in to change notification settings - Fork 149
Expand file tree
/
Copy pathvalidateRegisterForm.js
More file actions
61 lines (49 loc) · 1.57 KB
/
validateRegisterForm.js
File metadata and controls
61 lines (49 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
'use strict';
/**
* @param {string} email
* @param {string} password
* @returns {object}
*/
function validateRegisterForm(email, password) {
// Password regex: krótkie zmienne
const n = '(?=.*\\d)';
const l = '(?=.*[a-z])';
const u = '(?=.*[A-Z])';
const s = '(?=.*[^a-zA-Z0-9])';
const ns = '(?!.*\\s)';
const len = '.{8,16}';
const validPassword = new RegExp('^' + n + l + u + s + ns + len + '$');
// Email regex: krótkie zmienne
const loc = '([\\w-]+(?:\\.[\\w-]+)*)';
const dom = '([\\w-]+(?:\\.[\\w-]+)+)';
const at = '@';
const validEmailMask = new RegExp('^' + loc + at + dom + '$', 'i');
const isEmailValid = validEmailMask.test(email);
const isPasswordValid = validPassword.test(password);
// Dodatkowe reguły dla emaila
let emailExtraValid = true;
if (isEmailValid) {
const parts = email.split('@');
const local = parts[0];
const domain = parts[1];
const localInvalid = local.startsWith('.');
const domainInvalid = domain.startsWith('.');
const dotsInvalid = email.includes('..');
if (localInvalid || domainInvalid || dotsInvalid) {
emailExtraValid = false;
}
}
// Walidacja wyników
if (!isEmailValid || !emailExtraValid) {
if (isPasswordValid) {
return { code: 422, message: 'Email is invalid.' };
} else {
return { code: 500, message: 'Password and email are invalid.' };
}
}
if (!isPasswordValid) {
return { code: 422, message: 'Password is invalid.' };
}
return { code: 200, message: 'Email and password are valid.' };
}
module.exports = validateRegisterForm;