Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add findFor(user/group) methods #255

Merged
merged 1 commit into from
Jan 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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