Open Kilda Java Documentation
PermissionService.java
Go to the documentation of this file.
1 package org.usermanagement.service;
2 
3 import java.util.List;
4 import java.util.Set;
5 import java.util.stream.Collectors;
6 
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.stereotype.Service;
13 import org.springframework.transaction.annotation.Propagation;
14 import org.springframework.transaction.annotation.Transactional;
25 
26 @Service
27 @Transactional(propagation = Propagation.REQUIRED, readOnly = true)
28 public class PermissionService {
29 
30  private static final Logger LOGGER = LoggerFactory.getLogger(PermissionService.class);
31 
32  @Autowired
33  private PermissionRepository permissionRepository;
34 
35  @Autowired
36  private RoleRepository roleRepository;
37 
38  @Autowired
39  private PermissionValidator permissionValidator;
40 
41  @Autowired
42  private MessageUtils messageUtil;
43 
44  @Autowired
45  private ActivityLogger activityLogger;
46 
47  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
48  public Permission createPermission(final Permission permission) {
49  permissionValidator.validatePermission(permission);
50 
51  PermissionEntity permissionEntity = PermissionConversionUtil.toPermissionEntity(permission);
52  permissionRepository.save(permissionEntity);
53 
54  activityLogger.log(ActivityType.CREATE_PERMISSION, permission.getName());
55  LOGGER.info("Permission with name '" + permission.getName() + "' created successfully.");
56  return PermissionConversionUtil.toPermission(permissionEntity, null);
57  }
58 
59  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
60  public List<Permission> getAllPermission(final long loggedInUserId) {
61  List<PermissionEntity> permissionEntities = permissionRepository.findAll();
62 
63  permissionEntities =
64  permissionEntities.stream().filter(permission ->
65  loggedInUserId == 1 || !permission.getIsAdminPermission()).collect(Collectors.toList());
66  List<Permission> permissions = PermissionConversionUtil.toAllPermissionResponse(permissionEntities);
67  return permissions;
68  }
69 
70  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
71  public Permission getPermissionById(final Long permissionId) {
72  PermissionEntity permissionEntity = permissionRepository.findByPermissionId(permissionId);
73 
74  if (ValidatorUtil.isNull(permissionEntity)) {
75  LOGGER.error("Permission with permissionId '" + permissionId + "' not found. Error: "
76  + messageUtil.getAttributeInvalid("permission_id", permissionId + ""));
77  throw new RequestValidationException(messageUtil.getAttributeInvalid("permission_id", permissionId + ""));
78  }
79  Set<RoleEntity> roleEntityList = roleRepository.findByPermissions_permissionId(permissionId);
80  return PermissionConversionUtil.toPermission(permissionEntity, roleEntityList);
81  }
82 
83  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
84  public void deletePermissionById(final Long permissionId) {
85 
86  PermissionEntity permissionEntity = permissionRepository.findByPermissionId(permissionId);
87  if (ValidatorUtil.isNull(permissionEntity)) {
88  throw new RequestValidationException(messageUtil.getAttributeInvalid("permission_id", permissionId + ""));
89  }
90  Set<RoleEntity> roleEntityList = roleRepository.findByPermissions_permissionId(permissionId);
91  if (roleEntityList.size() > 0) {
92  String roles = "";
93  for (RoleEntity roleEntity : roleEntityList) {
94  roles += !"".equals(roles) ? "," + roleEntity.getName() : roleEntity.getName();
95  }
96  LOGGER.error("Permission with permissionId '" + permissionId + "' not allowed to delete. Error: "
97  + messageUtil.getAttributeDeletionNotAllowed(permissionEntity.getName(), roles));
99  messageUtil.getAttributeDeletionNotAllowed(permissionEntity.getName(), roles));
100  }
101  permissionRepository.delete(permissionEntity);
102  LOGGER.info("Permission(permissionId: " + permissionId + ") deleted successfully.");
103  activityLogger.log(ActivityType.DELETE_PERMISSION, permissionEntity.getName());
104  }
105 
106  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
107  public Permission updatePermission(final Long permissionId, final Permission permission) {
108 
109  permissionValidator.validateUpdatePermission(permission, permissionId);
110 
111  PermissionEntity permissionEntity = permissionRepository.findByPermissionId(permissionId);
112  if (ValidatorUtil.isNull(permissionEntity)) {
113  LOGGER.error("Permission with permissionId '" + permissionId + "' not found. Error: "
114  + messageUtil.getAttributeInvalid("permission_id", permissionId + ""));
115  throw new RequestValidationException(messageUtil.getAttributeInvalid("permission_id", permissionId + ""));
116  }
117 
118  permissionEntity = PermissionConversionUtil.toUpatePermissionEntity(permission, permissionEntity);
119  permissionRepository.save(permissionEntity);
120  activityLogger.log(ActivityType.UPDATE_PERMISSION, permissionEntity.getName());
121  LOGGER.info("Permission(permissionId: " + permissionId + ") updated successfully.");
122  return PermissionConversionUtil.toPermission(permissionEntity, null);
123 
124  }
125 }
static PermissionEntity toUpatePermissionEntity(final Permission permission, final PermissionEntity permissionEntity)
static Permission toPermission(final PermissionEntity permissionEntity, final Set< RoleEntity > roleEntities)
static boolean isNull(final Object obj)
static PermissionEntity toPermissionEntity(final Permission permission)
static List< Permission > toAllPermissionResponse(final List< PermissionEntity > permissionList)