Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 6c87b856 authored by Jérôme Gorin's avatar Jérôme Gorin
Browse files

Add wildcard search

parent a8ecf7d1
No related branches found
No related tags found
No related merge requests found
......@@ -123,16 +123,17 @@ export class ApplicationDb {
this.getObjectStore().then(() => {
let evt = null;
let index1;
if (withIndex) {
if (this.objectStore) {
if (this.objectStore === undefined) {
reject();
return;
}
if (withIndex && this.objectStore.indexNames.contains(withIndex.index)) {
index1 = this.objectStore.index(withIndex.index);
evt = index1.openCursor(IDBKeyRange.only(withIndex.value));
}
} else {
if (this.objectStore) {
evt = this.objectStore.openCursor();
}
}
if (evt) {
evt.onerror = (event: any) => {
......
......@@ -15,6 +15,7 @@ export class CookieKnowledge extends Knowledge{
public policy: string = "";
public reference: string = "";
public comment: string = "";
public wildcard_match : number = 0;
constructor(){
super('cookie');
......
......@@ -7,7 +7,6 @@ import { Injectable } from '@angular/core';
import { KnowledgesService } from '../knowledges.service';
import { CookieKnowledge } from 'src/app/models/knowledges/cookie-knowledge.model';
import { Knowledge } from 'src/app/models/knowledge.model';
import { KnowledgeBase } from 'src/app/models/knowledgeBase.model';
export interface CookieSearch {
name_and_domain: CookieKnowledge[],
......@@ -24,7 +23,8 @@ export class CookieKnowledgesService extends KnowledgesService {
constructor() {
super('cookieKnowledge', [
{ indexName: 'index_domain', keyPath: 'domain', unique: false },
{ indexName: 'index_name', keyPath: 'name', unique: false }
{ indexName: 'index_name', keyPath: 'name', unique: false },
{ indexName: 'index_wildcard', keyPath: 'wildcard_match', unique: false }
]);
}
......@@ -34,14 +34,15 @@ export class CookieKnowledgesService extends KnowledgesService {
if (name){
searchPromises.push(this.findAllByName(name));
searchPromises.push(this.findAllByWildcardMatch(name));
}
if (domain){
searchPromises.push(this.findAllByDomain(domain));
}
Promise.all(searchPromises).then((allresults) => {
const searchName = allresults[0];
const searchDomain = allresults[1];
const searchName = allresults[0].concat(allresults[1]);
const searchDomain = allresults[2];
let name :any= [];
let name_and_domain :any= [];
......@@ -72,10 +73,7 @@ export class CookieKnowledgesService extends KnowledgesService {
});
}
/**
* List all Knowledge by base id
* @param baseId Id of base
*/
private async findAllByDomain(domain: string): Promise<Array<CookieKnowledge>> {
return new Promise((resolve, reject) => {
if (!domain)resolve([]);
......@@ -91,10 +89,7 @@ export class CookieKnowledgesService extends KnowledgesService {
});
}
/**
* List all Knowledge by base id
* @param baseId Id of base
*/
private async findAllByName(name: string): Promise<Array<CookieKnowledge>> {
return new Promise((resolve, reject) => {
if (!name)resolve([]);
......@@ -110,6 +105,22 @@ export class CookieKnowledgesService extends KnowledgesService {
});
}
private async findAllByWildcardMatch(name: string): Promise<Array<CookieKnowledge>> {
return new Promise((resolve, reject) => {
if (!name)resolve([]);
super
.findAll({ index: 'index_wildcard', value: 1 })
.then((result: any) => {
resolve(result.filter((x:CookieKnowledge) => new RegExp(x.name.replace(/\*/g, ".*")).test(name)));
})
.catch(error => {
console.error('Request failed', error);
reject();
});
});
}
override async update(knowledge: Knowledge): Promise<any> {
return new Promise((resolve, reject) => {
this.find(knowledge.id).then((entry: any) => {
......@@ -117,6 +128,13 @@ export class CookieKnowledgesService extends KnowledgesService {
const cookieKnowledge = knowledge as CookieKnowledge;
entry.domain = cookieKnowledge.domain;
entry.name = cookieKnowledge.name;
if (cookieKnowledge.name.includes("*")){
entry.wildcard_match = 1;
}else{
entry.wildcard_match = 0;
}
entry.source = cookieKnowledge.source;
entry.controller = cookieKnowledge.controller;
entry.policy = cookieKnowledge.policy;
......@@ -148,6 +166,13 @@ export class CookieKnowledgesService extends KnowledgesService {
const temp = new CookieKnowledge();
temp.domain = entry_cookie.domain;
temp.name = entry_cookie.name;
if (entry_cookie.name.includes("*")){
temp.wildcard_match = 1;
}else{
temp.wildcard_match = 0;
}
temp.source = entry_cookie.source;
temp.controller = entry_cookie.controller;
temp.policy = entry_cookie.policy;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment