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 += "
"
"