Commit 3d04db11 authored by dev_sky's avatar dev_sky
Browse files

activate user

parent 9abfe028
Loading
Loading
Loading
Loading
+29 −5
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ public class UsersController extends BaseController {

    private static final Logger logger = LoggerFactory.getLogger(UsersController.class);


    @Autowired
    private UsersService usersService;

@@ -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);
    }

}
+42 −1
Original line number Diff line number Diff line
@@ -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.*;
@@ -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;
    }
}
+17 −0
Original line number Diff line number Diff line
@@ -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());
    }
}
+53 −0
Original line number Diff line number Diff line
@@ -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