Search in sources :

Example 6 with ManageUserAccountRequest

use of com.hack23.cia.service.api.action.admin.ManageUserAccountRequest in project cia by Hack23.

the class ManageUserAccountService method processService.

@Override
@Secured({ "ROLE_ADMIN" })
public ManageUserAccountResponse processService(final ManageUserAccountRequest serviceRequest) {
    final ManageUserAccountResponse inputValidation = inputValidation(serviceRequest);
    if (inputValidation != null) {
        return inputValidation;
    }
    final CreateApplicationEventRequest eventRequest = createApplicationEventForService(serviceRequest);
    final UserAccount userAccount = getUserAccountFromSecurityContext();
    if (userAccount != null) {
        eventRequest.setUserId(userAccount.getUserId());
    }
    ManageUserAccountResponse response;
    final Set<ConstraintViolation<ManageUserAccountRequest>> requestConstraintViolations = validateRequest(serviceRequest);
    if (!requestConstraintViolations.isEmpty()) {
        response = new ManageUserAccountResponse(ServiceResult.FAILURE);
        final String errorMessage = requestConstraintViolations.stream().sorted((p1, p2) -> p1.getPropertyPath().toString().compareTo(p2.getPropertyPath().toString())).map(p -> p.getPropertyPath().toString() + " " + p.getMessage()).collect(Collectors.joining(", "));
        response.setErrorMessage(errorMessage);
        eventRequest.setErrorMessage(errorMessage);
    } else {
        response = performOperation(serviceRequest, eventRequest);
    }
    createApplicationEventService.processService(eventRequest);
    return response;
}
Also used : ApplicationOperationType(com.hack23.cia.model.internal.application.system.impl.ApplicationOperationType) BusinessService(com.hack23.cia.service.impl.action.common.BusinessService) ManageUserAccountRequest(com.hack23.cia.service.api.action.admin.ManageUserAccountRequest) ServiceResult(com.hack23.cia.service.api.action.common.ServiceResponse.ServiceResult) EnumMap(java.util.EnumMap) ApplicationEventGroup(com.hack23.cia.model.internal.application.system.impl.ApplicationEventGroup) RemoveDataManager(com.hack23.cia.service.data.api.RemoveDataManager) Set(java.util.Set) Autowired(org.springframework.beans.factory.annotation.Autowired) Collectors(java.util.stream.Collectors) Secured(org.springframework.security.access.annotation.Secured) AbstractBusinessServiceImpl(com.hack23.cia.service.impl.action.common.AbstractBusinessServiceImpl) ManageUserAccountResponse(com.hack23.cia.service.api.action.admin.ManageUserAccountResponse) Propagation(org.springframework.transaction.annotation.Propagation) UserLockStatus(com.hack23.cia.model.internal.application.user.impl.UserLockStatus) Service(org.springframework.stereotype.Service) Map(java.util.Map) UserAccount(com.hack23.cia.model.internal.application.user.impl.UserAccount) PostConstruct(javax.annotation.PostConstruct) UserAccount_(com.hack23.cia.model.internal.application.user.impl.UserAccount_) CreateApplicationEventRequest(com.hack23.cia.service.api.action.application.CreateApplicationEventRequest) ConstraintViolation(javax.validation.ConstraintViolation) UserDAO(com.hack23.cia.service.data.api.UserDAO) Transactional(org.springframework.transaction.annotation.Transactional) ConstraintViolation(javax.validation.ConstraintViolation) ManageUserAccountResponse(com.hack23.cia.service.api.action.admin.ManageUserAccountResponse) CreateApplicationEventRequest(com.hack23.cia.service.api.action.application.CreateApplicationEventRequest) UserAccount(com.hack23.cia.model.internal.application.user.impl.UserAccount) Secured(org.springframework.security.access.annotation.Secured)

Example 7 with ManageUserAccountRequest

use of com.hack23.cia.service.api.action.admin.ManageUserAccountRequest in project cia by Hack23.

the class ManageUserAccountService method performOperation.

/**
 * Perform operation.
 *
 * @param serviceRequest
 *            the service request
 * @param eventRequest
 *            the event request
 * @return the manage user account response
 */
private ManageUserAccountResponse performOperation(final ManageUserAccountRequest serviceRequest, final CreateApplicationEventRequest eventRequest) {
    ManageUserAccountResponse response;
    eventRequest.setElementId(serviceRequest.getUserAcountId());
    eventRequest.setApplicationMessage(serviceRequest.getAccountOperation().toString());
    final UserAccount accountToModify = userDAO.findFirstByProperty(UserAccount_.userId, serviceRequest.getUserAcountId());
    final UserCommand userCommand = userCommandMap.get(serviceRequest.getAccountOperation());
    if (accountToModify != null && userCommand != null) {
        response = userCommand.execute(accountToModify);
    } else {
        response = new ManageUserAccountResponse(ServiceResult.FAILURE);
    }
    eventRequest.setApplicationMessage(response.getResult().toString());
    return response;
}
Also used : ManageUserAccountResponse(com.hack23.cia.service.api.action.admin.ManageUserAccountResponse) UserAccount(com.hack23.cia.model.internal.application.user.impl.UserAccount)

