Fixing merge conflicts

This commit is contained in:
Arpit Mohan 2020-08-13 18:59:41 +05:30
commit aeb9ecb8f4
17 changed files with 111 additions and 80 deletions

View File

@ -75,7 +75,6 @@ jobs:
ui-test: ui-test:
needs: build needs: build
runs-on: ubuntu-latest runs-on: ubuntu-latest
# container: appsmith/cypress-nginx
defaults: defaults:
run: run:
working-directory: app/client working-directory: app/client

View File

@ -82,3 +82,36 @@ jobs:
docker build -t appsmith/appsmith-server-ee:nightly . docker build -t appsmith/appsmith-server-ee:nightly .
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
docker push appsmith/appsmith-server-ee docker push appsmith/appsmith-server-ee
# These are dummy jobs in the CI build to satisfy required status checks for merging PRs. This is a hack because Github doesn't support conditional
# required checks in monorepos. These jobs are a clone of similarly named jobs in client.yml.
#
# Check support request at: https://github.community/t/feature-request-conditional-required-checks/16761
ui-test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
job: [0, 1, 2, 3, 4, 5, 6]
steps:
# Checkout the code
- uses: actions/checkout@v2
- name: Do nothing as this is a dummy step
shell: bash
run: |
exit 0
package:
runs-on: ubuntu-latest
steps:
# Checkout the code
- uses: actions/checkout@v2
- name: Do nothing as this is a dummy step
shell: bash
run: |
exit 0

View File

@ -26,6 +26,7 @@ export interface ApplicationResponsePayload {
name: string; name: string;
organizationId: string; organizationId: string;
pages?: ApplicationPagePayload[]; pages?: ApplicationPagePayload[];
appIsExample: boolean;
} }
// export interface FetchApplicationResponse extends ApiResponse { // export interface FetchApplicationResponse extends ApiResponse {

View File

@ -401,6 +401,7 @@ export type ApplicationPayload = {
defaultPageId?: string; defaultPageId?: string;
isPublic?: boolean; isPublic?: boolean;
userPermissions?: string[]; userPermissions?: string[];
appIsExample: boolean;
}; };
export type OrganizationDetails = { export type OrganizationDetails = {

View File

@ -137,6 +137,7 @@ export const TIMEZONE = "Timezone";
export const ENABLE_TIME = "Enable Time"; export const ENABLE_TIME = "Enable Time";
export const EDIT_APP = "Back to editor"; export const EDIT_APP = "Back to editor";
export const FORK_APP = "Fork App";
export const LIGHTNING_MENU_DATA_API = "Use data from an API"; export const LIGHTNING_MENU_DATA_API = "Use data from an API";
export const LIGHTNING_MENU_DATA_QUERY = "Use data from a Query"; export const LIGHTNING_MENU_DATA_QUERY = "Use data from a Query";

View File

@ -4,6 +4,7 @@ export const getApplicationPayload = (): ApplicationPayload => ({
id: generateReactKey(), id: generateReactKey(),
name: generateReactKey(), name: generateReactKey(),
organizationId: generateReactKey(), organizationId: generateReactKey(),
appIsExample: false,
pageCount: 4, pageCount: 4,
}); });

View File

