From 373eca73f85e8641f0c3aac640c35f2e91889fd7 Mon Sep 17 00:00:00 2001 From: TodorokiBoy Date: Sat, 23 Nov 2024 20:47:01 +0100 Subject: [PATCH 1/3] adding works --- homework/password-check/main.cpp | 1 + homework/password-check/validation.cpp | 53 +++++++++++++++++++++++++- homework/password-check/validation.hpp | 21 +++++++++- 3 files changed, 72 insertions(+), 3 deletions(-) diff --git a/homework/password-check/main.cpp b/homework/password-check/main.cpp index 254ccc11..aa38b2b2 100644 --- a/homework/password-check/main.cpp +++ b/homework/password-check/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "validation.hpp" int main() { diff --git a/homework/password-check/validation.cpp b/homework/password-check/validation.cpp index a2f12ff3..57a7c848 100644 --- a/homework/password-check/validation.cpp +++ b/homework/password-check/validation.cpp @@ -1,2 +1,53 @@ #include "validation.hpp" -// TODO: Put implementations here \ No newline at end of file +#include +#include + +std::string getErrorMessage(ErrorCode error) { + switch (error) { + case ErrorCode::Ok: + return "Ok"; + + 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 "Undefined error"; +} + +bool doPasswordsMatch(std::string password1, std::string password2) { + return password1 == password2; +} + +ErrorCode checkPasswordRules(std::string password) { + if (password.length() < 9) { + return ErrorCode::PasswordNeedsAtLeastNineCharacters; + } + if (!std::any_of(password.begin(), password.end(), [](unsigned char c) { return std::isdigit(c); })) { + return ErrorCode::PasswordNeedsAtLeastOneNumber; + } + if (!std::any_of(password.begin(), password.end(), [](unsigned char c) { return std::ispunct(c); })) { + return ErrorCode::PasswordNeedsAtLeastOneSpecialCharacter; + } + if (!std::any_of(password.begin(), password.end(), [](unsigned char c) { return std::isupper(c); })) { + return ErrorCode::PasswordNeedsAtLeastOneUppercaseLetter; + } + return ErrorCode::Ok; +} + +ErrorCode checkPassword(std::string password1, std::string password2) { + if (doPasswordsMatch(password1, password2)) { + return checkPasswordRules(password1); + } + return ErrorCode::PasswordsDoNotMatch; +} \ No newline at end of file diff --git a/homework/password-check/validation.hpp b/homework/password-check/validation.hpp index 85160868..b8f02695 100644 --- a/homework/password-check/validation.hpp +++ b/homework/password-check/validation.hpp @@ -1,2 +1,19 @@ -// TODO: I'm empty :) Put enum and function headers here. -// Don't forget the header guard - #pragma once \ No newline at end of file +#pragma once +#include + +enum class ErrorCode { + Ok, + PasswordNeedsAtLeastNineCharacters, + PasswordNeedsAtLeastOneNumber, + PasswordNeedsAtLeastOneSpecialCharacter, + PasswordNeedsAtLeastOneUppercaseLetter, + PasswordsDoNotMatch +}; + +std::string getErrorMessage(ErrorCode error); + +bool doPasswordsMatch(std::string password1, std::string password2); + +ErrorCode checkPasswordRules(std::string password); + +ErrorCode checkPassword(std::string password1, std::string password2); \ No newline at end of file From 9974ac45ea0538841b9c1365584715820eda1991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20=C5=BBywczok?= <130907114+TodorokiBoy@users.noreply.github.com> Date: Sat, 23 Nov 2024 20:53:31 +0100 Subject: [PATCH 2/3] Update validation.hpp --- homework/password-check/validation.hpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/homework/password-check/validation.hpp b/homework/password-check/validation.hpp index b8f02695..76d5e23e 100644 --- a/homework/password-check/validation.hpp +++ b/homework/password-check/validation.hpp @@ -11,9 +11,6 @@ enum class ErrorCode { }; std::string getErrorMessage(ErrorCode error); - bool doPasswordsMatch(std::string password1, std::string password2); - ErrorCode checkPasswordRules(std::string password); - -ErrorCode checkPassword(std::string password1, std::string password2); \ No newline at end of file +ErrorCode checkPassword(std::string password1, std::string password2); From 0fc82d4aef96a02dd536a062dc6ca1bba98b1cf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20=C5=BBywczok?= <130907114+TodorokiBoy@users.noreply.github.com> Date: Sat, 23 Nov 2024 21:11:25 +0100 Subject: [PATCH 3/3] Update main.cpp --- homework/password-check/main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/homework/password-check/main.cpp b/homework/password-check/main.cpp index aa38b2b2..254ccc11 100644 --- a/homework/password-check/main.cpp +++ b/homework/password-check/main.cpp @@ -1,6 +1,5 @@ #include #include -#include #include "validation.hpp" int main() {