From eabe4983f9833c98ed7f1cc81f965eb697ed26a5 Mon Sep 17 00:00:00 2001 From: prozacx Date: Sat, 24 Sep 2005 05:15:08 +0000 Subject: [PATCH] Added user Admin flag and allow user admins to edit other users and global settings git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@529 726aef4b-f618-498e-8847-2d620e286838 --- modules/webadmin.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/webadmin.cpp b/modules/webadmin.cpp index e515a765..92c8dd91 100644 --- a/modules/webadmin.cpp +++ b/modules/webadmin.cpp @@ -85,7 +85,7 @@ public: } virtual Csock* GetSockObj(const CString& sHost, unsigned short uPort); - bool IsAdmin() const { return m_bAdmin; } + bool IsAdmin(bool bAllowUserAdmin = true) const { return m_bAdmin; } private: protected: @@ -193,7 +193,12 @@ bool CWebAdminSock::OnLogin(const CString& sUser, const CString& sPass) { CUser* pUser = CZNC::Get().FindUser(GetUser()); if (pUser && pUser->CheckPass(GetPass())) { - m_pUser = pUser; + if (pUser->IsAdmin()) { + m_bAdmin = true; + } else { + m_pUser = pUser; + } + return true; } @@ -807,6 +812,10 @@ bool CWebAdminSock::UserPage(CString& sPageRet, CUser* pUser) { sPageRet += "DenyLoadMod()) ? " CHECKED" : "") + ">  \r\n"; } + if (IsAdmin()) { + sPageRet += "IsAdmin()) ? " CHECKED" : "") + CString((pUser && pUser == CZNC::Get().FindUser(GetUser())) ? " DISABLED" : "") + ">  \r\n"; + } + sPageRet += "

" "
CTCP Replies:
" "
\r\n" @@ -973,6 +982,12 @@ CUser* CWebAdminSock::GetNewUser(CString& sPageRet, CUser* pUser) { pNewUser->SetDenyLoadMod(pUser->DenyLoadMod()); } + if (pUser && pUser != CZNC::Get().FindUser(GetUser())) { + pNewUser->SetAdmin(GetParam("isadmin").ToBool()); + } else { + pNewUser->SetAdmin(pUser->IsAdmin()); + } + GetParamValues("channel", vsArgs); for (a = 0; a < vsArgs.size(); a++) { const CString& sChan = vsArgs[a];