@ -4,7 +4,7 @@ import styled from "styled-components";
import StyledHeader from "components/designSystems/appsmith/StyledHeader"; import StyledHeader from "components/designSystems/appsmith/StyledHeader";
import AppsmithLogo from "assets/images/appsmith_logo_white.png"; import AppsmithLogo from "assets/images/appsmith_logo_white.png";
import Button from "components/editorComponents/Button"; import Button from "components/editorComponents/Button";
import { EDIT_APP } from "constants/messages"; import { EDIT_APP, FORK_APP } from "constants/messages";
import { import {
isPermitted, isPermitted,
PERMISSION_TYPE, PERMISSION_TYPE,
@ -16,6 +16,7 @@ import {
import { import {
APPLICATIONS_URL, APPLICATIONS_URL,
getApplicationViewerPageURL, getApplicationViewerPageURL,
SIGN_UP_URL,
} from "constants/routes"; } from "constants/routes";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { AppState } from "reducers"; import { AppState } from "reducers";
@ -60,6 +61,12 @@ const BackToEditorButton = styled(Button)`
margin: 5px 10px; margin: 5px 10px;
`; `;
const ForkButton = styled(Button)`
max-width: 200px;
height: 32px;
margin: 5px 10px;
`;
const ShareButton = styled(Button)` const ShareButton = styled(Button)`
height: 32px; height: 32px;
margin: 5px 10px; margin: 5px 10px;
@ -116,10 +123,41 @@ type AppViewerHeaderProps = {
export const AppViewerHeader = (props: AppViewerHeaderProps) => { export const AppViewerHeader = (props: AppViewerHeaderProps) => {
const { currentApplicationDetails, pages, currentOrgId } = props; const { currentApplicationDetails, pages, currentOrgId } = props;
const isExampleApp = currentApplicationDetails?.appIsExample;
const userPermissions = currentApplicationDetails?.userPermissions ?? []; const userPermissions = currentApplicationDetails?.userPermissions ?? [];
const permissionRequired = PERMISSION_TYPE.MANAGE_APPLICATION; const permissionRequired = PERMISSION_TYPE.MANAGE_APPLICATION;
const canEdit = isPermitted(userPermissions, permissionRequired); const canEdit = isPermitted(userPermissions, permissionRequired);
const forkAppUrl = `${window.location.origin}${SIGN_UP_URL}?appId=${currentApplicationDetails?.id}`;
let CTA = null;
if (props.url && canEdit) {
CTA = (
<BackToEditorButton
className="t--back-to-editor"
href={props.url}
intent="primary"
icon="arrow-left"
iconAlignment="left"
text={EDIT_APP}
filled
/>
);
} else if (isExampleApp) {
CTA = (
<ForkButton
className="t--fork-app"
href={forkAppUrl}
intent="primary"
icon="fork"
iconAlignment="left"
text={FORK_APP}
filled
/>
);
}
return ( return (
<HeaderWrapper hasPages={pages.length > 1}> <HeaderWrapper hasPages={pages.length > 1}>
<HeaderRow justify={"space-between"}> <HeaderRow justify={"space-between"}>
@ -160,18 +198,7 @@ export const AppViewerHeader = (props: AppViewerHeaderProps) => {
applicationId={currentApplicationDetails.id} applicationId={currentApplicationDetails.id}
title={currentApplicationDetails.name} title={currentApplicationDetails.name}
/> />
{CTA}
{props.url && canEdit && (
<BackToEditorButton
className="t--back-to-editor"
href={props.url}
intent="primary"
icon="arrow-left"
iconAlignment="left"
text={EDIT_APP}
filled
/>
)}
</> </>
)} )}
</HeaderSection> </HeaderSection>

View File

@ -94,7 +94,9 @@ export const SignUp = (props: InjectedFormProps<SignupFormValues>) => {
} }
let signupURL = "/api/v1/" + SIGNUP_SUBMIT_PATH; let signupURL = "/api/v1/" + SIGNUP_SUBMIT_PATH;
if (queryParams.has("redirectTo")) { if (queryParams.has("appId")) {
signupURL += `?appId=${queryParams.get("appId")}`;
} else if (queryParams.has("redirectTo")) {
signupURL += `?redirectUrl=${queryParams.get("redirectTo")}`; signupURL += `?redirectUrl=${queryParams.get("redirectTo")}`;
} }

View File

@ -114,6 +114,7 @@ export function* fetchApplicationListSaga() {
id: application.id, id: application.id,
pageCount: application.pages ? application.pages.length : 0, pageCount: application.pages ? application.pages.length : 0,
defaultPageId: getDefaultPageId(application.pages), defaultPageId: getDefaultPageId(application.pages),
appIsExample: application.appIsExample,
}), }),
); );
yield put({ yield put({
@ -287,6 +288,7 @@ export function* createApplicationSaga(
organizationId: response.data.organizationId, organizationId: response.data.organizationId,
pageCount: response.data.pages ? response.data.pages.length : 0, pageCount: response.data.pages ? response.data.pages.length : 0,
defaultPageId: getDefaultPageId(response.data.pages), defaultPageId: getDefaultPageId(response.data.pages),
appIsExample: response.data.appIsExample,
}; };
AnalyticsUtil.logEvent("CREATE_APP", { AnalyticsUtil.logEvent("CREATE_APP", {
appName: application.name, appName: application.name,

View File

@ -26,7 +26,6 @@ import {
import { RestAction } from "entities/Action"; import { RestAction } from "entities/Action";
import { setActionProperty } from "actions/actionActions"; import { setActionProperty } from "actions/actionActions";
import { fetchPluginForm } from "actions/pluginActions"; import { fetchPluginForm } from "actions/pluginActions";
import { changeQuery } from "actions/queryPaneActions";
function* changeQuerySaga(actionPayload: ReduxAction<{ id: string }>) { function* changeQuerySaga(actionPayload: ReduxAction<{ id: string }>) {
const { id } = actionPayload.payload; const { id } = actionPayload.payload;

View File

@ -14,6 +14,6 @@ export const isStrongPassword = (value: string) => {
// TODO (abhinav): Use a regex which adheres to standards RFC5322 // TODO (abhinav): Use a regex which adheres to standards RFC5322
export const isEmail = (value: string) => { export const isEmail = (value: string) => {
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(value); return re.test(value);
}; };

View File

@ -12,7 +12,7 @@ For example:
$ ./build.sh -DskipTests $ ./build.sh -DskipTests
``` ```
This will This script will perform the following steps:
1. Compile the code 1. Compile the code
2. Generate the jars for server & plugins 2. Generate the jars for server & plugins
3. Copy them into the `dist` directory 3. Copy them into the `dist` directory

View File

@ -176,11 +176,11 @@ public class PolicyGenerator {
return childPolicySet; return childPolicySet;
} }
public Set<Policy> getAllChildPolicies(Set<Policy> policySet, Class inheritingEntity, Class destinationEntity) { public Set<Policy> getAllChildPolicies(Set<Policy> policySet, Class sourceEntity, Class destinationEntity) {
Set<Policy> policies = policySet.stream() Set<Policy> policies = policySet.stream()
.map(policy -> { .map(policy -> {
AclPermission aclPermission = AclPermission AclPermission aclPermission = AclPermission
.getPermissionByValue(policy.getPermission(), inheritingEntity); .getPermissionByValue(policy.getPermission(), sourceEntity);
// Get all the child policies for the given policy and aclPermission // Get all the child policies for the given policy and aclPermission
return getChildPolicies(policy, aclPermission, destinationEntity); return getChildPolicies(policy, aclPermission, destinationEntity);
}).flatMap(Collection::stream) }).flatMap(Collection::stream)

View File

@ -7,7 +7,6 @@ import com.appsmith.server.acl.PolicyGenerator;
import com.appsmith.server.domains.Action; import com.appsmith.server.domains.Action;
import com.appsmith.server.domains.Application; import com.appsmith.server.domains.Application;
import com.appsmith.server.domains.Datasource; import com.appsmith.server.domains.Datasource;
import com.appsmith.server.domains.Organization;
import com.appsmith.server.domains.Page; import com.appsmith.server.domains.Page;
import com.appsmith.server.domains.User; import com.appsmith.server.domains.User;
import com.appsmith.server.repositories.ActionRepository; import com.appsmith.server.repositories.ActionRepository;
@ -27,13 +26,6 @@ import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.appsmith.server.acl.AclPermission.MANAGE_APPLICATIONS;
import static com.appsmith.server.acl.AclPermission.MANAGE_PAGES;
import static com.appsmith.server.acl.AclPermission.ORGANIZATION_MANAGE_APPLICATIONS;
import static com.appsmith.server.acl.AclPermission.ORGANIZATION_READ_APPLICATIONS;
import static com.appsmith.server.acl.AclPermission.READ_APPLICATIONS;
import static com.appsmith.server.acl.AclPermission.READ_PAGES;
@Component @Component
public class PolicyUtils { public class PolicyUtils {
@ -148,18 +140,6 @@ public class PolicyUtils {
.collect(Collectors.toMap(Policy::getPermission, Function.identity())); .collect(Collectors.toMap(Policy::getPermission, Function.identity()));
} }
public Map<String, Policy> generateChildrenPoliciesFromOrganizationPolicies(Map<String, Policy> orgPolicyMap, Class destinationEntity) {
Set<Policy> extractedInterestingPolicySet = new HashSet<>(orgPolicyMap.values())
.stream()
.filter(policy -> policy.getPermission().equals(ORGANIZATION_MANAGE_APPLICATIONS.getValue())
|| policy.getPermission().equals(ORGANIZATION_READ_APPLICATIONS.getValue()))
.collect(Collectors.toSet());
return policyGenerator.getAllChildPolicies(extractedInterestingPolicySet, Organization.class, destinationEntity)
.stream()
.collect(Collectors.toMap(Policy::getPermission, Function.identity()));
}
public Flux<Datasource> updateWithNewPoliciesToDatasourcesByOrgId(String orgId, Map<String, Policy> newPoliciesMap, boolean addPolicyToObject) { public Flux<Datasource> updateWithNewPoliciesToDatasourcesByOrgId(String orgId, Map<String, Policy> newPoliciesMap, boolean addPolicyToObject) {
return datasourceRepository return datasourceRepository
@ -194,18 +174,6 @@ public class PolicyUtils {
.flatMapMany(updatedApplications -> applicationRepository.saveAll(updatedApplications)); .flatMapMany(updatedApplications -> applicationRepository.saveAll(updatedApplications));
} }
public Map<String, Policy> generatePagePoliciesFromApplicationPolicies(Map<String, Policy> applicationPolicyMap) {
Set<Policy> extractedInterestingPolicySet = new HashSet<>(applicationPolicyMap.values())
.stream()
.filter(policy -> policy.getPermission().equals(MANAGE_APPLICATIONS.getValue())
|| policy.getPermission().equals(READ_APPLICATIONS.getValue()))
.collect(Collectors.toSet());
return policyGenerator.getAllChildPolicies(extractedInterestingPolicySet, Application.class, Page.class)
.stream()
.collect(Collectors.toMap(Policy::getPermission, Function.identity()));
}
public Flux<Page> updateWithApplicationPermissionsToAllItsPages(String applicationId, Map<String, Policy> newPagePoliciesMap, boolean addPolicyToObject) { public Flux<Page> updateWithApplicationPermissionsToAllItsPages(String applicationId, Map<String, Policy> newPagePoliciesMap, boolean addPolicyToObject) {
return pageRepository return pageRepository
@ -222,18 +190,6 @@ public class PolicyUtils {
.flatMapMany(updatedPages -> pageRepository.saveAll(updatedPages)); .flatMapMany(updatedPages -> pageRepository.saveAll(updatedPages));
} }
public Map<String, Policy> generateActionPoliciesFromPagePolicies(Map<String, Policy> pagePolicyMap) {
Set<Policy> extractedInterestingPolicySet = new HashSet<>(pagePolicyMap.values())
.stream()
.filter(policy -> policy.getPermission().equals(MANAGE_PAGES.getValue())
|| policy.getPermission().equals(READ_PAGES.getValue()))
.collect(Collectors.toSet());
return policyGenerator.getAllChildPolicies(extractedInterestingPolicySet, Page.class, Action.class)
.stream()
.collect(Collectors.toMap(Policy::getPermission, Function.identity()));
}
public Flux<Action> updateWithPagePermissionsToAllItsActions(String pageId, Map<String, Policy> newActionPoliciesMap, boolean addPolicyToObject) { public Flux<Action> updateWithPagePermissionsToAllItsActions(String pageId, Map<String, Policy> newActionPoliciesMap, boolean addPolicyToObject) {
return actionRepository return actionRepository
@ -255,4 +211,14 @@ public class PolicyUtils {
.collectList() .collectList()
.flatMapMany(updatedActions -> actionRepository.saveAll(updatedActions)); .flatMapMany(updatedActions -> actionRepository.saveAll(updatedActions));
} }
public Map<String, Policy> generateInheritedPoliciesFromSourcePolicies(Map<String, Policy> sourcePolicyMap,
Class sourceEntity,
Class destinationEntity) {
Set<Policy> extractedInterestingPolicySet = new HashSet<>(sourcePolicyMap.values());
return policyGenerator.getAllChildPolicies(extractedInterestingPolicySet, sourceEntity, destinationEntity)
.stream()
.collect(Collectors.toMap(Policy::getPermission, Function.identity()));
}
} }

View File

@ -213,8 +213,8 @@ public class ApplicationServiceImpl extends BaseService<ApplicationRepository, A
user.setIsAnonymous(true); user.setIsAnonymous(true);
Map<String, Policy> applicationPolicyMap = policyUtils.generatePolicyFromPermission(Set.of(applicationPermission), user); Map<String, Policy> applicationPolicyMap = policyUtils.generatePolicyFromPermission(Set.of(applicationPermission), user);
Map<String, Policy> pagePolicyMap = policyUtils.generatePagePoliciesFromApplicationPolicies(applicationPolicyMap); Map<String, Policy> pagePolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(applicationPolicyMap, Application.class, Page.class);
Map<String, Policy> actionPolicyMap = policyUtils.generateActionPoliciesFromPagePolicies(pagePolicyMap); Map<String, Policy> actionPolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(pagePolicyMap, Page.class, Action.class);
Map<String, Policy> datasourcePolicyMap = policyUtils.generatePolicyFromPermission(Set.of(datasourcePermission), user); Map<String, Policy> datasourcePolicyMap = policyUtils.generatePolicyFromPermission(Set.of(datasourcePermission), user);
Flux<Page> updatedPagesFlux = policyUtils.updateWithApplicationPermissionsToAllItsPages(application.getId(), pagePolicyMap, isPublic); Flux<Page> updatedPagesFlux = policyUtils.updateWithApplicationPermissionsToAllItsPages(application.getId(), pagePolicyMap, isPublic);

View File

@ -152,10 +152,10 @@ public class UserOrganizationServiceImpl implements UserOrganizationService {
// Generate all the policies for Organization, Application, Page and Actions for the current user // Generate all the policies for Organization, Application, Page and Actions for the current user
Set<AclPermission> rolePermissions = role.getPermissions(); Set<AclPermission> rolePermissions = role.getPermissions();
Map<String, Policy> orgPolicyMap = policyUtils.generatePolicyFromPermission(rolePermissions, user); Map<String, Policy> orgPolicyMap = policyUtils.generatePolicyFromPermission(rolePermissions, user);
Map<String, Policy> applicationPolicyMap = policyUtils.generateChildrenPoliciesFromOrganizationPolicies(orgPolicyMap, Application.class); Map<String, Policy> applicationPolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(orgPolicyMap, Organization.class, Application.class);
Map<String, Policy> datasourcePolicyMap = policyUtils.generateChildrenPoliciesFromOrganizationPolicies(orgPolicyMap, Datasource.class); Map<String, Policy> datasourcePolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(orgPolicyMap, Organization.class, Datasource.class);
Map<String, Policy> pagePolicyMap = policyUtils.generatePagePoliciesFromApplicationPolicies(applicationPolicyMap); Map<String, Policy> pagePolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(applicationPolicyMap, Application.class, Page.class);
Map<String, Policy> actionPolicyMap = policyUtils.generateActionPoliciesFromPagePolicies(pagePolicyMap); Map<String, Policy> actionPolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(pagePolicyMap, Page.class, Action.class);
//Now update the organization policies //Now update the organization policies
Organization updatedOrganization = policyUtils.addPoliciesToExistingObject(orgPolicyMap, organization); Organization updatedOrganization = policyUtils.addPoliciesToExistingObject(orgPolicyMap, organization);
@ -215,10 +215,10 @@ public class UserOrganizationServiceImpl implements UserOrganizationService {
// Generate all the policies for Organization, Application, Page and Actions // Generate all the policies for Organization, Application, Page and Actions
Set<AclPermission> rolePermissions = role.getPermissions(); Set<AclPermission> rolePermissions = role.getPermissions();
Map<String, Policy> orgPolicyMap = policyUtils.generatePolicyFromPermission(rolePermissions, user); Map<String, Policy> orgPolicyMap = policyUtils.generatePolicyFromPermission(rolePermissions, user);
Map<String, Policy> applicationPolicyMap = policyUtils.generateChildrenPoliciesFromOrganizationPolicies(orgPolicyMap, Application.class); Map<String, Policy> applicationPolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(orgPolicyMap, Organization.class, Application.class);
Map<String, Policy> datasourcePolicyMap = policyUtils.generateChildrenPoliciesFromOrganizationPolicies(orgPolicyMap, Datasource.class); Map<String, Policy> datasourcePolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(orgPolicyMap, Organization.class, Datasource.class);
Map<String, Policy> pagePolicyMap = policyUtils.generatePagePoliciesFromApplicationPolicies(applicationPolicyMap); Map<String, Policy> pagePolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(applicationPolicyMap, Application.class, Page.class);
Map<String, Policy> actionPolicyMap = policyUtils.generateActionPoliciesFromPagePolicies(pagePolicyMap); Map<String, Policy> actionPolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(pagePolicyMap, Page.class, Action.class);
//Now update the organization policies //Now update the organization policies
Organization updatedOrganization = policyUtils.removePoliciesFromExistingObject(orgPolicyMap, organization); Organization updatedOrganization = policyUtils.removePoliciesFromExistingObject(orgPolicyMap, organization);
@ -333,10 +333,10 @@ public class UserOrganizationServiceImpl implements UserOrganizationService {
// Generate all the policies for Organization, Application, Page and Actions for the current user // Generate all the policies for Organization, Application, Page and Actions for the current user
Set<AclPermission> rolePermissions = role.getPermissions(); Set<AclPermission> rolePermissions = role.getPermissions();
Map<String, Policy> orgPolicyMap = policyUtils.generatePolicyFromPermissionForMultipleUsers(rolePermissions, users); Map<String, Policy> orgPolicyMap = policyUtils.generatePolicyFromPermissionForMultipleUsers(rolePermissions, users);
Map<String, Policy> applicationPolicyMap = policyUtils.generateChildrenPoliciesFromOrganizationPolicies(orgPolicyMap, Application.class); Map<String, Policy> applicationPolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(orgPolicyMap, Organization.class, Application.class);
Map<String, Policy> datasourcePolicyMap = policyUtils.generateChildrenPoliciesFromOrganizationPolicies(orgPolicyMap, Datasource.class); Map<String, Policy> datasourcePolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(orgPolicyMap, Organization.class, Datasource.class);
Map<String, Policy> pagePolicyMap = policyUtils.generatePagePoliciesFromApplicationPolicies(applicationPolicyMap); Map<String, Policy> pagePolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(applicationPolicyMap, Application.class, Page.class);
Map<String, Policy> actionPolicyMap = policyUtils.generateActionPoliciesFromPagePolicies(pagePolicyMap); Map<String, Policy> actionPolicyMap = policyUtils.generateInheritedPoliciesFromSourcePolicies(pagePolicyMap, Page.class, Action.class);
//Now update the organization policies //Now update the organization policies
Organization updatedOrganization = (Organization) policyUtils.addPoliciesToExistingObject(orgPolicyMap, organization); Organization updatedOrganization = (Organization) policyUtils.addPoliciesToExistingObject(orgPolicyMap, organization);

View File

@ -282,8 +282,7 @@ public class UserServiceImpl extends BaseService<UserRepository, User, String> i
.findByEmail(user.getEmail()) .findByEmail(user.getEmail())
.switchIfEmpty(Mono.error(new AppsmithException(AppsmithError.NO_RESOURCE_FOUND, "token", token))) .switchIfEmpty(Mono.error(new AppsmithException(AppsmithError.NO_RESOURCE_FOUND, "token", token)))
.flatMap(passwordResetTokenRepository::delete) .flatMap(passwordResetTokenRepository::delete)
.thenReturn(userFromDb) .then(repository.save(userFromDb))
.flatMap(repository::save)
.thenReturn(true); .thenReturn(true);
}); });
} }