Skip to content

Commit

Permalink
Revert "Adjust CS to use new permissions API #7531"
Browse files Browse the repository at this point in the history
This reverts commit 52d8aa3.
  • Loading branch information
ashklianko committed Oct 22, 2024
1 parent 8fe7322 commit eded22c
Show file tree
Hide file tree
Showing 28 changed files with 202 additions and 166 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,13 @@ export class ApplyContentPermissionsRequest

private permissions: AccessControlList;

private inheritPermissions: boolean;

private overwriteChildPermissions: boolean;

constructor() {
super();
this.inheritPermissions = true;
this.overwriteChildPermissions = false;
this.setMethod(HttpMethod.POST);
this.addRequestPathElements('applyPermissions');
Expand All @@ -32,16 +35,11 @@ export class ApplyContentPermissionsRequest
return this;
}

/*
* @deprecated Use new API instead
* */
setInheritPermissions(inheritPermissions: boolean): ApplyContentPermissionsRequest {
this.inheritPermissions = inheritPermissions;
return this;
}

/*
* @deprecated Use new API instead
* */
setOverwriteChildPermissions(overwriteChildPermissions: boolean): ApplyContentPermissionsRequest {
this.overwriteChildPermissions = overwriteChildPermissions;
return this;
Expand All @@ -51,7 +49,8 @@ export class ApplyContentPermissionsRequest
return {
contentId: this.id.toString(),
permissions: this.permissions ? this.permissions.toJson() : undefined,
scope: this.overwriteChildPermissions ? 'TREE' : 'SINGLE'
inheritPermissions: this.inheritPermissions,
overwriteChildPermissions: this.overwriteChildPermissions
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {JsonResponse} from '@enonic/lib-admin-ui/rest/JsonResponse';
import {Content} from '../content/Content';
import {ContentJson} from '../content/ContentJson';
import {ExtraData} from '../content/ExtraData';
import {AccessControlList} from '../access/AccessControlList';
import {PropertyTree} from '@enonic/lib-admin-ui/data/PropertyTree';
import {PrincipalKey} from '@enonic/lib-admin-ui/security/PrincipalKey';
import {HttpMethod} from '@enonic/lib-admin-ui/rest/HttpMethod';
Expand Down Expand Up @@ -32,6 +33,12 @@ export class UpdateContentRequest

private publishTo: Date;

private permissions: AccessControlList;

private inheritPermissions: boolean;

private overwritePermissions: boolean;

private workflow: Workflow;

constructor(id: string) {
Expand Down Expand Up @@ -92,6 +99,20 @@ export class UpdateContentRequest
return this;
}

setPermissions(permissions: AccessControlList): UpdateContentRequest {
this.permissions = permissions;
return this;
}

setInheritPermissions(inheritPermissions: boolean): UpdateContentRequest {
this.inheritPermissions = inheritPermissions;
return this;
}

setOverwritePermissions(overwritePermissions: boolean): UpdateContentRequest {
this.overwritePermissions = overwritePermissions;
return this;
}

setWorkflow(workflow: Workflow): UpdateContentRequest {
this.workflow = workflow;
Expand All @@ -108,6 +129,9 @@ export class UpdateContentRequest
.setLanguage(content.getLanguage())
.setPublishFrom(content.getPublishFromTime())
.setPublishTo(content.getPublishToTime())
.setPermissions(content.getPermissions())
.setInheritPermissions(content.isInheritPermissionsEnabled())
.setOverwritePermissions(content.isOverwritePermissionsEnabled())
.setWorkflow(content.getWorkflow());
}

Expand All @@ -125,6 +149,9 @@ export class UpdateContentRequest
owner: this.owner ? this.owner.toString() : undefined,
publishFrom: this.publishFrom,
publishTo: this.publishTo,
permissions: this.permissions ? this.permissions.toJson() : undefined,
inheritPermissions: this.inheritPermissions,
overwriteChildPermissions: this.overwritePermissions,
workflow: this.workflow.toJson()
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,6 @@
import com.enonic.xp.attachment.CreateAttachments;
import com.enonic.xp.branch.Branch;
import com.enonic.xp.branch.Branches;
import com.enonic.xp.content.ActiveContentVersionEntry;
import com.enonic.xp.content.CompareContentResult;
import com.enonic.xp.content.CompareContentResults;
import com.enonic.xp.content.CompareContentsParams;
Expand Down Expand Up @@ -152,6 +151,7 @@
import com.enonic.xp.content.FindContentIdsByQueryResult;
import com.enonic.xp.content.FindContentVersionsParams;
import com.enonic.xp.content.FindContentVersionsResult;
import com.enonic.xp.content.GetActiveContentVersionParams;
import com.enonic.xp.content.GetActiveContentVersionsParams;
import com.enonic.xp.content.GetActiveContentVersionsResult;
import com.enonic.xp.content.GetContentByIdsParams;
Expand Down Expand Up @@ -1659,16 +1659,8 @@ public ContentVersionJson revert( final RevertContentJson params )

final Content revertedContent = contentService.update( prepareUpdateContentParams( versionedContent, contentVersionId ) );

final ContentVersion contentVersion = contentService.getActiveVersions( GetActiveContentVersionsParams.create()
.branches(
Branches.from( ContentConstants.BRANCH_DRAFT ) )
.contentId( revertedContent.getId() )
.build() )
.getActiveContentVersions()
.stream()
.findAny()
.map( ActiveContentVersionEntry::getContentVersion )
.orElse( null );
final ContentVersion contentVersion = contentService.getActiveVersion(
GetActiveContentVersionParams.create().branch( ContentConstants.BRANCH_DRAFT ).contentId( revertedContent.getId() ).build() );

if ( contentVersion != null )
{
Expand Down Expand Up @@ -1696,7 +1688,8 @@ private UpdateContentParams prepareUpdateContentParams( final Content versionedC
edit.owner = versionedContent.getOwner();
edit.thumbnail = versionedContent.getThumbnail();
edit.workflowInfo = WorkflowInfo.inProgress();
// edit.permissions = versionedContent.getPermissions(); // check - Do not copy permissions
edit.permissions = versionedContent.getPermissions();
edit.inheritPermissions = versionedContent.inheritsPermissions();
} );

updateAttachments( versionedContent, contentVersionId, updateParams );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

import com.enonic.xp.content.ApplyContentPermissionsParams;
import com.enonic.xp.content.ContentId;
import com.enonic.xp.node.ApplyPermissionsScope;
import com.enonic.xp.security.acl.AccessControlList;

public class ApplyContentPermissionsJson
Expand All @@ -18,24 +17,20 @@ public class ApplyContentPermissionsJson

final AccessControlList permissions;

final AccessControlList addPermissions;
final boolean inheritPermissions;

final AccessControlList removePermissions;

final ApplyPermissionsScope scope;
final boolean overwriteChildPermissions;

@JsonCreator
ApplyContentPermissionsJson( @JsonProperty("contentId") final String contentId,
@JsonProperty("permissions") final List<AccessControlEntryJson> permissions,
@JsonProperty("addPermissions") final List<AccessControlEntryJson> addPermissions,
@JsonProperty("removePermissions") final List<AccessControlEntryJson> removePermissions,
@JsonProperty("scope") final ApplyPermissionsScope scope )
@JsonProperty("inheritPermissions") final boolean inheritPermissions,
@JsonProperty("overwriteChildPermissions") final boolean overwriteChildPermissions )
{
this.contentId = ContentId.from( contentId );
this.permissions = parseAcl( permissions );
this.addPermissions = parseAcl( addPermissions );
this.removePermissions = parseAcl( removePermissions );
this.scope = scope;
this.inheritPermissions = inheritPermissions;
this.overwriteChildPermissions = overwriteChildPermissions;
}

@JsonIgnore
Expand All @@ -51,41 +46,29 @@ public AccessControlList getPermissions()
}

