Skip to content

Commit 996b18e

Browse files
saved filter module
1 parent fc75088 commit 996b18e

File tree

7 files changed

+29
-39
lines changed

7 files changed

+29
-39
lines changed

opencti-platform/opencti-graphql/src/domain/user.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,7 @@ export const userDelete = async (context, user, userId) => {
940940
await deleteAllTriggerAndDigestByUser(userId);
941941
await deleteAllNotificationByUser(userId);
942942
await deleteAllWorkspaceForUser(context, user, userId);
943+
// TODO : delete saved filters
943944

944945
const deleted = await deleteElementById(context, user, userId, ENTITY_TYPE_USER);
945946
const actionEmail = ENABLED_DEMO_MODE ? REDACTED_USER.user_email : deleted.user_email;

opencti-platform/opencti-graphql/src/generated/graphql.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23519,13 +23519,12 @@ export type RuleTask = BackgroundTask & {
2351923519

2352023520
export type SavedFilter = BasicObject & InternalObject & {
2352123521
__typename?: 'SavedFilter';
23522-
created_at: Scalars['DateTime']['output'];
2352323522
entity_type: Scalars['String']['output'];
2352423523
filters: Scalars['String']['output'];
2352523524
id: Scalars['ID']['output'];
2352623525
name: Scalars['String']['output'];
2352723526
parent_types: Array<Maybe<Scalars['String']['output']>>;
23528-
scope?: Maybe<Array<Maybe<Scalars['String']['output']>>>;
23527+
scope: Scalars['String']['output'];
2352923528
standard_id: Scalars['String']['output'];
2353023529
};
2353123530

@@ -39808,13 +39807,12 @@ export type RuleTaskResolvers<ContextType = any, ParentType extends ResolversPar
3980839807
}>;
3980939808

3981039809
export type SavedFilterResolvers<ContextType = any, ParentType extends ResolversParentTypes['SavedFilter'] = ResolversParentTypes['SavedFilter']> = ResolversObject<{
39811-
created_at?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>;
3981239810
entity_type?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
3981339811
filters?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
3981439812
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
3981539813
name?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
3981639814
parent_types?: Resolver<Array<Maybe<ResolversTypes['String']>>, ParentType, ContextType>;
39817-
scope?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;
39815+
scope?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
3981839816
standard_id?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
3981939817
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
3982039818
}>;

opencti-platform/opencti-graphql/src/modules/savedFilter/savedFilter-converter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const convertSavedFiltersToStix = (instance: StoreEntitySavedFilter): StixSavedF
66
return {
77
...stixObject,
88
name: instance.name,
9-
filter: instance.filter,
9+
filters: instance.filters,
1010
scope: instance.scope,
1111
};
1212
};
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
1+
import { addFilter } from '../../utils/filtering/filtering-utils';
12
import { type BasicStoreEntitySavedFilter, ENTITY_TYPE_SAVED_FILTER, StoreEntitySavedFilter } from './savedFilter-types';
23
import type { AuthContext, AuthUser } from '../../types/user';
34
import { listEntitiesPaginated } from '../../database/middleware-loader';
45
import type { QuerySavedFiltersArgs, SavedFilterAddInput } from '../../generated/graphql';
56
import { createInternalObject, deleteInternalObject } from '../../domain/internalObject';
67

78
export const findAll = (context: AuthContext, user: AuthUser, args: QuerySavedFiltersArgs) => {
8-
return listEntitiesPaginated<BasicStoreEntitySavedFilter>(context, user, [ENTITY_TYPE_SAVED_FILTER], args);
9+
const queryFilters = addFilter(args.filters, 'creator_id', user.id);
10+
const queryArgs = { ...args, filters: queryFilters };
11+
return listEntitiesPaginated<BasicStoreEntitySavedFilter>(context, user, [ENTITY_TYPE_SAVED_FILTER], queryArgs);
912
};
1013
export const addSavedFilter = (context: AuthContext, user: AuthUser, input: SavedFilterAddInput) => {
1114
return createInternalObject<StoreEntitySavedFilter>(context, user, input, ENTITY_TYPE_SAVED_FILTER);
1215
};
1316
export const deleteSavedFilter = (context: AuthContext, user: AuthUser, savedFilterId: string) => {
17+
// TODO: vérifier que le filtre appartient bien à l'utilisateur
18+
// TODO: Vérifier la capa ByPass pour éviter de bloquer l'action d'un admin
19+
// TODO : add tests
1420
return deleteInternalObject(context, user, savedFilterId, ENTITY_TYPE_SAVED_FILTER);
1521
};

