allow the user to override what login/pass is used for the default user in single user mode

This commit is contained in:
jrandom
2005-11-11 12:26:17 +00:00
committed by zzz
parent 49564a3878
commit 7f6aa327f2
2 changed files with 39 additions and 6 deletions

View File

@@ -432,6 +432,22 @@ public class BlogManager {
private static final String DEFAULT_LOGIN = "default";
private static final String DEFAULT_PASS = "";
private static final String PROP_DEFAULT_LOGIN = "syndie.defaultSingleUserLogin";
private static final String PROP_DEFAULT_PASS = "syndie.defaultSingleUserPass";
private String getDefaultLogin() {
String login = _context.getProperty(PROP_DEFAULT_LOGIN);
if ( (login == null) || (login.trim().length() <= 0) )
login = DEFAULT_LOGIN;
return login;
}
private String getDefaultPass() {
String pass = _context.getProperty(PROP_DEFAULT_PASS);
if ( (pass == null) || (pass.trim().length() <= 0) )
pass = DEFAULT_PASS;
return pass;
}
public User getDefaultUser() {
User user = new User(_context);
getDefaultUser(user);
@@ -439,7 +455,7 @@ public class BlogManager {
}
public void getDefaultUser(User user) {
if (isSingleUser()) {
Hash userHash = _context.sha().calculateHash(DataHelper.getUTF8(DEFAULT_LOGIN));
Hash userHash = _context.sha().calculateHash(DataHelper.getUTF8(getDefaultLogin()));
File userFile = new File(_userDir, Base64.encode(userHash.getData()));
if (_log.shouldLog(Log.INFO))
_log.info("Attempting to login to the default user: " + userFile.getAbsolutePath());
@@ -451,7 +467,7 @@ public class BlogManager {
_log.error("Error reading the default user file: " + userFile);
return;
}
String ok = user.login(DEFAULT_LOGIN, DEFAULT_PASS, props);
String ok = user.login(getDefaultLogin(), getDefaultPass(), props);
if (User.LOGIN_OK.equals(ok)) {
return;
} else {
@@ -460,7 +476,7 @@ public class BlogManager {
return;
}
} else {
String ok = register(user, DEFAULT_LOGIN, DEFAULT_PASS, "", "default", "Default Syndie blog", "");
String ok = register(user, getDefaultLogin(), getDefaultPass(), "", "default", "Default Syndie blog", "");
if (User.LOGIN_OK.equals(ok)) {
_log.info("Default user created: " + user);
return;
@@ -497,7 +513,8 @@ public class BlogManager {
}
public void configure(String registrationPassword, String remotePassword, String adminPass, String defaultSelector,
String defaultProxyHost, int defaultProxyPort, boolean isSingleUser, Properties opts) {
String defaultProxyHost, int defaultProxyPort, boolean isSingleUser, Properties opts,
String defaultUser, String defaultPass) {
File cfg = getConfigFile();
Writer out = null;
try {
@@ -514,6 +531,14 @@ public class BlogManager {
out.write("syndie.defaultProxyHost="+defaultProxyHost.trim() + "\n");
if (defaultProxyPort > 0)
out.write("syndie.defaultProxyPort="+defaultProxyPort + "\n");
if ( (defaultUser == null) || (defaultUser.length() <= 0) )
defaultUser = getDefaultLogin();
if (defaultPass == null)
defaultPass = getDefaultPass();
out.write("syndie.defaultSingleUserLogin="+defaultUser+"\n");
out.write("syndie.defaultSingleUserPass="+defaultPass+"\n");
out.write("syndie.singleUser=" + isSingleUser + "\n"); // Used also in isConfigured()
if (opts != null) {
for (Iterator iter = opts.keySet().iterator(); iter.hasNext(); ) {

View File

@@ -31,12 +31,15 @@ if (!user.getAuthenticated()) {
isSingleUser = true;
else
isSingleUser = false;
String defaultUser = request.getParameter("defaultUser");
String defaultPass = request.getParameter("defaultPass");
if (configured) {
if (BlogManager.instance().authorizeAdmin(adminPass)) {
int port = -1;
try { port = Integer.parseInt(proxyPort); } catch (NumberFormatException nfe) { port = 4444; }
BlogManager.instance().configure(regPass, remotePass, adminPass, selector, proxyHost, port, isSingleUser, null);
BlogManager.instance().configure(regPass, remotePass, adminPass, selector, proxyHost, port, isSingleUser, null, defaultUser, defaultPass);
%><span class="b_adminMsgOk">Configuration updated</span><%
} else {
%><span class="b_adminMsgErr">Invalid admin password. If you lost it, please update your syndie.config.</span><%
@@ -44,7 +47,7 @@ if (!user.getAuthenticated()) {
} else {
int port = -1;
try { port = Integer.parseInt(proxyPort); } catch (NumberFormatException nfe) { port = 4444; }
BlogManager.instance().configure(regPass, remotePass, adminPass, selector, proxyHost, port, isSingleUser, null);
BlogManager.instance().configure(regPass, remotePass, adminPass, selector, proxyHost, port, isSingleUser, null, defaultUser, defaultPass);
%><span class="b_adminMsgOk">Configuration saved</span><%
}
} else {
@@ -53,6 +56,11 @@ if (!user.getAuthenticated()) {
<span class="b_adminDescr">If this is checked, the registration, admin, and remote passwords are unnecessary - anyone
can register and administer Syndie, as well as use any remote functionality. This should not be checked if untrusted
parties can access this web interface.</span><br />
<span class="b_adminField">Default user:</span> <input class="b_adminField" type="text" name="defaultUser" size="10" />
<span class="b_adminField">pass:</span> <input class="b_adminField" type="password" name="defaultPass" size="10" /><br />
<span class="b_adminDescr">If Syndie is in single user mode, it will create a new 'default' user automatically and use that
whenever you access Syndie unless you explicitly log in to another account. If you want Syndie to use an existing account as
your default account, you can specify them here, in which case it will automatically log you in under that account.</span><br />
<em class="b_adminField">Registration password:</em> <input class="b_adminField" type="text" name="regpass" size="10" /><br />
<span class="b_adminDescr">Users must specify this password on the registration form to proceed. If this is
blank, anyone can register.</span><br />