Skip to content
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
Expand Up @@ -31,8 +31,11 @@
import javax.jcr.RepositoryException;
import javax.jcr.Session;

import org.apache.commons.lang3.StringUtils;
import org.picocontainer.Startable;

import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.portal.config.UserACL;
import org.exoplatform.services.cache.CacheService;
import org.exoplatform.services.cache.ExoCache;
import org.exoplatform.services.cms.BasePath;
Expand All @@ -50,6 +53,7 @@
import org.exoplatform.services.organization.Membership;
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.security.ConversationState;
import org.exoplatform.services.security.Identity;
import org.exoplatform.services.wcm.utils.WCMCoreUtils;

/**
Expand Down Expand Up @@ -716,15 +720,15 @@ protected boolean hasPermissionOnDrive(DriveData drive, List<String> userMembers
}

protected List<String> getUserMemberships(String userId) throws Exception {
List<String> memberships = null;
String currentUser = ConversationState.getCurrent() != null ? ConversationState.getCurrent().getIdentity().getUserId() : null;
if(currentUser != null && currentUser.equals(userId)) {
memberships = Utils.getMemberships();
if(StringUtils.isBlank(userId)) {
return Collections.emptyList();
} else {
Collection<Membership> colMemberships = organizationService.getMembershipHandler().findMembershipsByUser(userId);
memberships = colMemberships.stream().map(m -> m.getMembershipType() + ":" + m.getGroupId()).collect(Collectors.toList());
Identity userAclIdentity = ExoContainerContext.getService(UserACL.class).getUserIdentity(userId);
return userAclIdentity.getMemberships()
.stream()
.map(m -> "%s:%s".formatted(m.getMembershipType(), m.getGroup()))
.collect(Collectors.toList());
}
return memberships;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.exoplatform.services.organization.Membership;
import org.exoplatform.services.organization.impl.MembershipUpdateListener;
import org.exoplatform.services.security.ConversationRegistry;
import org.exoplatform.services.security.IdentityRegistry;

/**
* Created by The eXo Platform SARL Author : Dang Van Minh
Expand All @@ -31,8 +32,9 @@ public class WCMMembershipUpdateListener extends MembershipUpdateListener {
private ManageDriveService driveService_;

public WCMMembershipUpdateListener(ConversationRegistry conversationRegistry,
ManageDriveService driveService) {
super(conversationRegistry);
IdentityRegistry identityRegistry,
ManageDriveService driveService) {
super(conversationRegistry, identityRegistry);
driveService_ = driveService;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,46 +190,29 @@ public static boolean hasPermission(String userId, List<String> permissions, boo
try {
OrganizationService organizationService = WCMCoreUtils.getService(OrganizationService.class);
startRequest(organizationService);
Identity identity = ConversationState.getCurrent().getIdentity();
Collection<?> memberships = null;
if (userId.equals(identity.getUserId())){
Collection<MembershipEntry> membershipsEntries = identity.getMemberships();
HashSet<MembershipImpl> membershipsHash = new HashSet<MembershipImpl>();
for (MembershipEntry membershipEntry : membershipsEntries) {
MembershipImpl m = new MembershipImpl();
m.setGroupId(membershipEntry.getGroup());
m.setMembershipType(membershipEntry.getMembershipType());
m.setUserName(userId);
membershipsHash.add(m);
}
memberships = new LinkedList<>(membershipsHash);
} else {
memberships = organizationService.getMembershipHandler().findMembershipsByUser(userId);
}
Identity identity = ExoContainerContext.getService(UserACL.class).getUserIdentity(userId);
String userMembershipTmp;
Membership userMembership;
int count = 0;
String permissionTmp = "";
for (String permission : permissions) {
if (!permissionTmp.equals(permission)) count = 0;
for (Object userMembershipObj : memberships) {
userMembership = (Membership) userMembershipObj;
if (permission.equals(userMembership.getUserName())) {
for (MembershipEntry userMembership : identity.getMemberships()) {
if (permission.equals(userId)) {
return true;
} else if ("any".equals(permission)) {
if (isNeedFullAccess) {
count++;
if (count == 4) return true;
}
else return true;
} else if (permission.startsWith("*") && permission.contains(userMembership.getGroupId())) {
} else if (permission.startsWith("*") && permission.contains(userMembership.getGroup())) {
if (isNeedFullAccess) {
count++;
if (count == 4) return true;
}
else return true;
} else {
userMembershipTmp = userMembership.getMembershipType() + ":" + userMembership.getGroupId();
userMembershipTmp = userMembership.getMembershipType() + ":" + userMembership.getGroup();
if (permission.equals(userMembershipTmp)) {
if (isNeedFullAccess) {
count++;
Expand Down
Loading