public BaasUser updatePassword( String appId, String plat, String id, String oldPassword, String newPassword, BaasUser currentUser) { if (currentUser == null || !currentUser.getId().equals(id)) { // 非本人禁止修改用户信息 throw new SimpleError(SimpleCode.USER_NOT_MATCH); } if (StringUtils.isEmpty(oldPassword) || StringUtils.isEmpty(newPassword)) { throw new SimpleError(SimpleCode.REQUEST_PARAM_ERROR); // 参数不足 } BaasUser user = get(appId, plat, currentUser.getUsername(), null, true); String username = user.getUsername(); String passwordMd5 = encrypt(username, oldPassword); String passwordExist = user.getPassword(); if (!passwordMd5.equals(passwordExist)) { // 密码错误 throw new SimpleError(SimpleCode.USER_WRONG_PASSWORD); } // 修改密码 user.setPassword(encrypt(username, newPassword)); // 重置SessionToken String oldSessionToken = user.getSessionToken(); user.setSessionToken(getSessionToken()); objectService.update(appId, plat, UserService.USER_CLASS_NAME, id, user, null, true); // 更新成功 清除用户缓存 deleteUserCache(appId, oldSessionToken); return user; }
public BaasUser register(String appId, String plat, BaasUser user) { String username = user.getUsername(); String password = user.getPassword(); if (StringUtils.isEmpty(password)) { // 密码禁止为空 throw new SimpleError(SimpleCode.USER_EMPTY_PASSWORD); } if (StringUtils.isEmpty(username)) { // 用户名禁止为空 throw new SimpleError(SimpleCode.USER_EMPTY_USERNAME); } if (!isNameValid(username)) { // 用户名不合法 throw new SimpleError(SimpleCode.USER_INVALID_USERNAME); } BaasUser exist = get(appId, plat, username, null, true); if (exist != null) { // 用户已存在 throw new SimpleError(SimpleCode.USER_ALREADY_EXIST); } user.setPassword(encrypt(username, password)); user.setSessionToken(getSessionToken()); // 禁止设置ACL字段 user.remove("acl"); BaasObject object = objectService.insert(appId, plat, USER_CLASS_NAME, user, null, true); return new BaasUser(object); }
public void update( String appId, String plat, String id, BaasUser user, BaasUser currentUser, boolean isMaster) { if (!isMaster) { // 非管理权限 if (currentUser == null || !currentUser.getId().equals(id)) { // 非本人禁止修改用户信息 throw new SimpleError(SimpleCode.USER_NOT_MATCH); } // 非管理权限,禁止修改敏感信息,敏感信息使用特定接口修改 user.remove("phone"); user.remove("email"); user.remove("auth"); } String newPassword = user.getPassword(); if (!StringUtils.isEmpty(newPassword)) { // 密码字段不为空 String newPasswordEncrypt = encrypt(currentUser.getUsername(), user.getPassword()); if (!newPasswordEncrypt.equals(currentUser.getPassword())) { // 密码字段被修改 更新SessionToken user.setPassword(newPasswordEncrypt); String sessionTokenNow = currentUser.getSessionToken(); if (!StringUtils.isEmpty(sessionTokenNow)) { // 删除原有用户缓存 deleteUserCache(appId, sessionTokenNow); } user.setSessionToken(getSessionToken()); } } else { // 清除空的密码字段 user.remove("password"); } // 禁止修改用户名 user.remove("username"); // 禁止修改ACL字段 user.remove("acl"); objectService.update(appId, plat, UserService.USER_CLASS_NAME, id, user, null, true); // 更新成功 清除用户缓存 deleteUserCache(appId, user.getSessionToken()); }
/** * 用户登录 * * @param username 用户名 * @param password 密码 */ public BaasUser login(String appId, String plat, String username, String password) { if (StringUtils.isEmpty(password)) { // 密码禁止为空 throw new SimpleError(SimpleCode.USER_EMPTY_PASSWORD); } BaasUser user = get(appId, plat, username, null, true); if (user == null) { throw new SimpleError(SimpleCode.USER_NOT_EXIST); } String passwordMd5 = encrypt(username, password); String passwordExist = user.getPassword(); if (!passwordMd5.equals(passwordExist)) { // 密码错误 throw new SimpleError(SimpleCode.USER_WRONG_PASSWORD); } user.remove("password"); return user; }