Skip to content

Commit

Permalink
Merge pull request #255 from terrestris/add-permission-service-method…
Browse files Browse the repository at this point in the history
…s-main

Add findFor(user/group) methods
  • Loading branch information
dnlkoch committed Jan 29, 2021
2 parents 8b5437e + 69a4f52 commit a4522d1
Show file tree
Hide file tree
Showing 8 changed files with 81 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package de.terrestris.shogun.lib.repository.security.permission;

import de.terrestris.shogun.lib.model.Group;
import de.terrestris.shogun.lib.model.security.permission.GroupClassPermission;
import de.terrestris.shogun.lib.repository.BaseCrudRepository;
import java.util.List;
import java.util.Optional;
import javax.persistence.QueryHint;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
Expand All @@ -16,4 +18,6 @@ public interface GroupClassPermissionRepository extends BaseCrudRepository<Group
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
Optional<GroupClassPermission> findByGroupIdAndClassName(Long groupId, String className);

@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
List<GroupClassPermission> findAllByGroup(Group group);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package de.terrestris.shogun.lib.repository.security.permission;

import de.terrestris.shogun.lib.model.Group;
import de.terrestris.shogun.lib.model.security.permission.GroupInstancePermission;
import de.terrestris.shogun.lib.repository.BaseCrudRepository;
import java.util.List;
Expand All @@ -20,4 +21,7 @@ public interface GroupInstancePermissionRepository extends BaseCrudRepository<Gr
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
List<GroupInstancePermission> findByEntityId(Long entityId);

@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
List<GroupInstancePermission> findAllByGroup(Group group);

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package de.terrestris.shogun.lib.repository.security.permission;

import de.terrestris.shogun.lib.model.User;
import de.terrestris.shogun.lib.model.security.permission.UserClassPermission;
import de.terrestris.shogun.lib.repository.BaseCrudRepository;
import java.util.List;
import java.util.Optional;
import javax.persistence.QueryHint;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
Expand All @@ -18,8 +20,10 @@ public interface UserClassPermissionRepository extends BaseCrudRepository<UserCl
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
Optional<UserClassPermission> findByUserIdAndClassName(Long userId, String className);

@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
List<UserClassPermission> findAllByUser(User user);

@Modifying
@Query(value = "DELETE FROM userclasspermissions u WHERE u.user_id=:userId", nativeQuery = true)
void deleteAllByUserId(@Param("userId") Long userId);

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package de.terrestris.shogun.lib.repository.security.permission;

import de.terrestris.shogun.lib.enumeration.PermissionCollectionType;
import de.terrestris.shogun.lib.model.BaseEntity;
import de.terrestris.shogun.lib.model.User;
import de.terrestris.shogun.lib.model.security.permission.UserInstancePermission;
import de.terrestris.shogun.lib.repository.BaseCrudRepository;
import java.util.List;
Expand Down Expand Up @@ -31,6 +31,9 @@ List<UserInstancePermission> findByEntityAndPermissionCollectionType(
@Param("permissionCollectionType") PermissionCollectionType permissionCollectionType
);

@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
List<UserInstancePermission> findAllByUser(User user);

@Modifying
@Query(value = "DELETE FROM userinstancepermissions u WHERE u.user_id=:userId", nativeQuery = true)
void deleteAllByUserId(@Param("userId") Long userId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,21 @@ public class GroupClassPermissionService extends BaseService<GroupClassPermissio
protected PermissionCollectionRepository permissionCollectionRepository;

/**
* Returns the {@link GroupClassPermission} for the given query arguments. Hereby
* the class of the given entity will be considered.
* Returns all {@link GroupClassPermission} for the given query arguments.
*
* @param group The group to find the permissions for.
* @return The permissions.
*/
public List<GroupClassPermission> findFor(Group group) {

LOG.trace("Getting all group class permissions for group with Keycloak ID {}",
group.getKeycloakId());

return repository.findAllByGroup(group);
}

/**
* Find group class permission for class of entity and given group
*
* @param entity The entity to find the permission for.
* @param group The group to find the permission for.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,24 @@ public class GroupInstancePermissionService extends BaseService<GroupInstancePer
protected PermissionCollectionRepository permissionCollectionRepository;

/**
* Returns the {@link GroupInstancePermission} for the given query arguments.
* Returns all {@link GroupInstancePermission} for the given query arguments.
*
* @param entity The entity to find the permission for.
* @param group The group to find the permission for.
* @return The (optional) permission.
* @param group The group to find the permissions for.
* @return The permissions.
*/
public List<GroupInstancePermission> findFor(Group group) {

LOG.trace("Getting all group instance permissions for group with Keycloak ID {}",
group.getKeycloakId());

return repository.findAllByGroup(group);
}

/**
* Get permission for SHOGun group
* @param entity entity to get group permissions for
* @param group The SHOGun group
* @return
*/
public Optional<GroupInstancePermission> findFor(BaseEntity entity, Group group) {
if (entity == null || group == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import de.terrestris.shogun.lib.repository.security.permission.UserClassPermissionRepository;
import de.terrestris.shogun.lib.security.SecurityContextUtil;
import de.terrestris.shogun.lib.service.BaseService;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
Expand All @@ -23,11 +24,24 @@ public class UserClassPermissionService extends BaseService<UserClassPermissionR
protected PermissionCollectionRepository permissionCollectionRepository;

/**
* Returns the {@link UserClassPermission} for the given query arguments.
* Returns all {@link UserClassPermission} for the given query arguments.
*
* @param clazz The class to find the permission for.
* @param user The user to find the permission for.
* @return The (optional) permission.
* @param user The user to find the permissions for.
* @return The permissions.
*/
public List<UserClassPermission> findFor(User user) {

LOG.trace("Getting all user class permissions for user with Keycloak ID {}",
user.getKeycloakId());

return repository.findAllByUser(user);
}

/**
* Return {@link Optional} containing {@link UserClassPermission}
* @param clazz The class that should be checked
* @param user The user to check for
* @return {@link Optional} containing {@link UserClassPermission}
*/
public Optional<UserClassPermission> findFor(Class<? extends BaseEntity> clazz, User user) {
String className = clazz.getCanonicalName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,20 @@ public class UserInstancePermissionService extends BaseService<UserInstancePermi
protected PermissionCollectionRepository permissionCollectionRepository;

/**
* Returns the {@link UserInstancePermission} for the given query arguments.
* Returns all {@link UserInstancePermission} for the given query arguments.
*
* @param user The user to find the permission for.
* @return The permissions
*/
public List<UserInstancePermission> findFor(User user) {

LOG.trace("Getting all user instance permissions for user {}", user);

return repository.findAllByUser(user);
}

/**
* Get {@link UserInstancePermission} for SHOGun user
*
* @param entity The entity to find the permission for.
* @param user The user to find the permission for.
Expand Down

0 comments on commit a4522d1

Please sign in to comment.