@Override public final DetachedCriteria getDataSharingDetachedCriteria( User user ) { return getDataSharingDetachedCriteria( UserInfo.fromUser( user ), AclService.LIKE_READ_DATA ); }
protected boolean dataSharingEnabled( UserInfo userInfo ) { return aclService.isDataShareable( clazz ) && !userInfo.isSuper(); }
@Override public UserInfo getCurrentUserInfo() { UserDetails userDetails = getCurrentUserDetails(); if ( userDetails == null ) { return null; } Integer userId = USERNAME_ID_CACHE.get( userDetails.getUsername(), un -> getUserId( un ) ); if ( userId == null ) { return null; } Set<String> authorities = userDetails.getAuthorities() .stream().map( GrantedAuthority::getAuthority ) .collect( Collectors.toSet() ); return new UserInfo( userId, userDetails.getUsername(), authorities ); }
builder.and( builder.equal( root.get( "id" ), ugdc.get( "id" ) ), builder.equal( uga.join( "userGroup" ).join( "members" ).get( "id" ), user.getId() ), builder.like( uga.get( "access" ), access ) ) ); } ); builder.and( builder.equal( root.get( "id" ), udc.get( "id" ) ), builder.equal( ua.get( "user" ).get( "id" ), user.getId() ), builder.like( ua.get( "access" ), access ) ) ); } ); builder.isNull( root.get( "publicAccess" ) ), builder.isNull( root.get( "user" ) ), builder.equal( root.get( "user" ).get( "id" ), user.getId() ), builder.exists( userGroupPredicate.apply( root ) ), builder.exists( userPredicate.apply( root ) ) ) );
@Override public UserInfo getCurrentUserInfo() { return new UserInfo( currentUser.getId(), currentUser.getUsername(), currentUser.getUserCredentials().getAllAuthorities() ); }
builder.and( builder.equal( root.get( "id" ), ugdc.get( "id" ) ), builder.equal( uga.join( "userGroup" ).join( "members" ).get( "id" ), user.getId() ), builder.like( uga.get( "access" ), access ) ) ); } ); builder.and( builder.equal( root.get( "id" ), udc.get( "id" ) ), builder.equal( ua.get( "user" ).get( "id" ), user.getId() ), builder.like( ua.get( "access" ), access ) ) ); } );
public static UserInfo fromUser( User user ) { if ( user == null ) { return null; } UserCredentials credentials = user.getUserCredentials(); return new UserInfo( credentials.getId(), credentials.getUsername(), credentials.getAllAuthorities() ); }
@Override public List<Function<Root<T>, Predicate>> getDataSharingPredicates( CriteriaBuilder builder, User user ) { return getDataSharingPredicates( builder, UserInfo.fromUser( user ), AclService.LIKE_READ_DATA ); }
disjunction.add( Restrictions.isNull( "c.publicAccess" ) ); disjunction.add( Restrictions.isNull( "c.user.id" ) ); disjunction.add( Restrictions.eq( "c.user.id", user.getId() ) ); userGroupDetachedCriteria.add( Restrictions.eq( "ugm.id", user.getId() ) ); userGroupDetachedCriteria.add( Restrictions.like( "uga.access", access ) ); userDetachedCriteria.add( Restrictions.eq( "u.id", user.getId() ) ); userDetachedCriteria.add( Restrictions.like( "ua.access", access ) );
protected boolean sharingEnabled( UserInfo userInfo ) { return forceAcl() || (aclService.isShareable( clazz ) && !(userInfo == null || userInfo.isSuper())); }
@Override public List<Function<Root<T>, Predicate>> getSharingPredicates( CriteriaBuilder builder, User user, String access ) { return getSharingPredicates( builder, UserInfo.fromUser( user ), access ); }
@Override public final DetachedCriteria getSharingDetachedCriteria( User user ) { return getSharingDetachedCriteria( UserInfo.fromUser( user ), AclService.LIKE_READ_METADATA ); }
@Override public final List<Function<Root<T>, Predicate>> getDataSharingPredicates( CriteriaBuilder builder, User user, String access ) { return getDataSharingPredicates( builder, UserInfo.fromUser( user ), access ); }
@Override public final Criteria getDataSharingCriteria( User user, String access ) { return getExecutableCriteria( getDataSharingDetachedCriteria( UserInfo.fromUser( user ), access ) ); }
@Override public final Criteria getSharingCriteria( User user ) { return getExecutableCriteria( getSharingDetachedCriteria( UserInfo.fromUser( user ), AclService.LIKE_READ_METADATA ) ); }