\r\n"
"
Username:
\r\n";
if (pUser) {
sPageRet += "\r\n"
- "
\r\n";
+ "
\r\n";
} else {
sPageRet += "
\r\n";
}
@@ -334,38 +335,60 @@ bool CAdminSock::UserPage(CString& sPageRet, CUser* pUser) {
return true;
}
+ CString sUsername = GetParam("user");
+ if (!pUser && m_pModule->GetZNC()->FindUser(sUsername)) {
+ GetErrorPage(sPageRet, "Invalid Submission [User " + sUsername.Escape_n(CString::EHTML) + " already exists]");
+ return true;
+ }
+
+ CUser* pNewUser = GetNewUser(sPageRet);
+ if (!pNewUser) {
+ return true;
+ }
+
+ CString sErr;
+
if (!pUser) {
// Add User Submission
- if (AddNewUser(sPageRet)) {
+ if (!pNewUser->IsValid(sErr)) {
+ delete pNewUser;
+ GetErrorPage(sPageRet, "Invalid submission [" + sErr.Escape_n(CString::EHTML) + "]");
return true;
}
+
+ m_pModule->GetZNC()->AddUser(pNewUser);
} else {
// Edit User Submission
- GetErrorPage(sPageRet, "Sorry... the editing of users has not been implemented yet.");
- return true;
+ if (!pUser->Clone(*pNewUser, sErr)) {
+ delete pNewUser;
+ GetErrorPage(sPageRet, "Invalid Submission [" + sErr.Escape_n(CString::EHTML) + "]");
+ return true;
+ }
+
+ delete pNewUser;
}
Redirect("/listusers");
return false;
}
-bool CAdminSock::AddNewUser(CString& sPageRet) {
- CString sUsername = GetParam("user");
+CUser* CAdminSock::GetNewUser(CString& sPageRet) {
+ CString sUsername = GetParam("newuser");
+
if (sUsername.empty()) {
- GetErrorPage(sPageRet, "Invalid Submission [Username is required]");
- return true;
+ sUsername = GetParam("user");
}
- if (m_pModule->GetZNC()->FindUser(sUsername)) {
- GetErrorPage(sPageRet, "Invalid Submission [User " + sUsername.Escape_n(CString::EHTML) + " already exists]");
- return true;
+ if (sUsername.empty()) {
+ GetErrorPage(sPageRet, "Invalid Submission [Username is required]");
+ return NULL;
}
CString sArg = GetParam("password");
if (sArg != GetParam("password2")) {
GetErrorPage(sPageRet, "Invalid Submission [Passwords do not match]");
- return true;
+ return NULL;
}
CUser* pNewUser = new CUser(sUsername, m_pModule->GetZNC());
@@ -426,16 +449,7 @@ bool CAdminSock::AddNewUser(CString& sPageRet) {
pNewUser->AddChan(vsArgs[a].TrimRight_n("\r"));
}
- CString sErr;
- if (!pNewUser->IsValid(sErr)) {
- delete pNewUser;
- GetErrorPage(sPageRet, "Invalid submission [" + sErr.Escape_n(CString::EHTML) + "]");
- return true;
- }
-
- m_pModule->GetZNC()->AddUser(pNewUser);
-
- return false;
+ return pNewUser;
}
GLOBALMODULEDEFS(CAdminMod, "Add, Edit, Remove users on the fly")