Loading dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/UsersController.java +29 −5 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ public class UsersController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(UsersController.class); @Autowired private UsersService usersService; Loading Loading @@ -432,14 +433,37 @@ public class UsersController extends BaseController { @RequestParam(value = "userPassword") String userPassword, @RequestParam(value = "repeatPassword") String repeatPassword, @RequestParam(value = "email") String email) throws Exception { userName = userName.replaceAll("[\n|\r|\t]", ""); userPassword = userPassword.replaceAll("[\n|\r|\t]", ""); repeatPassword = repeatPassword.replaceAll("[\n|\r|\t]", ""); email = email.replaceAll("[\n|\r|\t]", ""); String parameterFormat = "[\n|\r|\t]"; userName = userName.replaceAll(parameterFormat, ""); userPassword = userPassword.replaceAll(parameterFormat, ""); repeatPassword = repeatPassword.replaceAll(parameterFormat, ""); email = email.replaceAll(parameterFormat, ""); logger.info("user self-register, userName: {}, userPassword {}, repeatPassword {}, eamil {}", userName, userPassword, repeatPassword, email); userName, Constants.PASSWORD_DEFAULT, Constants.PASSWORD_DEFAULT, email); Map<String, Object> result = usersService.registerUser(userName, userPassword, repeatPassword, email); return returnDataList(result); } /** * user activate * * @param userName user name */ @ApiOperation(value="activateUser",notes = "ACTIVATE_USER_NOTES") @ApiImplicitParams({ @ApiImplicitParam(name = "userName", value = "USER_NAME", type = "String"), }) @PostMapping("/activate") @ResponseStatus(HttpStatus.OK) @ApiException(UPDATE_USER_ERROR) public Result<Object> activateUser(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, @RequestParam(value = "userName") String userName) { String parameterFormat = "[\n|\r|\t]"; userName = userName.replaceAll(parameterFormat, ""); logger.info("login user {}, activate user, userName: {}", loginUser.getUserName(), userName); Map<String, Object> result = usersService.activateUser(loginUser, userName); return returnDataList(result); } } dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java +42 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import org.apache.dolphinscheduler.api.utils.CheckUtils; import org.apache.dolphinscheduler.api.utils.PageInfo; import org.apache.dolphinscheduler.api.utils.Result; import org.apache.dolphinscheduler.common.Constants; import org.apache.dolphinscheduler.common.enums.Flag; import org.apache.dolphinscheduler.common.enums.ResourceType; import org.apache.dolphinscheduler.common.enums.UserType; import org.apache.dolphinscheduler.common.utils.*; Loading Loading @@ -936,9 +937,49 @@ public class UsersService extends BaseService { return result; } createUser(userName, userPassword, email, 1, "", "", 0); createUser(userName, userPassword, email, 1, "", "", Flag.NO.ordinal()); putMsg(result, Status.SUCCESS); return result; } /** * activate user, only system admin have permission, change user state code 0 to 1 * * @param loginUser login user * @return create result code */ public Map<String, Object> activateUser(User loginUser, String userName) { Map<String, Object> result = new HashMap<>(5); result.put(Constants.STATUS, false); if (!isAdmin(loginUser)) { putMsg(result, Status.USER_NO_OPERATION_PERM); return result; } if (!CheckUtils.checkUserName(userName)){ putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR, userName); return result; } User user = userMapper.queryByUserNameAccurately(userName); if (user == null) { putMsg(result, Status.USER_NOT_EXIST, userName); return result; } if (user.getState() != Flag.NO.ordinal()) { putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR, userName); return result; } user.setState(Flag.YES.ordinal()); Date now = new Date(); user.setUpdateTime(now); userMapper.updateById(user); putMsg(result, Status.SUCCESS); return result; } } dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/UsersControllerTest.java +17 −0 Original line number Diff line number Diff line Loading @@ -287,4 +287,21 @@ public class UsersControllerTest extends AbstractControllerTest{ Assert.assertEquals(Status.SUCCESS.getCode(),result.getCode().intValue()); logger.info(mvcResult.getResponse().getContentAsString()); } @Test public void testActivateUser() throws Exception { MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>(); paramsMap.add("userName","test_ai"); MvcResult mvcResult = mockMvc.perform(post("/users/activate") .header(SESSION_ID, sessionId) .params(paramsMap)) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertEquals(Status.SUCCESS.getCode(),result.getCode().intValue()); logger.info(mvcResult.getResponse().getContentAsString()); } } dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java +53 −0 Original line number Diff line number Diff line Loading @@ -498,6 +498,59 @@ public class UsersServiceTest { } } @Test public void testActivateUser() { User user = new User(); user.setUserType(UserType.GENERAL_USER); String userName = "userTest0002~"; try { //not admin Map<String, Object> result = usersService.activateUser(user, userName); Assert.assertEquals(Status.USER_NO_OPERATION_PERM, result.get(Constants.STATUS)); //userName error user.setUserType(UserType.ADMIN_USER); result = usersService.activateUser(user, userName); Assert.assertEquals(Status.REQUEST_PARAMS_NOT_VALID_ERROR, result.get(Constants.STATUS)); //user not exist userName = "userTest10013"; result = usersService.activateUser(user, userName); Assert.assertEquals(Status.USER_NOT_EXIST, result.get(Constants.STATUS)); logger.info(result.toString()); //user state error userName = "userTest0001"; when(userMapper.queryByUserNameAccurately(userName)).thenReturn(getUser()); result = usersService.activateUser(user, userName); Assert.assertEquals(Status.REQUEST_PARAMS_NOT_VALID_ERROR, result.get(Constants.STATUS)); logger.info(result.toString()); //success when(userMapper.queryByUserNameAccurately(userName)).thenReturn(getDisabledUser()); result = usersService.activateUser(user, userName); logger.info(result.toString()); Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); } catch (Exception e) { logger.error("activate user error",e); Assert.assertTrue(false); } } /** * get disabled user * @return */ private User getDisabledUser() { User user = new User(); user.setUserType(UserType.GENERAL_USER); user.setUserName("userTest0001"); user.setUserPassword("userTest0001"); user.setState(0); return user; } /** * get user * @return Loading Loading
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/UsersController.java +29 −5 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ public class UsersController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(UsersController.class); @Autowired private UsersService usersService; Loading Loading @@ -432,14 +433,37 @@ public class UsersController extends BaseController { @RequestParam(value = "userPassword") String userPassword, @RequestParam(value = "repeatPassword") String repeatPassword, @RequestParam(value = "email") String email) throws Exception { userName = userName.replaceAll("[\n|\r|\t]", ""); userPassword = userPassword.replaceAll("[\n|\r|\t]", ""); repeatPassword = repeatPassword.replaceAll("[\n|\r|\t]", ""); email = email.replaceAll("[\n|\r|\t]", ""); String parameterFormat = "[\n|\r|\t]"; userName = userName.replaceAll(parameterFormat, ""); userPassword = userPassword.replaceAll(parameterFormat, ""); repeatPassword = repeatPassword.replaceAll(parameterFormat, ""); email = email.replaceAll(parameterFormat, ""); logger.info("user self-register, userName: {}, userPassword {}, repeatPassword {}, eamil {}", userName, userPassword, repeatPassword, email); userName, Constants.PASSWORD_DEFAULT, Constants.PASSWORD_DEFAULT, email); Map<String, Object> result = usersService.registerUser(userName, userPassword, repeatPassword, email); return returnDataList(result); } /** * user activate * * @param userName user name */ @ApiOperation(value="activateUser",notes = "ACTIVATE_USER_NOTES") @ApiImplicitParams({ @ApiImplicitParam(name = "userName", value = "USER_NAME", type = "String"), }) @PostMapping("/activate") @ResponseStatus(HttpStatus.OK) @ApiException(UPDATE_USER_ERROR) public Result<Object> activateUser(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, @RequestParam(value = "userName") String userName) { String parameterFormat = "[\n|\r|\t]"; userName = userName.replaceAll(parameterFormat, ""); logger.info("login user {}, activate user, userName: {}", loginUser.getUserName(), userName); Map<String, Object> result = usersService.activateUser(loginUser, userName); return returnDataList(result); } }
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java +42 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import org.apache.dolphinscheduler.api.utils.CheckUtils; import org.apache.dolphinscheduler.api.utils.PageInfo; import org.apache.dolphinscheduler.api.utils.Result; import org.apache.dolphinscheduler.common.Constants; import org.apache.dolphinscheduler.common.enums.Flag; import org.apache.dolphinscheduler.common.enums.ResourceType; import org.apache.dolphinscheduler.common.enums.UserType; import org.apache.dolphinscheduler.common.utils.*; Loading Loading @@ -936,9 +937,49 @@ public class UsersService extends BaseService { return result; } createUser(userName, userPassword, email, 1, "", "", 0); createUser(userName, userPassword, email, 1, "", "", Flag.NO.ordinal()); putMsg(result, Status.SUCCESS); return result; } /** * activate user, only system admin have permission, change user state code 0 to 1 * * @param loginUser login user * @return create result code */ public Map<String, Object> activateUser(User loginUser, String userName) { Map<String, Object> result = new HashMap<>(5); result.put(Constants.STATUS, false); if (!isAdmin(loginUser)) { putMsg(result, Status.USER_NO_OPERATION_PERM); return result; } if (!CheckUtils.checkUserName(userName)){ putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR, userName); return result; } User user = userMapper.queryByUserNameAccurately(userName); if (user == null) { putMsg(result, Status.USER_NOT_EXIST, userName); return result; } if (user.getState() != Flag.NO.ordinal()) { putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR, userName); return result; } user.setState(Flag.YES.ordinal()); Date now = new Date(); user.setUpdateTime(now); userMapper.updateById(user); putMsg(result, Status.SUCCESS); return result; } }
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/UsersControllerTest.java +17 −0 Original line number Diff line number Diff line Loading @@ -287,4 +287,21 @@ public class UsersControllerTest extends AbstractControllerTest{ Assert.assertEquals(Status.SUCCESS.getCode(),result.getCode().intValue()); logger.info(mvcResult.getResponse().getContentAsString()); } @Test public void testActivateUser() throws Exception { MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>(); paramsMap.add("userName","test_ai"); MvcResult mvcResult = mockMvc.perform(post("/users/activate") .header(SESSION_ID, sessionId) .params(paramsMap)) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertEquals(Status.SUCCESS.getCode(),result.getCode().intValue()); logger.info(mvcResult.getResponse().getContentAsString()); } }
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java +53 −0 Original line number Diff line number Diff line Loading @@ -498,6 +498,59 @@ public class UsersServiceTest { } } @Test public void testActivateUser() { User user = new User(); user.setUserType(UserType.GENERAL_USER); String userName = "userTest0002~"; try { //not admin Map<String, Object> result = usersService.activateUser(user, userName); Assert.assertEquals(Status.USER_NO_OPERATION_PERM, result.get(Constants.STATUS)); //userName error user.setUserType(UserType.ADMIN_USER); result = usersService.activateUser(user, userName); Assert.assertEquals(Status.REQUEST_PARAMS_NOT_VALID_ERROR, result.get(Constants.STATUS)); //user not exist userName = "userTest10013"; result = usersService.activateUser(user, userName); Assert.assertEquals(Status.USER_NOT_EXIST, result.get(Constants.STATUS)); logger.info(result.toString()); //user state error userName = "userTest0001"; when(userMapper.queryByUserNameAccurately(userName)).thenReturn(getUser()); result = usersService.activateUser(user, userName); Assert.assertEquals(Status.REQUEST_PARAMS_NOT_VALID_ERROR, result.get(Constants.STATUS)); logger.info(result.toString()); //success when(userMapper.queryByUserNameAccurately(userName)).thenReturn(getDisabledUser()); result = usersService.activateUser(user, userName); logger.info(result.toString()); Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); } catch (Exception e) { logger.error("activate user error",e); Assert.assertTrue(false); } } /** * get disabled user * @return */ private User getDisabledUser() { User user = new User(); user.setUserType(UserType.GENERAL_USER); user.setUserName("userTest0001"); user.setUserPassword("userTest0001"); user.setState(0); return user; } /** * get user * @return Loading