Example 8 with ManageUserAccountRequest

use of com.hack23.cia.service.api.action.admin.ManageUserAccountRequest in project cia by Hack23.

the class ManageUserAccountServiceITest method manageUserAccountSuccessLockTest.

@Test
public void manageUserAccountSuccessLockTest() throws Exception {
    setAuthenticatedAnonymousUser();
    final CreateApplicationSessionRequest createSessionRequest = createTestApplicationSession();
    final RegisterUserRequest createAccountRequest = new RegisterUserRequest();
    createAccountRequest.setCountry("Sweden");
    createAccountRequest.setUsername(UUID.randomUUID().toString());
    createAccountRequest.setEmail(createAccountRequest.getUsername() + "@email.com");
    createAccountRequest.setUserpassword("Userpassword1!");
    createAccountRequest.setUserType(UserType.PRIVATE);
    createAccountRequest.setSessionId(createSessionRequest.getSessionId());
    final RegisterUserResponse response = (RegisterUserResponse) applicationManager.service(createAccountRequest);
    assertNotNull("Expect a result", response);
    assertEquals(EXPECT_SUCCESS, ServiceResult.SUCCESS, response.getResult());
    setAuthenticatedAdminuser();
    final DataContainer<UserAccount, Long> userContainer = applicationManager.getDataContainer(UserAccount.class);
    final List<UserAccount> firstCreatedUsed = userContainer.getAllBy(UserAccount_.username, createAccountRequest.getUsername());
    assertEquals(1, firstCreatedUsed.size());
    final ManageUserAccountRequest deleteAccountRequest = new ManageUserAccountRequest();
    deleteAccountRequest.setSessionId(createSessionRequest.getSessionId());
    deleteAccountRequest.setAccountOperation(AccountOperation.LOCK);
    deleteAccountRequest.setUserAcountId(firstCreatedUsed.get(0).getUserId());
    final ManageUserAccountResponse deleteAccountResponse = (ManageUserAccountResponse) applicationManager.service(deleteAccountRequest);
    assertNotNull(EXPECT_A_RESULT, deleteAccountResponse);
    assertEquals(EXPECT_SUCCESS, ServiceResult.SUCCESS, deleteAccountResponse.getResult());
    final List<UserAccount> allByAfterDelete = userContainer.getAllBy(UserAccount_.username, createAccountRequest.getUsername());
    assertEquals(1, allByAfterDelete.size());
    assertEquals(allByAfterDelete.get(0).getUserLockStatus(), UserLockStatus.LOCKED);
}
Also used : CreateApplicationSessionRequest(com.hack23.cia.service.api.action.application.CreateApplicationSessionRequest) RegisterUserRequest(com.hack23.cia.service.api.action.application.RegisterUserRequest) ManageUserAccountRequest(com.hack23.cia.service.api.action.admin.ManageUserAccountRequest) RegisterUserResponse(com.hack23.cia.service.api.action.application.RegisterUserResponse) ManageUserAccountResponse(com.hack23.cia.service.api.action.admin.ManageUserAccountResponse) UserAccount(com.hack23.cia.model.internal.application.user.impl.UserAccount) Test(org.junit.Test) AbstractServiceFunctionalIntegrationTest(com.hack23.cia.service.impl.AbstractServiceFunctionalIntegrationTest)

Example 9 with ManageUserAccountRequest

use of com.hack23.cia.service.api.action.admin.ManageUserAccountRequest in project cia by Hack23.

the class ManageUserAccountServiceITest method manageUserAccountSuccessDeleteTest.