@JsonIgnore
public AccessControlList getAddPermissions()
{
return addPermissions;
}

@JsonIgnore
public AccessControlList getRemovePermissions()
public boolean isInheritPermissions()
{
return removePermissions;
return inheritPermissions;
}

@JsonIgnore
public ApplyPermissionsScope getScope()
public boolean isOverwriteChildPermissions()
{
return scope;
return overwriteChildPermissions;
}

public ApplyContentPermissionsParams toParams()
{
return ApplyContentPermissionsParams.create().
contentId( this.contentId ).
permissions( this.permissions ).addPermissions( this.addPermissions )
.removePermissions( this.removePermissions )
.applyPermissionsScope( this.scope )
.
permissions( this.permissions ).
inheritPermissions( this.inheritPermissions ).
overwriteChildPermissions( this.overwriteChildPermissions ).
build();
}

private AccessControlList parseAcl( final List<AccessControlEntryJson> accessControlListJson )
{
if ( accessControlListJson == null )
{
return AccessControlList.empty();
}

final AccessControlList.Builder builder = AccessControlList.create();
for ( final AccessControlEntryJson entryJson : accessControlListJson )
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import com.enonic.xp.app.contentstudio.json.content.ContentWorkflowInfoJson;
import com.enonic.xp.app.contentstudio.json.content.ExtraDataJson;
import com.enonic.xp.content.ApplyContentPermissionsParams;
import com.enonic.xp.content.ContentId;
import com.enonic.xp.content.ContentName;
import com.enonic.xp.content.ContentPublishInfo;
Expand All @@ -21,6 +22,7 @@
import com.enonic.xp.data.PropertyTree;
import com.enonic.xp.data.PropertyTreeJson;
import com.enonic.xp.security.PrincipalKey;
import com.enonic.xp.security.acl.AccessControlList;

import static com.google.common.base.Strings.isNullOrEmpty;

Expand All @@ -36,13 +38,18 @@ public final class UpdateContentJson

final RenameContentParams renameContentParams;

final ApplyContentPermissionsParams applyContentPermissionsParams;

@JsonCreator
UpdateContentJson( @JsonProperty("contentId") final String contentId, @JsonProperty("contentName") final String contentName,
@JsonProperty("data") final List<PropertyArrayJson> propertyArrayJsonList,
@JsonProperty("meta") final List<ExtraDataJson> extraDataJsonList,
@JsonProperty("displayName") final String displayName, @JsonProperty("requireValid") final String requireValid,
@JsonProperty("owner") final String owner, @JsonProperty("language") final String language,
@JsonProperty("publishFrom") final String publishFrom, @JsonProperty("publishTo") final String publishTo,
@JsonProperty("permissions") final List<AccessControlEntryJson> permissions,
@JsonProperty("inheritPermissions") final boolean inheritPermissions,
@JsonProperty("overwriteChildPermissions") final boolean overwriteChildPermissions,
@JsonProperty("workflow") final ContentWorkflowInfoJson workflowInfo )
{
this.contentName = ContentName.from( contentName );
Expand All @@ -68,13 +75,20 @@ public final class UpdateContentJson
to( publishToInstant ).
build();
edit.language = isNullOrEmpty( language ) ? null : Locale.forLanguageTag( language );
edit.inheritPermissions = inheritPermissions;
edit.permissions = parseAcl( permissions );
edit.workflowInfo = workflowInfo == null ? null : workflowInfo.getWorkflowInfo();
} );

