diff --git a/extensions/package-vulnerability-scanner/main.py b/extensions/package-vulnerability-scanner/main.py
index 33fd5394..902dfa17 100644
--- a/extensions/package-vulnerability-scanner/main.py
+++ b/extensions/package-vulnerability-scanner/main.py
@@ -7,7 +7,9 @@
client = connect.Client()
@app.get("/api/content")
-async def search_content(query: str = None):
+async def search_content(show_all: bool = False):
+ if show_all:
+ return client.content.find()
return client.me.content.find()
@app.get("/api/packages/{guid}")
diff --git a/extensions/package-vulnerability-scanner/manifest.json b/extensions/package-vulnerability-scanner/manifest.json
index a0315124..72e0b976 100644
--- a/extensions/package-vulnerability-scanner/manifest.json
+++ b/extensions/package-vulnerability-scanner/manifest.json
@@ -46,6 +46,6 @@
"requiredFeatures": [
"API Publishing"
],
- "version": "2.0.2"
+ "version": "3.0.2"
}
}
diff --git a/extensions/package-vulnerability-scanner/src/components/ContentList.vue b/extensions/package-vulnerability-scanner/src/components/ContentList.vue
index b43d13fa..f223c357 100644
--- a/extensions/package-vulnerability-scanner/src/components/ContentList.vue
+++ b/extensions/package-vulnerability-scanner/src/components/ContentList.vue
@@ -1,9 +1,11 @@
@@ -189,9 +207,25 @@ const userHeader = computed(() => {
-
- {{ userHeader }}
-
+
+
+ {{ userHeader }}
+
+
+
+
Found {{ scannerStore.content.length }} content items with
diff --git a/extensions/package-vulnerability-scanner/src/stores/content.ts b/extensions/package-vulnerability-scanner/src/stores/content.ts
index 427ac240..de8aee2a 100644
--- a/extensions/package-vulnerability-scanner/src/stores/content.ts
+++ b/extensions/package-vulnerability-scanner/src/stores/content.ts
@@ -20,20 +20,22 @@ export const useContentStore = defineStore("content", () => {
const contentList = ref([]);
const isLoading = ref(false);
const error = ref(null);
+ const showAllContent = ref(false);
- // Track if content has been loaded
+ // Track if content has been loaded for the current mode
const isContentLoaded = ref(false);
// Fetch all available content items
- async function fetchContentList() {
- // Skip if content is already loaded
- if (isContentLoaded.value && contentList.value.length > 0) return;
+ async function fetchContentList(forceRefresh: boolean = false) {
+ // Skip if content is already loaded for this mode (unless forcing refresh)
+ if (!forceRefresh && isContentLoaded.value && contentList.value.length > 0) return;
isLoading.value = true;
error.value = null;
try {
- const response = await fetch("api/content");
+ const url = showAllContent.value ? "api/content?show_all=true" : "api/content";
+ const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
@@ -57,6 +59,7 @@ export const useContentStore = defineStore("content", () => {
isLoading,
error,
isContentLoaded,
+ showAllContent,
// Actions
fetchContentList,
diff --git a/extensions/package-vulnerability-scanner/src/stores/packages.ts b/extensions/package-vulnerability-scanner/src/stores/packages.ts
index f89b80cd..43e61cfb 100644
--- a/extensions/package-vulnerability-scanner/src/stores/packages.ts
+++ b/extensions/package-vulnerability-scanner/src/stores/packages.ts
@@ -79,6 +79,10 @@ export const usePackagesStore = defineStore("packages", () => {
};
}
+ function clearAllPackages() {
+ contentItems.value = {};
+ }
+
return {
// State
contentItems,
@@ -88,5 +92,6 @@ export const usePackagesStore = defineStore("packages", () => {
// Actions
fetchPackagesForContent,
setPackagesForContent,
+ clearAllPackages,
};
});
diff --git a/extensions/package-vulnerability-scanner/src/stores/user.ts b/extensions/package-vulnerability-scanner/src/stores/user.ts
index a9d199b5..864a0798 100644
--- a/extensions/package-vulnerability-scanner/src/stores/user.ts
+++ b/extensions/package-vulnerability-scanner/src/stores/user.ts
@@ -1,4 +1,4 @@
-import { ref } from "vue";
+import { ref, computed } from "vue";
import { defineStore } from "pinia";
export interface User {
@@ -18,6 +18,8 @@ export interface User {
export const useUserStore = defineStore("user", () => {
const user = ref();
+ const isAdmin = computed(() => user.value?.user_role === "administrator");
+
async function fetchCurrentUser() {
const response = await fetch("api/user");
const data = await response.json();
@@ -27,6 +29,7 @@ export const useUserStore = defineStore("user", () => {
return {
user,
+ isAdmin,
fetchCurrentUser,
};