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;
}
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;
}
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;
}
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;
}
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;
}
Aggregations