@Test
public void manageUserAccountSuccessDeleteTest() throws Exception {
    setAuthenticatedAnonymousUser();
    final CreateApplicationSessionRequest createSessionRequest = createTestApplicationSession();
    final RegisterUserRequest createAccountRequest = new RegisterUserRequest();
    createAccountRequest.setCountry("Sweden");
    createAccountRequest.setUsername(UUID.randomUUID().toString());
    createAccountRequest.setEmail(createAccountRequest.getUsername() + "@email.com");
    createAccountRequest.setUserpassword("Userpassword1!");
    createAccountRequest.setUserType(UserType.PRIVATE);
    createAccountRequest.setSessionId(createSessionRequest.getSessionId());
    final RegisterUserResponse response = (RegisterUserResponse) applicationManager.service(createAccountRequest);
    assertNotNull("Expect a result", response);
    assertEquals(EXPECT_SUCCESS, ServiceResult.SUCCESS, response.getResult());
    setAuthenticatedAdminuser();
    final DataContainer<UserAccount, Long> userContainer = applicationManager.getDataContainer(UserAccount.class);
    final List<UserAccount> firstCreatedUsed = userContainer.getAllBy(UserAccount_.username, createAccountRequest.getUsername());
    assertEquals(1, firstCreatedUsed.size());
    final ManageUserAccountRequest deleteAccountRequest = new ManageUserAccountRequest();
    deleteAccountRequest.setSessionId(createSessionRequest.getSessionId());
    deleteAccountRequest.setAccountOperation(AccountOperation.DELETE);
    deleteAccountRequest.setUserAcountId(firstCreatedUsed.get(0).getUserId());
    final ManageUserAccountResponse deleteAccountResponse = (ManageUserAccountResponse) applicationManager.service(deleteAccountRequest);
    assertNotNull(EXPECT_A_RESULT, deleteAccountResponse);
    assertEquals(EXPECT_SUCCESS, ServiceResult.SUCCESS, deleteAccountResponse.getResult());
    final List<UserAccount> allByAfterDelete = userContainer.getAllBy(UserAccount_.username, createAccountRequest.getUsername());
    assertEquals(0, allByAfterDelete.size());
    final DataContainer<ApplicationActionEvent, Long> eventContainer = applicationManager.getDataContainer(ApplicationActionEvent.class);
    final List<ApplicationActionEvent> events = eventContainer.getAllBy(ApplicationActionEvent_.userId, firstCreatedUsed.get(0).getUserId());
    assertEquals(0, events.size());
    final DataContainer<ApplicationSession, Serializable> sessionContainer = applicationManager.getDataContainer(ApplicationSession.class);
    final List<ApplicationSession> sessions = sessionContainer.getAllBy(ApplicationSession_.userId, firstCreatedUsed.get(0).getUserId());
    assertEquals(0, sessions.size());
}
Also used : ApplicationSession(com.hack23.cia.model.internal.application.system.impl.ApplicationSession) Serializable(java.io.Serializable) RegisterUserRequest(com.hack23.cia.service.api.action.application.RegisterUserRequest) ApplicationActionEvent(com.hack23.cia.model.internal.application.system.impl.ApplicationActionEvent) CreateApplicationSessionRequest(com.hack23.cia.service.api.action.application.CreateApplicationSessionRequest) ManageUserAccountRequest(com.hack23.cia.service.api.action.admin.ManageUserAccountRequest) RegisterUserResponse(com.hack23.cia.service.api.action.application.RegisterUserResponse) ManageUserAccountResponse(com.hack23.cia.service.api.action.admin.ManageUserAccountResponse) UserAccount(com.hack23.cia.model.internal.application.user.impl.UserAccount) Test(org.junit.Test) AbstractServiceFunctionalIntegrationTest(com.hack23.cia.service.impl.AbstractServiceFunctionalIntegrationTest)

Aggregations

ManageUserAccountRequest (com.hack23.cia.service.api.action.admin.ManageUserAccountRequest)7 UserAccount (com.hack23.cia.model.internal.application.user.impl.UserAccount)6 ManageUserAccountResponse (com.hack23.cia.service.api.action.admin.ManageUserAccountResponse)6 CreateApplicationSessionRequest (com.hack23.cia.service.api.action.application.CreateApplicationSessionRequest)4 AbstractServiceFunctionalIntegrationTest (com.hack23.cia.service.impl.AbstractServiceFunctionalIntegrationTest)4 Test (org.junit.Test)4 RegisterUserRequest (com.hack23.cia.service.api.action.application.RegisterUserRequest)3 RegisterUserResponse (com.hack23.cia.service.api.action.application.RegisterUserResponse)3 CreateApplicationEventRequest (com.hack23.cia.service.api.action.application.CreateApplicationEventRequest)2 Secured (org.springframework.security.access.annotation.Secured)2 ApplicationActionEvent (com.hack23.cia.model.internal.application.system.impl.ApplicationActionEvent)1 ApplicationEventGroup (com.hack23.cia.model.internal.application.system.impl.ApplicationEventGroup)1 ApplicationOperationType (com.hack23.cia.model.internal.application.system.impl.ApplicationOperationType)1 ApplicationSession (com.hack23.cia.model.internal.application.system.impl.ApplicationSession)1 UserAccount_ (com.hack23.cia.model.internal.application.user.impl.UserAccount_)1 UserLockStatus (com.hack23.cia.model.internal.application.user.impl.UserLockStatus)1 AccountOperation (com.hack23.cia.service.api.action.admin.ManageUserAccountRequest.AccountOperation)1 ServiceResponse (com.hack23.cia.service.api.action.common.ServiceResponse)1 ServiceResult (com.hack23.cia.service.api.action.common.ServiceResponse.ServiceResult)1 RemoveDataManager (com.hack23.cia.service.data.api.RemoveDataManager)1