this.renameContentParams = RenameContentParams.create().
contentId( ContentId.from( contentId ) ).
newName( this.contentName ).
build();

this.applyContentPermissionsParams = ApplyContentPermissionsParams.create().
contentId( ContentId.from( contentId ) ).
overwriteChildPermissions( overwriteChildPermissions ).
build();
}

@JsonIgnore
Expand All @@ -89,6 +103,13 @@ public RenameContentParams getRenameContentParams()
return renameContentParams;
}

@JsonIgnore
public ApplyContentPermissionsParams getApplyContentPermissionsParams()
{
return applyContentPermissionsParams;
}


@JsonIgnore
public ContentName getContentName()
{
Expand Down Expand Up @@ -116,4 +137,14 @@ private ExtraDatas parseExtradata( final List<ExtraDataJson> extraDataJsonList )
}
return extradatasBuilder.build();
}

private AccessControlList parseAcl( final List<AccessControlEntryJson> accessControlListJson )
{
final AccessControlList.Builder builder = AccessControlList.create();
for ( final AccessControlEntryJson entryJson : accessControlListJson )
{
builder.add( entryJson.getSourceEntry() );
}
return builder.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@
import com.enonic.xp.content.ApplyContentPermissionsParams;
import com.enonic.xp.content.ApplyContentPermissionsResult;
import com.enonic.xp.content.ApplyPermissionsListener;
import com.enonic.xp.content.ContentIds;
import com.enonic.xp.content.ContentService;
import com.enonic.xp.content.FindContentByParentParams;
import com.enonic.xp.content.FindContentIdsByParentResult;
import com.enonic.xp.context.ContextAccessor;
import com.enonic.xp.task.AbstractRunnableTask;
import com.enonic.xp.task.ProgressReporter;
import com.enonic.xp.task.TaskId;
Expand Down Expand Up @@ -36,46 +34,25 @@ public void run( final TaskId id, final ProgressReporter progressReporter )
final ApplyPermissionsListener listener = new ApplyPermissionsProgressListener( progressReporter );

final FindContentIdsByParentResult children = this.contentService.findIdsByParent(
FindContentByParentParams.create().size( -1 ).recursive( true ).parentId( params.getContentId() ).build() );
FindContentByParentParams.create().size( /*ContentResource.GET_ALL_SIZE_FLAG*/-1 ).recursive( true ).parentId(
params.getContentId() ).build() );

