Skip to content

Commit b079892

Browse files
authored
Merge pull request #2518 from ProgrammeVitam/fix-14357
Fix #14357: show schema delete button only on external schema on same tenant
2 parents 171c502 + d076741 commit b079892

File tree

5 files changed

+17
-3
lines changed

5 files changed

+17
-3
lines changed

api/api-referential/referential/src/main/java/fr/gouv/vitamui/referential/server/service/schema/SchemaModelToSchemaElementDtoConverter.java

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public class SchemaModelToSchemaElementDtoConverter extends StdConverter<SchemaR
4747
public SchemaElementDto convert(SchemaResponse schemaModel) {
4848
final SchemaStringSizeType stringTypeSize = schemaModel.getStringSize();
4949
final SchemaElementDto schemaElementDto = (SchemaElementDto) new SchemaElementDto()
50+
.setTenant(schemaModel.getTenant())
5051
.setPath(schemaModel.getPath())
5152
.setStringSize(Optional.ofNullable(stringTypeSize).map(SchemaStringSizeType::value).orElse(null))
5253
.setCardinality(Cardinality.of(schemaModel.getCardinality().value()))

ui/ui-frontend/projects/referential/src/app/ontology/ontology-group/schema-list/schema-list.component.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
<th mat-header-cell *matHeaderCellDef class="w-0"></th>
5858
<td mat-cell *matCellDef="let data">
5959
<button
60-
*ngIf="data.item.Origin === 'EXTERNAL'"
60+
*ngIf="canDelete(data.item)"
6161
class="btn btn-circle primary"
6262
(click)="delete(data)"
6363
(mouseover)="previewDelete(data.item)"

ui/ui-frontend/projects/referential/src/app/ontology/ontology-group/schema-list/schema-list.component.spec.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
3939
import { NO_ERRORS_SCHEMA } from '@angular/core';
4040
import { MatDialog } from '@angular/material/dialog';
4141
import { of } from 'rxjs';
42-
import { AuthService, BASE_URL, SchemaService } from 'vitamui-library';
42+
import { AuthService, BASE_URL, SchemaService, TenantSelectionService } from 'vitamui-library';
4343
import { SchemaListComponent } from './schema-list.component';
4444
import { TranslateModule } from '@ngx-translate/core';
4545

@@ -51,6 +51,12 @@ describe('SchemaListComponent', () => {
5151
getSchemaTreeByCategory: () => of(null),
5252
};
5353

54+
const tenantSelectionServiceMock = {
55+
getSelectedTenant: () => ({
56+
identifier: 1,
57+
}),
58+
};
59+
5460
beforeEach(async () => {
5561
await TestBed.configureTestingModule({
5662
declarations: [],
@@ -59,6 +65,7 @@ describe('SchemaListComponent', () => {
5965
{ provide: BASE_URL, useValue: '' },
6066
{ provide: MatDialog, useValue: {} },
6167
{ provide: SchemaService, useValue: schemaServiceMock },
68+
{ provide: TenantSelectionService, useValue: tenantSelectionServiceMock },
6269
{ provide: AuthService, useValue: { user: { proofTenantIdentifier: '1' } } },
6370
],
6471
schemas: [NO_ERRORS_SCHEMA],

ui/ui-frontend/projects/referential/src/app/ontology/ontology-group/schema-list/schema-list.component.ts

+6
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import {
4545
SchemaElement,
4646
SchemaService,
4747
TableFilterModule,
48+
TenantSelectionService,
4849
} from 'vitamui-library';
4950
import { TranslateModule, TranslateService } from '@ngx-translate/core';
5051
import { FlatTreeControl } from '@angular/cdk/tree';
@@ -89,6 +90,7 @@ export class SchemaListComponent implements OnInit, OnDestroy {
8990
public schemaService: SchemaService,
9091
private translateService: TranslateService,
9192
public dialog: MatDialog,
93+
private tenantSelectionService: TenantSelectionService,
9294
) {
9395
this.treeFlattener = new MatTreeFlattener(
9496
this.transformer,
@@ -202,6 +204,10 @@ export class SchemaListComponent implements OnInit, OnDestroy {
202204
return flatNode;
203205
};
204206

207+
canDelete(schemaElement: SchemaElement) {
208+
return schemaElement.Origin === 'EXTERNAL' && schemaElement.Tenant === this.tenantSelectionService.getSelectedTenant().identifier;
209+
}
210+
205211
delete(itemNode: ItemFlatNode<SchemaElement>) {
206212
const paths = [itemNode, ...this.treeControl.getDescendants(itemNode)].map((node) => node.item.Path);
207213
this.dialog

ui/ui-frontend/projects/vitamui-library/src/app/modules/models/schema/schema-element.model.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export interface SchemaElement extends WithPath {
5151
readonly Description?: string;
5252
readonly CreationDate?: string;
5353
readonly LastUpdate?: string;
54-
readonly TenantIds?: string[];
54+
readonly Tenant?: number;
5555
readonly StringSize?: 'SHORT' | 'MEDIUM' | 'LARGE';
5656
readonly Cardinality: Cardinality;
5757
readonly SedaVersions: SedaVersion[];

0 commit comments

Comments
 (0)