opencti-platform/opencti-graphql/src/modules/savedFilter/savedFilter-types.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,19 @@ import type { StixObject } from '../../types/stix-common';
44
export const ENTITY_TYPE_SAVED_FILTER = 'SavedFilter';
55

66
export interface BasicStoreEntitySavedFilter extends BasicStoreEntity {
7-
user: string
87
name: string
9-
filter: string
10-
scope: string[]
8+
filters: string
9+
scope: string
1110
}
1211

1312
export interface StoreEntitySavedFilter extends StoreEntity {
14-
user: string
1513
name: string
16-
filter: string
17-
scope: string[]
14+
filters: string
15+
scope: string
1816
}
1917

2018
export interface StixSavedFilter extends StixObject {
21-
user: string
2219
name: string
23-
filter: string
24-
scope: string[]
20+
filters: string
21+
scope: string
2522
}

opencti-platform/opencti-graphql/src/modules/savedFilter/savedFilter.graphql

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ type SavedFilter implements InternalObject & BasicObject {
66
# SavedFilters
77
name: String!
88
filters: String!
9-
scope: [String!]
10-
created_at: DateTime!
9+
scope: String!
1110
}
1211

1312
type SavedFilterEdge {
@@ -40,5 +39,4 @@ type Query {
4039
type Mutation {
4140
savedFilterAdd(input: SavedFilterAddInput!): SavedFilter @auth
4241
savedFilterDelete(id: ID!): ID @auth
43-
# savedFiltersDelete(): ID @auth
4442
}

opencti-platform/opencti-graphql/src/modules/savedFilter/savedFilter.ts

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { v4 as uuidv4 } from 'uuid';
2-
import { ENTITY_TYPE_USER } from 'src/schema/internalObject';
32
import convertSavedFiltersToStix from './savedFilter-converter';
43
import { ENTITY_TYPE_SAVED_FILTER, type StoreEntitySavedFilter, type StixSavedFilter } from './savedFilter-types';
54
import { ABSTRACT_INTERNAL_OBJECT } from '../../schema/general';
65
import { type ModuleDefinition, registerDefinition } from '../../schema/module';
76
import { isFeatureEnabled } from '../../config/conf';
7+
import { creators, createdAt } from '../../schema/attribute-definition';
88

99
const SAVED_FILTER_DEFINITION: ModuleDefinition<StoreEntitySavedFilter, StixSavedFilter> = {
1010
type: {
@@ -19,39 +19,29 @@ const SAVED_FILTER_DEFINITION: ModuleDefinition<StoreEntitySavedFilter, StixSave
1919
},
2020
},
2121
attributes: [
22-
{
23-
name: 'user',
24-
label: 'User',
25-
type: 'string',
26-
format: 'id',
27-
entityTypes: [ENTITY_TYPE_USER],
28-
mandatoryType: 'no',
29-
editDefault: false,
30-
multiple: false,
31-
upsert: true,
32-
isFilterable: true
33-
},
22+
creators,
23+
createdAt,
3424
{
3525
name: 'name',
3626
label: 'Name',
3727
type: 'string',
38-
format: 'short',
28+
format: 'text',
3929
mandatoryType: 'external',
4030
editDefault: false,
4131
multiple: false,
4232
upsert: false,
4333
isFilterable: true
4434
},
4535
{
46-
name: 'filter',
47-
label: 'Filter',
36+
name: 'filters',
37+
label: 'Filters',
4838
type: 'string',
49-
format: 'short',
39+
format: 'json',
5040
mandatoryType: 'external',
5141
editDefault: false,
52-
multiple: true,
42+
multiple: false,
5343
upsert: false,
54-
isFilterable: true
44+
isFilterable: false
5545
},
5646
{
5747
name: 'scope',
@@ -60,9 +50,9 @@ const SAVED_FILTER_DEFINITION: ModuleDefinition<StoreEntitySavedFilter, StixSave
6050
format: 'short',
6151
mandatoryType: 'external',
6252
editDefault: false,
63-
multiple: true,
53+
multiple: false,
6454
upsert: false,
65-
isFilterable: true
55+
isFilterable: false
6656
}
6757
],
6858
relations: [],

0 commit comments

Comments
 (0)