forked from coders-school/cpp-fundamentals
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvalidation.cpp
More file actions
69 lines (63 loc) · 2.23 KB
/
validation.cpp
File metadata and controls
69 lines (63 loc) · 2.23 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
61
62
63
64
65
66
67
68
69
#include <algorithm>
#include "validation.hpp"
std::string getErrorMessage(ErrorCode code) {
switch (code) {
case ErrorCode::Ok:
return "Ok";
break;
case ErrorCode::PasswordNeedsAtLeastNineCharacters:
return "Password needs to have at least nine characters";
case ErrorCode::PasswordNeedsAtLeastOneNumber:
return "Password needs to have at least one number";
case ErrorCode::PasswordNeedsAtLeastOneSpecialCharacter:
return "Password needs to have at least one special character";
case ErrorCode::PasswordNeedsAtLeastOneUppercaseLetter:
return "Password needs to have at least one uppercase letter";
case ErrorCode::PasswordsDoNotMatch:
return "Passwords do not match";
}
return "-1";
}
bool doPasswordsMatch(std::string p1, std::string p2) {
if (p1.empty() and p2.empty()) {
return true;
}
if (p1.empty() or p2.empty()) {
return false;
}
if (!p1.compare(p2)) {
return true;
} else {
return false;
}
}
ErrorCode checkPasswordRules(std::string p) {
if (p.length() < 9) {
return ErrorCode::PasswordNeedsAtLeastNineCharacters;
} else if (!std::any_of(p.begin(), p.end(), ::isdigit)) {
return ErrorCode::PasswordNeedsAtLeastOneNumber;
} else if (std::all_of(p.begin(), p.end(), ::isalnum)) {
return ErrorCode::PasswordNeedsAtLeastOneSpecialCharacter;
} else if (!std::any_of(p.begin(), p.end(), ::isupper)) {
return ErrorCode::PasswordNeedsAtLeastOneUppercaseLetter;
} else {
return ErrorCode::Ok;
}
// int max = 6;
// int min = 2;
// int randNum = rand() % (max - min + 1) + min;
// ErrorCode forRandomPurpose[] = {
// ErrorCode::Ok, ErrorCode::PasswordNeedsAtLeastNineCharacters,
// ErrorCode::PasswordNeedsAtLeastOneNumber,
// ErrorCode::PasswordNeedsAtLeastOneSpecialCharacter,
// ErrorCode::PasswordNeedsAtLeastOneUppercaseLetter};
// ErrorCode randomError = forRandomPurpose[randNum];
// return randomError;
}
ErrorCode checkPassword(std::string p1, std::string p2) {
if (doPasswordsMatch(p1, p2)) {
return checkPasswordRules(p1);
} else {
return ErrorCode::PasswordsDoNotMatch;
}
}