[fix] Re-introduce beforeUpdateOneObject hook (#5495)
... and disable name edition in object edition form. This feature will be introduced by #5491
This commit is contained in:
@ -22,6 +22,7 @@ type SettingsDataModelObjectAboutFormValues = z.infer<
|
|||||||
|
|
||||||
type SettingsDataModelObjectAboutFormProps = {
|
type SettingsDataModelObjectAboutFormProps = {
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
|
disableNameEdit?: boolean;
|
||||||
objectMetadataItem?: ObjectMetadataItem;
|
objectMetadataItem?: ObjectMetadataItem;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -46,6 +47,7 @@ const StyledInputContainer = styled.div`
|
|||||||
|
|
||||||
export const SettingsDataModelObjectAboutForm = ({
|
export const SettingsDataModelObjectAboutForm = ({
|
||||||
disabled,
|
disabled,
|
||||||
|
disableNameEdit,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
}: SettingsDataModelObjectAboutFormProps) => {
|
}: SettingsDataModelObjectAboutFormProps) => {
|
||||||
const { control } = useFormContext<SettingsDataModelObjectAboutFormValues>();
|
const { control } = useFormContext<SettingsDataModelObjectAboutFormValues>();
|
||||||
@ -93,7 +95,7 @@ export const SettingsDataModelObjectAboutForm = ({
|
|||||||
placeholder={placeholder}
|
placeholder={placeholder}
|
||||||
value={value}
|
value={value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
disabled={disabled}
|
disabled={disabled || disableNameEdit}
|
||||||
fullWidth
|
fullWidth
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -133,6 +133,7 @@ export const SettingsObjectEdit = () => {
|
|||||||
/>
|
/>
|
||||||
<SettingsDataModelObjectAboutForm
|
<SettingsDataModelObjectAboutForm
|
||||||
disabled={!activeObjectMetadataItem.isCustom}
|
disabled={!activeObjectMetadataItem.isCustom}
|
||||||
|
disableNameEdit
|
||||||
objectMetadataItem={activeObjectMetadataItem}
|
objectMetadataItem={activeObjectMetadataItem}
|
||||||
/>
|
/>
|
||||||
</Section>
|
</Section>
|
||||||
|
|||||||
@ -30,10 +30,8 @@ export class BeforeUpdateOneObject<T extends UpdateObjectPayload>
|
|||||||
// TODO: this logic could be moved to a policy guard
|
// TODO: this logic could be moved to a policy guard
|
||||||
async run(
|
async run(
|
||||||
instance: UpdateOneInputType<T>,
|
instance: UpdateOneInputType<T>,
|
||||||
context: any,
|
workspaceId: string,
|
||||||
): Promise<UpdateOneInputType<T>> {
|
): Promise<UpdateOneInputType<T>> {
|
||||||
const workspaceId = context?.req?.user?.workspace?.id;
|
|
||||||
|
|
||||||
if (!workspaceId) {
|
if (!workspaceId) {
|
||||||
throw new UnauthorizedException();
|
throw new UnauthorizedException();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import { ObjectMetadataResolver } from 'src/engine/metadata-modules/object-metad
|
|||||||
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
|
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
|
||||||
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
import { WorkspaceCacheVersionModule } from 'src/engine/metadata-modules/workspace-cache-version/workspace-cache-version.module';
|
import { WorkspaceCacheVersionModule } from 'src/engine/metadata-modules/workspace-cache-version/workspace-cache-version.module';
|
||||||
|
import { BeforeUpdateOneObject } from 'src/engine/metadata-modules/object-metadata/hooks/before-update-one-object.hook';
|
||||||
|
|
||||||
import { ObjectMetadataService } from './object-metadata.service';
|
import { ObjectMetadataService } from './object-metadata.service';
|
||||||
import { ObjectMetadataEntity } from './object-metadata.entity';
|
import { ObjectMetadataEntity } from './object-metadata.entity';
|
||||||
@ -65,7 +66,11 @@ import { ObjectMetadataDTO } from './dtos/object-metadata.dto';
|
|||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
providers: [ObjectMetadataService, ObjectMetadataResolver],
|
providers: [
|
||||||
|
ObjectMetadataService,
|
||||||
|
ObjectMetadataResolver,
|
||||||
|
BeforeUpdateOneObject,
|
||||||
|
],
|
||||||
exports: [ObjectMetadataService],
|
exports: [ObjectMetadataService],
|
||||||
})
|
})
|
||||||
export class ObjectMetadataModule {}
|
export class ObjectMetadataModule {}
|
||||||
|
|||||||
@ -7,12 +7,19 @@ import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
|
|||||||
import { ObjectMetadataDTO } from 'src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto';
|
import { ObjectMetadataDTO } from 'src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto';
|
||||||
import { DeleteOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/delete-object.input';
|
import { DeleteOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/delete-object.input';
|
||||||
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
|
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
|
||||||
import { UpdateOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input';
|
import {
|
||||||
|
UpdateObjectPayload,
|
||||||
|
UpdateOneObjectInput,
|
||||||
|
} from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input';
|
||||||
|
import { BeforeUpdateOneObject } from 'src/engine/metadata-modules/object-metadata/hooks/before-update-one-object.hook';
|
||||||
|
|
||||||
@UseGuards(JwtAuthGuard)
|
@UseGuards(JwtAuthGuard)
|
||||||
@Resolver(() => ObjectMetadataDTO)
|
@Resolver(() => ObjectMetadataDTO)
|
||||||
export class ObjectMetadataResolver {
|
export class ObjectMetadataResolver {
|
||||||
constructor(private readonly objectMetadataService: ObjectMetadataService) {}
|
constructor(
|
||||||
|
private readonly objectMetadataService: ObjectMetadataService,
|
||||||
|
private readonly beforeUpdateOneObject: BeforeUpdateOneObject<UpdateObjectPayload>,
|
||||||
|
) {}
|
||||||
|
|
||||||
@Mutation(() => ObjectMetadataDTO)
|
@Mutation(() => ObjectMetadataDTO)
|
||||||
deleteOneObject(
|
deleteOneObject(
|
||||||
@ -23,10 +30,12 @@ export class ObjectMetadataResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Mutation(() => ObjectMetadataDTO)
|
@Mutation(() => ObjectMetadataDTO)
|
||||||
updateOneObject(
|
async updateOneObject(
|
||||||
@Args('input') input: UpdateOneObjectInput,
|
@Args('input') input: UpdateOneObjectInput,
|
||||||
@AuthWorkspace() { id: workspaceId }: Workspace,
|
@AuthWorkspace() { id: workspaceId }: Workspace,
|
||||||
) {
|
) {
|
||||||
|
await this.beforeUpdateOneObject.run(input, workspaceId);
|
||||||
|
|
||||||
return this.objectMetadataService.updateOneObject(input, workspaceId);
|
return this.objectMetadataService.updateOneObject(input, workspaceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user