Ejemplo n.º 1
0
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() + "]");
	}
}
Ejemplo n.º 2
0
	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;
	}
Ejemplo n.º 3
0
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() + "]");
	}
}
Ejemplo n.º 4
0
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() + "]");
	}
}