Search in sources :

Example 21 with Group

use of org.craftercms.studio.api.v2.dal.Group in project studio by craftercms.

the class PublishServiceImpl method getDeploymentHistory.

@Override
public List<DeploymentHistoryGroup> getDeploymentHistory(String siteId, int daysFromToday, int numberOfItems, String filterType) {
    ZonedDateTime toDate = ZonedDateTime.now(ZoneOffset.UTC);
    ZonedDateTime fromDate = toDate.minusDays(daysFromToday);
    List<String> environments = studioUtils.getEnvironmentNames(siteId);
    List<DeploymentHistoryItem> deploymentHistoryItems = publishServiceInternal.getDeploymentHistory(siteId, environments, fromDate, toDate, filterType, numberOfItems);
    List<DeploymentHistoryGroup> groups = new ArrayList<DeploymentHistoryGroup>();
    if (deploymentHistoryItems != null) {
        int count = 0;
        String timezone = servicesConfig.getDefaultTimezone(siteId);
        Map<String, Set<String>> processedItems = new HashMap<String, Set<String>>();
        for (int index = 0; index < deploymentHistoryItems.size() && count < numberOfItems; index++) {
            DeploymentHistoryItem entry = deploymentHistoryItems.get(index);
            String env = entry.getEnvironment();
            if (!processedItems.containsKey(env)) {
                processedItems.put(env, new HashSet<String>());
            }
            if (!processedItems.get(env).contains(entry.getPath())) {
                ContentItemTO deployedItem = studioUtils.getContentItemForDashboard(entry.getSite(), entry.getPath());
                if (deployedItem != null) {
                    deployedItem.eventDate = entry.getDeploymentDate();
                    deployedItem.endpoint = entry.getTarget();
                    deployedItem.setUser(entry.getUser());
                    deployedItem.setEndpoint(entry.getEnvironment());
                    String deployedLabel = entry.getDeploymentDate().withZoneSameInstant(ZoneId.of(timezone)).format(ISO_OFFSET_DATE);
                    if (groups.size() > 0) {
                        DeploymentHistoryGroup group = groups.get(groups.size() - 1);
                        String lastDeployedLabel = group.getInternalName();
                        if (lastDeployedLabel.equals(deployedLabel)) {
                            // add to the last task if it is deployed on the same day
                            group.setNumOfChildren(group.getNumOfChildren() + 1);
                            group.getChildren().add(deployedItem);
                        } else {
                            groups.add(createDeploymentHistoryGroup(deployedLabel, deployedItem));
                        }
                    } else {
                        groups.add(createDeploymentHistoryGroup(deployedLabel, deployedItem));
                    }
                    processedItems.get(env).add(entry.getPath());
                }
            }
        }
    }
    return groups;
}
Also used : DeploymentHistoryItem(org.craftercms.studio.api.v2.dal.DeploymentHistoryItem) HashSet(java.util.HashSet) Set(java.util.Set) DeploymentHistoryGroup(org.craftercms.studio.api.v2.dal.DeploymentHistoryGroup) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ContentItemTO(org.craftercms.studio.api.v1.to.ContentItemTO) ZonedDateTime(java.time.ZonedDateTime)

Example 22 with Group

use of org.craftercms.studio.api.v2.dal.Group in project studio by craftercms.

the class GroupsController method addGroupMembers.

/**
 * Add group members API
 *
 * @param groupId Group identifiers
 * @param addGroupMembers Add members request body (json representation)
 * @return Response object
 */
