Commit 1df41a17 authored by Liang Ding's avatar Liang Ding

Fixed #252

parent 4f21988f
......@@ -39,7 +39,7 @@ import org.json.JSONObject;
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @author <a href="mailto:385321165@qq.com">DASHU</a>
* @version 1.0.0.4, Mar 30, 2013
* @version 1.0.0.5, May 16, 2013
* @since 0.4.0
*/
public final class UserMgmtService {
......@@ -59,6 +59,11 @@ public final class UserMgmtService {
*/
private LangPropsService langPropsService = LangPropsService.getInstance();
/**
* Length of hashed password.
*/
private static final int HASHED_PASSWORD_LENGTH = 32;
/**
* Updates a user by the specified request json object.
*
......@@ -101,7 +106,14 @@ public final class UserMgmtService {
oldUser.put(User.USER_EMAIL, userNewEmail);
oldUser.put(User.USER_NAME, userName);
oldUser.put(User.USER_PASSWORD, MD5.hash(userPassword));
final boolean mybeHashed = HASHED_PASSWORD_LENGTH == userPassword.length();
final String newHashedPassword = MD5.hash(userPassword);
final String oldHashedPassword = oldUser.optString(User.USER_PASSWORD);
if (!mybeHashed || (!oldHashedPassword.equals(userPassword) && !oldHashedPassword.equals(newHashedPassword))) {
oldUser.put(User.USER_PASSWORD, newHashedPassword);
}
final String userRole = requestJSONObject.optString(User.USER_ROLE);
......@@ -270,6 +282,7 @@ public final class UserMgmtService {
*/
public static UserMgmtService getInstance() {
return SingletonHolder.SINGLETON;
}
/**
......
......@@ -19,7 +19,6 @@ import java.util.List;
import org.b3log.latke.Keys;
import org.b3log.latke.repository.Transaction;
import org.b3log.solo.AbstractTestCase;
import org.b3log.solo.model.Article;
import org.b3log.solo.model.Page;
import org.b3log.solo.repository.PageRepository;
import org.json.JSONObject;
......
......@@ -19,6 +19,7 @@ import junit.framework.Assert;
import org.b3log.latke.Keys;
import org.b3log.latke.model.Role;
import org.b3log.latke.model.User;
import org.b3log.latke.util.MD5;
import org.b3log.solo.AbstractTestCase;
import org.json.JSONObject;
import org.testng.annotations.Test;
......@@ -27,7 +28,7 @@ import org.testng.annotations.Test;
* {@link UserMgmtService} test case.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.1, Feb 23, 2012
* @version 1.0.0.2, May 16, 2013
*/
@Test(suiteName = "service")
public class UserMgmtServiceTestCase extends AbstractTestCase {
......@@ -77,6 +78,17 @@ public class UserMgmtServiceTestCase extends AbstractTestCase {
Assert.assertEquals(getUserQueryService().getUser(id).getJSONObject(
User.USER).getString(User.USER_NAME), "user2 new name");
// Do not update password
requestJSONObject.put(Keys.OBJECT_ID, id);
requestJSONObject.put(User.USER_NAME, "user2 name");
requestJSONObject.put(User.USER_EMAIL, "test2@gmail.com");
requestJSONObject.put(User.USER_PASSWORD, "pass2");
userMgmtService.updateUser(requestJSONObject);
Assert.assertEquals(getUserQueryService().getUser(id).getJSONObject(
User.USER).getString(User.USER_PASSWORD), MD5.hash("pass2"));
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment