diff --git a/build b/build index c24b6ae..86ee83a 100644 --- a/build +++ b/build @@ -1 +1 @@ -38 \ No newline at end of file +40 \ No newline at end of file diff --git a/src/MFAServer.cpp b/src/MFAServer.cpp index 6a34e00..663bb93 100644 --- a/src/MFAServer.cpp +++ b/src/MFAServer.cpp @@ -41,7 +41,7 @@ namespace OpenWifi { bool MFAServer::SendChallenge(const SecurityObjects::UserInfoAndPolicy &UInfo, const std::string &Method, const std::string &Challenge) { if(Method=="sms" && SMSSender()->Enabled() && !UInfo.userinfo.userTypeProprietaryInfo.mobiles.empty()) { std::string Message = "This is your login code: " + Challenge + " Please enter this in your login screen."; - return SMSSender()->Send(UInfo.userinfo.userTypeProprietaryInfo.mobiles[0].number, Message); + return (SMSSender()->Send(UInfo.userinfo.userTypeProprietaryInfo.mobiles[0].number, Message)==0); } if(Method=="email" && SMTPMailerService()->Enabled() && !UInfo.userinfo.email.empty()) { diff --git a/src/RESTAPI_user_handler.cpp b/src/RESTAPI_user_handler.cpp index 06bee3e..cf79d8e 100644 --- a/src/RESTAPI_user_handler.cpp +++ b/src/RESTAPI_user_handler.cpp @@ -169,30 +169,23 @@ namespace OpenWifi { Logger_.information(Poco::format("Verification e-mail requested for %s",Existing.email)); } - if(NewUser.userTypeProprietaryInfo.mfa.enabled!=Existing.userTypeProprietaryInfo.mfa.enabled) { - std::cout << "Saving MFA" << std::endl; - if(!NewUser.userTypeProprietaryInfo.mfa.enabled) { - Existing.userTypeProprietaryInfo.mfa.enabled=false; - } else { - // Need to make sure the provided number has been validated. - if(NewUser.userTypeProprietaryInfo.mfa.method=="sms") { - std::cout << "Saving in sms" << std::endl; - if(NewUser.userTypeProprietaryInfo.mobiles.empty()) { - return BadRequest(RESTAPI::Errors::NeedMobileNumber); - } - if(!SMSSender()->IsNumberValid(NewUser.userTypeProprietaryInfo.mobiles[0].number)){ - return BadRequest(RESTAPI::Errors::NeedMobileNumber); - } - Existing.userTypeProprietaryInfo.mfa.method = "sms"; - Existing.userTypeProprietaryInfo.mobiles = NewUser.userTypeProprietaryInfo.mobiles; - std::cout << "Saving in mobiles" << std::endl; - } else if(NewUser.userTypeProprietaryInfo.mfa.method=="email") { - - } else { - return BadRequest(RESTAPI::Errors::BadMFAMethod); - } - } + if(RawObject->has("userTypeProprietaryInfo")) { Existing.userTypeProprietaryInfo.mfa.enabled = NewUser.userTypeProprietaryInfo.mfa.enabled; + if(NewUser.userTypeProprietaryInfo.mfa.method=="sms") { + Existing.userTypeProprietaryInfo.mfa.method=NewUser.userTypeProprietaryInfo.mfa.method; + auto MobileStruct = RawObject->get("userTypeProprietaryInfo"); + auto Info = MobileStruct.extract(); + if(Info->isArray("mobiles")) { + Existing.userTypeProprietaryInfo.mobiles = NewUser.userTypeProprietaryInfo.mobiles; + } + if(!NewUser.userTypeProprietaryInfo.mobiles.empty() && !SMSSender()->IsNumberValid(NewUser.userTypeProprietaryInfo.mobiles[0].number)){ + return BadRequest(RESTAPI::Errors::NeedMobileNumber); + } + } else if(NewUser.userTypeProprietaryInfo.mfa.method=="email") { + Existing.userTypeProprietaryInfo.mfa.method=NewUser.userTypeProprietaryInfo.mfa.method; + } else { + return BadRequest(RESTAPI::Errors::BadMFAMethod); + } } if(Storage()->UpdateUserInfo(UserInfo_.userinfo.email,Id,Existing)) {