listener.setTotal( ( (Long) children.getTotalHits() ).intValue() + 1 );

final ApplyContentPermissionsResult result = contentService.applyPermissions( ApplyContentPermissionsParams.create()
.contentId( params.getContentId() )
.permissions( params.getPermissions() )
.addPermissions( params.getAddPermissions() )
.removePermissions(
params.getRemovePermissions() )
.applyPermissionsScope( params.getScope() )
.applyContentPermissionsListener( listener )
.build() );
final ApplyPermissionsRunnableTaskResult.Builder resultBuilder = ApplyPermissionsRunnableTaskResult.create();

final ApplyPermissionsRunnableTaskResult taskResult = createTaskResult( result );
final ApplyContentPermissionsResult result = contentService.applyPermissions( ApplyContentPermissionsParams.create().
contentId( params.getContentId() ).
permissions( params.getPermissions() ).
inheritPermissions( params.isInheritPermissions() ).
overwriteChildPermissions( params.isOverwriteChildPermissions() ).
applyContentPermissionsListener( listener ).
build() );

progressReporter.info( taskResult.toJson() );
}
resultBuilder.succeeded( result.getSucceedContents() );
resultBuilder.failed( result.getSkippedContents() );

private ApplyPermissionsRunnableTaskResult createTaskResult( final ApplyContentPermissionsResult result )
{
final ApplyPermissionsRunnableTaskResult.Builder builder = ApplyPermissionsRunnableTaskResult.create();

result.getResults().entrySet().forEach( branchResultEntry -> {
branchResultEntry.getValue().forEach( branchResult -> {
if ( ContextAccessor.current().getBranch().equals( branchResult.getBranch() ) )
{
if ( branchResult.getContent() != null )
{
builder.succeeded( branchResult.getContent().getPath() );
}
else
{
builder.failed( ContentIds.from( branchResultEntry.getKey() ) );
}
}
} );
} );

return builder.build();
progressReporter.info( resultBuilder.build().toJson() );
}

public static class Builder
Expand Down
Loading

0 comments on commit eded22c

Please sign in to comment.