diff --git a/apps/syndie/java/src/net/i2p/syndie/BlogManager.java b/apps/syndie/java/src/net/i2p/syndie/BlogManager.java index 26f765454..175465f7f 100644 --- a/apps/syndie/java/src/net/i2p/syndie/BlogManager.java +++ b/apps/syndie/java/src/net/i2p/syndie/BlogManager.java @@ -563,11 +563,17 @@ public class BlogManager { } public boolean authorizeRemote(String pass) { if (isSingleUser()) return true; - String rem = getRemotePasswordHash(); - if ( (rem == null) || (rem.trim().length() <= 0) ) - return false; String hash = Base64.encode(_context.sha().calculateHash(DataHelper.getUTF8(pass.trim())).getData()); - return (hash.equals(rem)); + String rem = getRemotePasswordHash(); + boolean ok = false; + if ( (rem != null) && (rem.trim().length() > 0) ) + ok = hash.equals(rem); + if (!ok) { + rem = getAdminPasswordHash(); + if ( (rem != null) && (rem.trim().length() > 0) ) + ok = hash.equals(rem); + } + return ok; } public boolean authorizeRemote(User user) { if (isSingleUser()) return true; diff --git a/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java index 65e7e078e..728a0a354 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java @@ -467,7 +467,18 @@ public abstract class BaseServlet extends HttpServlet { if ( (pass0 != null) && (pass1 != null) && (pass0.equals(pass1)) ) { BlogManager.instance().changePasswrd(user, oldPass, pass0, pass1); } - + + if (user.getAuthenticated() && !BlogManager.instance().authorizeRemote(user)) { + String adminPass = req.getParameter("adminPass"); + if (adminPass != null) { + boolean authorized = BlogManager.instance().authorizeRemote(adminPass); + if (authorized) { + user.setAllowAccessRemote(authorized); + BlogManager.instance().saveUser(user); + } + } + } + boolean updated = BlogManager.instance().updateMetadata(user, user.getBlog(), opts); } diff --git a/apps/syndie/java/src/net/i2p/syndie/web/ProfileServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/ProfileServlet.java index 2e82b6fb7..67fe19171 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/ProfileServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/ProfileServlet.java @@ -96,6 +96,10 @@ public class ProfileServlet extends BaseServlet { out.write("