diff --git a/modules/blockuser.cpp b/modules/blockuser.cpp index d60f6766..98155edc 100644 --- a/modules/blockuser.cpp +++ b/modules/blockuser.cpp @@ -96,6 +96,39 @@ public: } } + bool OnEmbeddedWebRequest(CWebSock& WebSock, const CString& sPageName, CTemplate& Tmpl) { + if (sPageName == "webadmin/user" && WebSock.GetSession()->IsAdmin()) { + CString sAction = Tmpl["WebadminAction"]; + if (sAction == "display") { + Tmpl["Blocked"] = CString(IsBlocked(Tmpl["Username"])); + Tmpl["Self"] = CString(Tmpl["Username"].Equals(WebSock.GetSession()->GetUser()->GetUserName())); + return true; + } + if (sAction == "change" && WebSock.GetParam("embed_blockuser_presented").ToBool()) { + if (Tmpl["Username"].Equals(WebSock.GetSession()->GetUser()->GetUserName()) && + WebSock.GetParam("embed_blockuser_block").ToBool()) { + WebSock.GetSession()->AddError("You can't block yourself"); + } else if (WebSock.GetParam("embed_blockuser_block").ToBool()) { + if (!WebSock.GetParam("embed_blockuser_old").ToBool()) { + if (Block(Tmpl["Username"])) { + WebSock.GetSession()->AddSuccess("Blocked [" + Tmpl["Username"] + "]"); + } else { + WebSock.GetSession()->AddError("Couldn't block [" + Tmpl["Username"] + "]"); + } + } + } else if (WebSock.GetParam("embed_blockuser_old").ToBool()){ + if (DelNV(Tmpl["Username"])) { + WebSock.GetSession()->AddSuccess("Unblocked [" + Tmpl["Username"] + "]"); + } else { + WebSock.GetSession()->AddError("User [" + Tmpl["Username"] + "is not blocked"); + } + } + return true; + } + } + return false; + } + private: bool IsBlocked(const CString& sUser) { MCString::iterator it; diff --git a/modules/blockuser/tmpl/WebadminUser.tmpl b/modules/blockuser/tmpl/WebadminUser.tmpl new file mode 100644 index 00000000..9e65a81b --- /dev/null +++ b/modules/blockuser/tmpl/WebadminUser.tmpl @@ -0,0 +1,13 @@ +
+
+
+ + +
+ checked="checked" disabled="disabled" /> + +
+
+
+
+