@Test public void testRestrictionsOnComponentTypes() { doInHibernate( this::sessionFactory, session -> { session.enableFilter( "statusFilter" ).setParameter( "status", "active" ); final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "id", STUDENT_ID ) ); query.add( Restrictions.eq( "address", new Address( "London", "Lollard St" ) ) ); query.add( Restrictions.eq( "name", "dre" ) ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); }); }
@Test public void testForIssue() { doInHibernate( this::sessionFactory, session -> { final org.hibernate.Filter enableFilter = session.enableFilter( "aliveOnly" ); enableFilter.setParameter( "aliveTimestamp", Timestamp.valueOf( "9999-12-31 00:00:00" ) ); enableFilter.setParameter( "deleted", true ); enableFilter.validate(); final Query query = session.createQuery( "select a.id from ArticleRevision as a " + "left join a.articleTradings as t " + "with ( (t.partyId = :p_0) and (t.classifier = :p_1) )" ); query.setParameter( "p_0", 1L ); query.setParameter( "p_1", "no_classification" ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); } ); }
/** * Constructs a number of FilterKey instances, given the currently enabled filters * * @param enabledFilters The currently enabled filters * * @return The filter keys, one per enabled filter */ public static Set<FilterKey> createFilterKeys(Map<String,Filter> enabledFilters) { if ( enabledFilters.size() == 0 ) { return null; } final Set<FilterKey> result = new HashSet<FilterKey>(); for ( Filter filter : enabledFilters.values() ) { final FilterKey key = new FilterKey( filter.getName(), ( (FilterImpl) filter ).getParameters(), filter.getFilterDefinition().getParameterTypes() ); result.add( key ); } return result; } }
private void enableFilter(Filter f) { org.hibernate.Filter filter = session.enableFilter( f.getName() ); for ( Map.Entry<String, ValueExpression> me: f.getParameters().entrySet() ) { Object filterValue = me.getValue().getValue(); if ( filterValue instanceof Collection ) { filter.setParameterList(me.getKey(), (Collection) filterValue); } else { filter.setParameter(me.getKey(), filterValue); } } filter.validate(); }
/*** * Since we assume that the group is "-1" for this method, we have to pass * in lists of all groups as we did before group permissions (~4.2). */ public void enable(Session sess, EventContext ec) { final Filter filter = sess.enableFilter(getName()); final int share01 = isShare(ec) ? 1 : 0; final int admin01 = ec.isCurrentUserAdmin() ? 1 : 0; filter.setParameter(is_admin, admin01); filter.setParameter(SecurityFilter.is_share, share01); // ticket:2219, not checking -1 here. filter.setParameter(SecurityFilter.current_user, ec.getCurrentUserId()); filter.setParameterList(member_of_groups, configGroup(ec, ec.getMemberOfGroupsList())); filter.setParameterList(leader_of_groups, configGroup(ec, ec.getLeaderOfGroupsList())); enableBaseFilters(sess, admin01, ec.getCurrentUserId()); }
public Map<String,Filter> getEnabledFilters() { // First, validate all the enabled filters... //TODO: this implementation has bad performance for ( Filter filter : enabledFilters.values() ) { filter.validate(); } return enabledFilters; }
@Override public Object doInHibernate(Session session) throws HibernateException, SQLException { session.enableFilter(AUTH_FILTER_NAME).setParameterList("userGroups", m_authorizationGroups); return null; }
.getFilterDefinition() .getDefaultFilterCondition());
@Override public void enableFilter(Filter f, EntityManager entityManager) { try { org.hibernate.Filter filter = getSession(entityManager).enableFilter( f.getName() ); for ( Map.Entry<String, ValueExpression> me: f.getParameters().entrySet() ) { Object filterValue = me.getValue().getValue(); if ( filterValue instanceof Collection ) { filter.setParameterList(me.getKey(), (Collection) filterValue); } else { filter.setParameter(me.getKey(), filterValue); } } filter.validate(); } catch (NotHibernateException nhe) { super.enableFilter(f, entityManager); } }
@Override public void enable(Session session, EventContext ec) { List<Long> imageIds = null; final Long shareId = ec.getCurrentShareId(); if (shareId != null) { final ShareData shareData = shares.get(shareId); if (shareData != null && shareData.enabled) { imageIds = shareData.objectMap.get(Image.class.getName()); } } if (CollectionUtils.isEmpty(imageIds)) { imageIds = ImmutableList.of(-1L); } final int isAdmin01 = ec.isCurrentUserAdmin() ? 1 : 0; final int isShare01 = isShare(ec) ? 1 : 0; final Filter filter = session.enableFilter(getName()); filter.setParameter("is_admin", isAdmin01); filter.setParameter("is_share", isShare01); filter.setParameterList("images", imageIds); enableBaseFilters(session, isAdmin01, ec.getCurrentUserId()); } }
public Map<String,Filter> getEnabledFilters() { // First, validate all the enabled filters... //TODO: this implementation has bad performance for ( Filter filter : enabledFilters.values() ) { filter.validate(); } return enabledFilters; }
private Object process(ProceedingJoinPoint pjp) throws Throwable { if (AdministratorUtil.isSuper()) { return pjp.proceed(); } HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); String requestURI = request.getRequestURI(); for (String item : excludeURI) { if(matcher.match(item, requestURI)) { return pjp.proceed(); } } Set<Long> managedUids = (Set<Long>) request.getSession().getAttribute("managedUids"); Session session = entityManager.unwrap(Session.class); Filter filter = session.enableFilter(filterName); filter.setParameterList("creator", managedUids); Object obj = pjp.proceed(); session.disableFilter(filterName); return obj; }
@Test public void testIqFilter(){ openSession(); session.beginTransaction(); assertCount(3); session.enableFilter("iqRange").setParameter("min", 101).setParameter("max", 140); assertCount(1); session.getTransaction().commit(); session.close(); }
@Before("execution(* com.ramsrib.springbootmultitenant2.service.UserService.*(..)) && !execution(* com.ramsrib.springbootmultitenant2.service.UserService.run(..)) && target(userService)") public void aroundExecution(JoinPoint pjp, UserService userService) throws Throwable { org.hibernate.Filter filter = userService.entityManager.unwrap(Session.class).enableFilter("tenantFilter"); filter.setParameter("tenantId", TenantContext.getCurrentTenant()); filter.validate(); } }
@Override public void enable(Session session, EventContext ec) { final List<String> privilegeValues = new ArrayList<String>(); for (final AdminPrivilege adminPrivilege : ec.getCurrentAdminPrivileges()) { privilegeValues.add(adminPrivilege.getValue()); } Long realOwner = ec.getCurrentSudoerId(); if (realOwner == null) { realOwner = ec.getCurrentUserId(); } final int isAdmin01 = ec.isCurrentUserAdmin() ? 1 : 0; final Filter filter = session.enableFilter(getName()); filter.setParameter("real_owner", realOwner); if (privilegeValues.isEmpty()) { filter.setParameterList("privileges", Collections.singletonList("none")); } else { filter.setParameterList("privileges", privilegeValues); } enableBaseFilters(session, isAdmin01, ec.getCurrentUserId()); } }
public Map<String,Filter> getEnabledFilters() { // First, validate all the enabled filters... //TODO: this implementation has bad performance for ( Filter filter : enabledFilters.values() ) { filter.validate(); } return enabledFilters; }
public static Set<FilterKey> createFilterKeys(Map<String,Filter> enabledFilters) { if ( enabledFilters.size()==0 ) { return null; } Set<FilterKey> result = new HashSet<FilterKey>(); for ( Filter filter : enabledFilters.values() ) { FilterKey key = new FilterKey( filter.getName(), ( (FilterImpl) filter ).getParameters(), filter.getFilterDefinition().getParameterTypes() ); result.add( key ); } return result; } }
@Test public void testSubqueryWithRestrictionsOnComponentTypes() { doInHibernate( this::sessionFactory, session -> { session.enableFilter( "statusFilter" ).setParameter( "status", "active" ); final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "id", STUDENT_ID ) ); final DetachedCriteria subSelect = DetachedCriteria.forClass( Student.class ); subSelect.setProjection( Projections.max( "age" ) ); subSelect.add( Restrictions.eq( "id", STUDENT_ID ) ); query.add( Property.forName( "age" ).eq( subSelect ) ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); }); }
public Map<String,Filter> getEnabledFilters() { // First, validate all the enabled filters... //TODO: this implementation has bad performance for ( Filter filter : enabledFilters.values() ) { filter.validate(); } return enabledFilters; }
public static Set<FilterKey> createFilterKeys(Map<String,Filter> enabledFilters) { if ( enabledFilters.size()==0 ) { return null; } Set<FilterKey> result = new HashSet<FilterKey>(); for ( Filter filter : enabledFilters.values() ) { FilterKey key = new FilterKey( filter.getName(), ( (FilterImpl) filter ).getParameters(), filter.getFilterDefinition().getParameterTypes() ); result.add( key ); } return result; } }