@PostMapping(value = "/api/2/groups/{id}/members", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseBody addGroupMembers(@PathVariable(REQUEST_PARAM_ID) int groupId, @RequestBody AddGroupMembers addGroupMembers) throws ServiceLayerException, UserNotFoundException, GroupNotFoundException, AuthenticationException {
    ValidationUtils.validateAddGroupMembers(addGroupMembers);
    List<User> addedUsers = groupService.addGroupMembers(groupId, addGroupMembers.getIds(), addGroupMembers.getUsernames());
    ResponseBody responseBody = new ResponseBody();
    ResultList<User> result = new ResultList<>();
    result.setResponse(OK);
    result.setEntities(RESULT_KEY_USERS, addedUsers);
    responseBody.setResult(result);
    return responseBody;
}
Also used : User(org.craftercms.studio.api.v2.dal.User) PaginatedResultList(org.craftercms.studio.model.rest.PaginatedResultList) ResultList(org.craftercms.studio.model.rest.ResultList) ResponseBody(org.craftercms.studio.model.rest.ResponseBody) PostMapping(org.springframework.web.bind.annotation.PostMapping)

Example 23 with Group

use of org.craftercms.studio.api.v2.dal.Group in project studio by craftercms.

the class GroupsController method getGroupMembers.

/**
 * Get group members API
 *
 * @param groupId Group identifier
 * @param offset Result set offset
 * @param limit Result set limit
 * @param sort Sort order
 * @return Response containing list od users
 */
@GetMapping("/api/2/groups/{id}/members")
public ResponseBody getGroupMembers(@PathVariable(REQUEST_PARAM_ID) int groupId, @RequestParam(value = REQUEST_PARAM_OFFSET, required = false, defaultValue = "0") int offset, @RequestParam(value = REQUEST_PARAM_LIMIT, required = false, defaultValue = "10") int limit, @RequestParam(value = REQUEST_PARAM_SORT, required = false, defaultValue = StringUtils.EMPTY) String sort) throws ServiceLayerException, GroupNotFoundException {
    int total = groupService.getGroupMembersTotal(groupId);
    List<User> users = groupService.getGroupMembers(groupId, offset, limit, sort);
    ResponseBody responseBody = new ResponseBody();
    PaginatedResultList<User> result = new PaginatedResultList<>();
    result.setResponse(OK);
    result.setTotal(total);
    result.setOffset(offset);
    result.setLimit(limit);
    result.setEntities(RESULT_KEY_USERS, users);
    responseBody.setResult(result);
    return responseBody;
}
Also used : User(org.craftercms.studio.api.v2.dal.User) PaginatedResultList(org.craftercms.studio.model.rest.PaginatedResultList) ResponseBody(org.craftercms.studio.model.rest.ResponseBody) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 24 with Group

use of org.craftercms.studio.api.v2.dal.Group in project studio by craftercms.

the class GroupsController method createGroup.

/**
 * Create group API
 *
 * @param group Group to create
 * @return Response object
 */
@ResponseStatus(HttpStatus.CREATED)
@PostMapping(value = "/api/2/groups", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseBody createGroup(@RequestBody Group group) throws GroupAlreadyExistsException, ServiceLayerException, AuthenticationException {
    Group newGroup = groupService.createGroup(DEFAULT_ORGANIZATION_ID, group.getGroupName(), group.getGroupDescription());
    ResponseBody responseBody = new ResponseBody();
    ResultOne<Group> result = new ResultOne<>();
    result.setResponse(CREATED);
    result.setEntity(RESULT_KEY_GROUP, newGroup);
    responseBody.setResult(result);
    return responseBody;
}
Also used : Group(org.craftercms.studio.api.v2.dal.Group) ResultOne(org.craftercms.studio.model.rest.ResultOne) ResponseBody(org.craftercms.studio.model.rest.ResponseBody) PostMapping(org.springframework.web.bind.annotation.PostMapping) ResponseStatus(org.springframework.web.bind.annotation.ResponseStatus)

Example 25 with Group

use of org.craftercms.studio.api.v2.dal.Group in project studio by craftercms.

the class SecurityServiceImpl method isAdmin.

private boolean isAdmin(String username) throws ServiceLayerException, UserNotFoundException {
    List<Group> userGroups = userServiceInternal.getUserGroups(-1, username);
    boolean toRet = false;
    if (CollectionUtils.isNotEmpty(userGroups)) {
        for (Group group : userGroups) {
            if (StringUtils.equalsIgnoreCase(group.getGroupName(), SYSTEM_ADMIN_GROUP)) {
                toRet = true;
                break;
            }
        }
    }
    return toRet;
}
Also used : Group(org.craftercms.studio.api.v2.dal.Group)

Aggregations

Group (org.craftercms.studio.api.v2.dal.Group)26 ServiceLayerException (org.craftercms.studio.api.v1.exception.ServiceLayerException)23 UserNotFoundException (org.craftercms.studio.api.v1.exception.security.UserNotFoundException)20 HashMap (java.util.HashMap)17 GroupNotFoundException (org.craftercms.studio.api.v1.exception.security.GroupNotFoundException)13 ArrayList (java.util.ArrayList)12 SiteFeed (org.craftercms.studio.api.v1.dal.SiteFeed)12 User (org.craftercms.studio.api.v2.dal.User)12 AuditLog (org.craftercms.studio.api.v2.dal.AuditLog)11 GroupAlreadyExistsException (org.craftercms.studio.api.v1.exception.security.GroupAlreadyExistsException)10 ConfigurationException (org.craftercms.studio.api.v2.exception.configuration.ConfigurationException)10 HasPermission (org.craftercms.commons.security.permissions.annotations.HasPermission)8 ResponseBody (org.craftercms.studio.model.rest.ResponseBody)6 List (java.util.List)5 AuditLogParameter (org.craftercms.studio.api.v2.dal.AuditLogParameter)5 UserAlreadyExistsException (org.craftercms.studio.api.v1.exception.security.UserAlreadyExistsException)4 SiteService (org.craftercms.studio.api.v1.service.site.SiteService)4 AuditServiceInternal (org.craftercms.studio.api.v2.service.audit.internal.AuditServiceInternal)4 StudioConfiguration (org.craftercms.studio.api.v2.utils.StudioConfiguration)4 ZonedDateTime (java.time.ZonedDateTime)3