diff --git a/td.server/src/controllers/threatmodelcontroller.js b/td.server/src/controllers/threatmodelcontroller.js
index 93b99ecdb..2b1b78d7f 100644
--- a/td.server/src/controllers/threatmodelcontroller.js
+++ b/td.server/src/controllers/threatmodelcontroller.js
@@ -10,17 +10,18 @@ const repos = (req, res) => responseWrapper.sendResponseAsync(async () => {
const repository = repositories.get();
const page = req.query.page || 1;
+ const searchQuerys = req.query.searchQuery || [];
let reposResp;
let repos;
// backwardly compatible with previous use of env vars GITHUB_USE_SEARCH and GITHUB_SEARCH_QUERY
if (env.get().config.REPO_USE_SEARCH === 'true' || env.get().config.GITHUB_USE_SEARCH === 'true') {
logger.debug('Using searchAsync');
const searchQuery = env.get().config.REPO_SEARCH_QUERY ?? env.get().config.GITHUB_SEARCH_QUERY;
- reposResp = await repository.searchAsync(page, req.provider.access_token, searchQuery);
+ reposResp = await repository.searchAsync(page, req.provider.access_token, [searchQuery, ...searchQuerys]);
repos = reposResp[0].items ?? reposResp[0];
} else {
logger.debug('Using reposAsync');
- reposResp = await repository.reposAsync(page, req.provider.access_token);
+ reposResp = await repository.reposAsync(page, req.provider.access_token, [searchQuerys]);
repos = reposResp[0];
}
const headers = reposResp[1];
diff --git a/td.server/src/repositories/bitbucketrepo.js b/td.server/src/repositories/bitbucketrepo.js
index ecb5c0d06..a3ecf38ad 100644
--- a/td.server/src/repositories/bitbucketrepo.js
+++ b/td.server/src/repositories/bitbucketrepo.js
@@ -22,10 +22,10 @@ export const getClient = (accessToken) => {
return BitbucketClientWrapper.getClient(clientOptions);
};
-export const reposAsync = async (page, accessToken) => {
+export const reposAsync = async (page, accessToken, searchQuerys = []) => {
//Migrated
const workspace = env.get().config.BITBUCKET_WORKSPACE;
- const repos = await getClient(accessToken).repositories.list({workspace: workspace, page: page, pagelen: 10});
+ const repos = await getClient(accessToken).repositories.list({workspace: workspace, page: page, pagelen: 10, q: searchQuerys.join(' AND ')});
const responseRepos = repos.data.values.map((x) => {
const newX = {};
@@ -41,10 +41,10 @@ const hasNextPage = (response) => response.data.next !== undefined && response.d
const hasPreviousPage = (response) => response.data.previous !== undefined && response.data.previous !== null;
//Migrate searchAsync required
-const searchAsync = (page, accessToken, searchQuery) => getClient(accessToken).search().
+const searchAsync = (page, accessToken, searchQuerys) => getClient(accessToken).search().
reposAsync({
page: page,
- q: searchQuery
+ q: searchQuerys
});
export const userAsync = (accessToken) => getClient(accessToken).users.getAuthedUser();
diff --git a/td.server/src/repositories/githubrepo.js b/td.server/src/repositories/githubrepo.js
index 438cc94de..c7a513bca 100644
--- a/td.server/src/repositories/githubrepo.js
+++ b/td.server/src/repositories/githubrepo.js
@@ -20,8 +20,8 @@ const getClient = (accessToken) => {
const reposAsync = (page, accessToken) => getClient(accessToken).me().
reposAsync(page);
-const searchAsync = (page, accessToken, searchQuery) => getClient(accessToken).search().
- reposAsync({ page: page, q: searchQuery });
+const searchAsync = (page, accessToken, searchQuerys= []) => getClient(accessToken).search().
+ reposAsync({ page: page, q: searchQuerys });
const userAsync = async (accessToken) => {
diff --git a/td.server/src/repositories/gitlabrepo.js b/td.server/src/repositories/gitlabrepo.js
index cdde0a057..d11008195 100644
--- a/td.server/src/repositories/gitlabrepo.js
+++ b/td.server/src/repositories/gitlabrepo.js
@@ -23,7 +23,7 @@ export const getClient = (accessToken) => {
return GitlabClientWrapper.getClient(clientOptions.auth);
};
-export const reposAsync = (page, accessToken) => searchAsync(page, accessToken, undefined);
+export const reposAsync = (page, accessToken, searchQuerys = []) => searchAsync(page, accessToken, searchQuerys);
export const getPagination = (paginationInfo, page) => {
const pagination = {page, next: false, prev: false};
@@ -36,8 +36,8 @@ export const getPagination = (paginationInfo, page) => {
return pagination;
};
-export const searchAsync = async (page, accessToken, searchQuery) => {
- const repos = await getClient(accessToken).Projects.all({page: page, membership: true, showExpanded: true, search: searchQuery});
+export const searchAsync = async (page, accessToken, searchQuerys = []) => {
+ const repos = await getClient(accessToken).Projects.all({page: page, membership: true, showExpanded: true, search: searchQuerys.join('&')});
repos.data.map((repo) => {
repo.full_name = repo.path_with_namespace;
return repo;
diff --git a/td.vue/src/components/SelectionPage.vue b/td.vue/src/components/SelectionPage.vue
index c923dae14..de14ff39e 100644
--- a/td.vue/src/components/SelectionPage.vue
+++ b/td.vue/src/components/SelectionPage.vue
@@ -17,7 +17,7 @@
@@ -36,7 +36,7 @@
@click="onBackClick">
...
-
+
-
+
-
+