void CWebAuth::AcceptedLogin(CUser& User) { if (m_pWebSock) { CSmartPtr<CWebSession> spSession = m_pWebSock->GetSession(); spSession->SetUser(&User); m_pWebSock->SetLoggedIn(true); m_pWebSock->UnPauseRead(); m_pWebSock->Redirect("/?cookie_check=true"); DEBUG("Successful login attempt ==> USER [" + User.GetUserName() + "] ==> SESSION [" + spSession->GetId() + "]"); } }
virtual bool OnWebRequest(CWebSock& WebSock, const CString& sPageName, CTemplate& Tmpl) { CSmartPtr<CWebSession> spSession = WebSock.GetSession(); if (!m_sSalt.empty()) { Tmpl["Verify"] = "yes"; Tmpl["Code"] = WebSock.GetParam("code", false); Tmpl["Username"] = WebSock.GetParam("user", false); } if (!WebSock.GetParam("submitted").ToUInt()) { return true; } CString sUsername = WebSock.GetParam("user"); if (CZNC::Get().FindUser(sUsername)) { WebSock.PrintErrorPage("Invalid Submission [User " + sUsername + " already exists]"); return true; } CUser* pNewUser = GetNewUser(WebSock); if (!pNewUser) { return true; } CString sErr; CString sAction; // Add User Submission if (!CZNC::Get().AddUser(pNewUser, sErr)) { delete pNewUser; WebSock.PrintErrorPage("Invalid submission [" + sErr + "]"); return true; } sAction = "added"; CTemplate TmplMod; TmplMod["Username"] = sUsername; TmplMod["WebadminAction"] = "change"; if (!CZNC::Get().WriteConfig()) { WebSock.PrintErrorPage("User " + sAction + ", but config was not written"); return true; } spSession->SetUser(pNewUser); WebSock.SetLoggedIn(true); WebSock.UnPauseRead(); WebSock.Redirect("/?cookie_check=true"); return false; }
void CWebAuth::RefusedLogin(const CString& sReason) { if (m_pWebSock) { CSmartPtr<CWebSession> spSession = m_pWebSock->GetSession(); spSession->AddError("Invalid login!"); spSession->SetUser(NULL); m_pWebSock->SetLoggedIn(false); m_pWebSock->UnPauseRead(); m_pWebSock->Redirect("/?cookie_check=true"); DEBUG("UNSUCCESSFUL login attempt ==> REASON [" + sReason + "] ==> SESSION [" + spSession->GetId() + "]"); } }
void CWebAuth::RefusedLogin(const CString& sReason) { if (m_pWebSock) { std::shared_ptr<CWebSession> spSession = m_pWebSock->GetSession(); spSession->AddError("Invalid login!"); spSession->SetUser(nullptr); m_pWebSock->SetLoggedIn(false); m_pWebSock->UnPauseRead(); if (m_bBasic) { m_pWebSock->AddHeader("WWW-Authenticate", "Basic realm=\"ZNC\""); m_pWebSock->CHTTPSock::PrintErrorPage(401, "Unauthorized", "HTTP Basic authentication attemped with invalid credentials"); // Why CWebSock makes this function protected?.. } else { m_pWebSock->Redirect("/?cookie_check=true"); } DEBUG("UNSUCCESSFUL login attempt ==> REASON [" + sReason + "] ==> SESSION [" + spSession->GetId() + "]"); } }