diff --git a/login_server/src/cpp/HTTPInterface/LoginPage.cpp b/login_server/src/cpp/HTTPInterface/LoginPage.cpp index b7800d411..2ee28dde0 100644 --- a/login_server/src/cpp/HTTPInterface/LoginPage.cpp +++ b/login_server/src/cpp/HTTPInterface/LoginPage.cpp @@ -155,6 +155,12 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: if(email != "" && password != "") { UserState user_state; + auto host = request.find("Host"); + std::string host_string = ""; + if (host != request.end()) { + host_string = host->second; + } + try { user_state = mSession->loadUser(email, password); } catch (Poco::Exception& ex) { @@ -171,9 +177,18 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: user_state = USER_DISABLED; } } - } else { - //printf("pubkey exist: %p\n",user->getModel()->getPublicKey()); } + + // check if user group belong to host + if(!user.isNull() && host_string != "") { + auto group = user->getGroup(); + if(!group.isNull()) { + if(group->getHost() != host_string) { + printf("group host: %s, host string: %s\n", group->getHost().data(), host_string.data()); + user_state = USER_WRONG_HOST; + } + } + } getErrors(mSession); auto lastExternReferer = mSession->getLastReferer(); @@ -183,6 +198,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: switch(user_state) { case USER_EMPTY: case USER_PASSWORD_INCORRECT: + case USER_WRONG_HOST: addError(new Error(langCatalog->gettext("Login"), langCatalog->gettext("E-Mail or password isn't right, please try again!")), false); if(mSession) { getErrors(mSession); @@ -342,11 +358,11 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << " "; // end include header.cpsp responseStream << "\n"; -#line 268 "F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp" +#line 284 "F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\n"; responseStream << "\n"; responseStream << "
"; -#line 281 "F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp" +#line 297 "F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp" responseStream << ( langCatalog->gettext("You haven't any account yet? Please follow the link to create one.") ); responseStream << "
\n"; responseStream << "\t \n"; responseStream << "\t\t\t"; -#line 283 "F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp" +#line 299 "F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp" responseStream << ( langCatalog->gettext("Create New Account") ); responseStream << "\n"; responseStream << "\t\t \n"; responseStream << "\t