PageSourceSearch

https://report.ostorlab.co/_nuxt/BbvxyKAA.js

js ostorlab.co collected 2026-10-02 17:37:13 UTC 27,612 bytes, 71 lines download raw bytes

1import{S as q}from"./JBcyL6nI.js";import{U as I}from"./BRxYuIZ2.js";import{U as z}from"./BhJfXzvr.js";import{j as Q,g as j,a as L}from"./CnUJMEDP.js";import{U as N}from"./u3mHYVTa.js";import"./CHBmHQ0b.js";import"./Df9Fqs_l.js";import"./ClinoSA1.js";import{U as H}from"./bf1TkpW5.js";import"./BQF8roka.js";import"./B4HPuSoq.js";import{U as G}from"./D3MWzMF6.js";import{_ as $,r as f,o as h,a as b,d as s,e as r,ab as p,g as o,h as C,f as y,t as l,V as v,z as k,a3 as D,E as W,c as x,bI as J,a4 as A,aB as V,cA as U,cb as X}from"./Cwz_WouP.js";import{V as _}from"./DFGCUIv2.js";import{V as S}from"./BzmqKkR-.js";import{V as O}from"./CfgDvM8M.js";import{b as Z}from"./BEMJ86Yt.js";import{V as ee}from"./BrpG3shK.js";import{V as te}from"./BBor53VI.js";import{c as ie}from"./BaJcISE3.js";import{s as ae}from"./bEpG_e06.js";import{d as oe}from"./9Sj_QenJ.js";import{V as E}from"./CTdVocTC.js";import{V as ne}from"./B6rJkA9X.js";import"./DoerG4C7.js";import"./C3ryRQuw.js";import"./CY3mqz-c.js";import"./1xxwYsP6.js";import"./CK6wUuGO.js";import"./jg5gKZas.js";import"./BGe03BFN.js";import"./pzaisTap.js";import"./D6jW7_Es.js";import"./CX7KjjEi.js";import"./DMRzbDRC.js";import"./ClaOipeM.js";import"./3uNWqCd7.js";import"./CA_ukTPq.js";import"./DgXOY76Q.js";import"./a5WZRLWG.js";import"./CRBiUrO-.js";import"./U5qy42Yi.js";import"./DW2lbNFA.js";import"./B6ZByeEo.js";import"./EMO8Ef0j.js";import"./BBYmctqW.js";import"./BNbYv0Y6.js";import"./DOVH6SpZ.js";import"./D__jHXkW.js";import"./W-3E663_.js";import"./B8w0u1Rf.js";const re={name:"ApiKeyDialog",components:{SelectOwnerWithCreate:q,UiButton:I},props:{modelValue:{type:Boolean,default:!1},title:{type:String,required:!0},apiKey:{type:Object,default:null},permissions:{type:Array,required:!0},cancelButtonText:{type:String,default:"Cancel"},confirmButtonText:{type:String,default:"Confirm"},cancelIcon:{type:String,default:"mdi-close"},confirmIcon:{type:String,default:"mdi-check"},confirmButtonColor:{type:String,default:"success"},datePickerColor:{type:String,default:"accent"},loading:{type:Boolean,default:!1},noTitle:{type:Boolean,default:!1},scrollable:{type:Boolean,default:!1}},emits:["update:modelValue","cancel","confirm"],data(){return{form:{name:"",expiryDate:null,menu:!1,role:"reader",owners:[]}}},watch:{modelValue:{immediate:!0,handler(e){e&&this.initializeForm()}},apiKey:{immediate:!0,handler(){this.modelValue&&this.initializeForm()}},"form.expiryDate"(e){e instanceof Date&&(this.form.expiryDate=e.toISOString().substr(0,10))},"form.role"(e){e==="admin"&&(this.form.owners=[])}},methods:{initializeForm(){const e=this.$store?.state?.owners?.owners||[];if(this.apiKey!==null&&this.apiKey!==void 0){let t=null;if(this.apiKey.expiryDate!==null&&this.apiKey.expiryDate!==void 0){const n=new Date(this.apiKey.expiryDate);t=isNaN(n.getTime())===!0?null:n.toISOString().substr(0,10)}this.form={name:this.apiKey.name||"",expiryDate:t,menu:!1,role:this.apiKey.role?.toLowerCase()||"reader",owners:(this.apiKey.owners||[]).map(n=>e.find(m=>m.id===n.id)).filter(Boolean)}}else this.form={name:"",expiryDate:null,menu:!1,role:"reader",owners:[]}},handleCancel(){this.$emit("update:modelValue",!1),this.$emit("cancel")},handleConfirm(){const e=(this.form.owners||[]).filter(n=>n?.id).map(n=>Number(n.id)),t=this.form.expiryDate&&this.form.expiryDate.trim()!==""?this.form.expiryDate:null;this.$emit("confirm",{name:this.form.name,role:this.form.role,ownerIds:e,expiryDate:t})}}},se={class:"api-key-modal-header px-6 py-4 d-flex align-center justify-space-between border-b"},le={class:"d-flex align-center ga-3 overflow-hidden"},pe={class:"api-key-modal-icon-box flex-shrink-0 d-flex align-center justify-center"},de={class:"text-subtitle-1 font-weight-bold text-grey-darken-4 text-truncate mb-0"},ce={class:"api-key-modal-body px-6 py-4"},me={class:"mb-4"},ue={class:"text-caption font-weight-bold text-grey-darken-3 mb-1 d-block"},ye={class:"mb-4"},ge={class:"text-caption font-weight-bold text-grey-darken-3 mb-1 d-block"},fe={class:"text-caption text-grey-darken-1 mt-1 d-block"},he={class:"mb-4"},we={class:"text-caption font-weight-bold text-grey-darken-3 mb-1 d-block"},be={class:"d-flex justify-end ga-2 pt-2 border-top"},Ke={class:"text-caption text-grey-darken-1 mt-1 d-block"},xe={class:"mb-2"},ke={class:"text-caption font-weight-bold text-grey-darken-3 mb-1 d-block"},De={class:"text-caption text-grey-darken-1 mt-1 d-block"},Ae={class:"api-key-modal-actions px-6 py-3 bg-grey-lighten-5 border-t d-flex align-center justify-end ga-2"};function Ce(e,t,n,m,i,a){const u=f("UiButton"),g=f("SelectOwnerWithCreate");return h(),b(te,{"model-value":n.modelValue,"max-width":"560px",class:"api-key-dialog","onUpdate:modelValue":t[9]||(t[9]=c=>e.$emit("update:modelValue",c))},{default:s(()=>[r(_,{class:"api-key-modal-card rounded-md border",elevation:"4"},{default:s(()=>[p(" Modal Header "),o("div",se,[o("div",le,[o("div",pe,[r(C,{size:"20",color:"grey-darken-3"},{default:s(()=>[...t[10]||(t[10]=[y("mdi-key-outline",-1)])]),_:1})]),o("h3",de,l(n.title),1)]),r(v,{icon:"mdi-close",variant:"text",size:"x-small",color:"grey-darken-1",class:"flex-shrink-0","aria-label":e.$t("components.api.ApiKeyDialog.buttons.close"),onClick:a.handleCancel},null,8,["aria-label","onClick"])]),p(" Modal Body "),o("div",ce,[p(" Key Name "),o("div",me,[o("label",ue,l(e.$t("components.api.ApiKeyDialog.labels.name")),1),r(S,{modelValue:i.form.name,"onUpdate:modelValue":t[0]||(t[0]=c=>i.form.name=c),density:"compact",variant:"outlined",rounded:"md",color:"accent","prepend-inner-icon":"mdi-form-textbox",placeholder:e.$t("components.api.ApiKeyDialog.hints.name"),required:"",rules:[c=>!!c||e.$t("components.api.ApiKeyDialog.errors.nameRequired")],"hide-details":"auto"},null,8,["modelValue","placeholder","rules"])]),p(" Role Select "),o("div",ye,[o("label",ge,l(e.$t("components.api.ApiKeyDialog.labels.role")),1),r(O,{modelValue:i.form.role,"onUpdate:modelValue":t[1]||(t[1]=c=>i.form.role=c),items:n.permissions,"item-title":"title","item-value":"key",density:"compact",variant:"outlined",rounded:"md",color:"accent","prepend-inner-icon":"mdi-shield-account-outline",required:"",rules:[c=>!!c||e.$t("components.api.ApiKeyDialog.errors.roleRequired")],"hide-details":"auto"},null,8,["modelValue","items","rules"]),o("span",fe,l(e.$t("components.api.ApiKeyDialog.hints.role")),1)]),p(" Expiry Date Menu "),o("div",he,[o("label",we,l(e.$t("components.api.ApiKeyDialog.labels.expiry")),1),r(Z,{modelValue:i.form.menu,"onUpdate:modelValue":t[7]||(t[7]=c=>i.form.menu=c),"close-on-content-click":!1,transition:"scale-transition",location:"bottom","min-width":"0"},{activator:s(({props:c})=>[r(S,k({modelValue:i.form.expiryDate,"onUpdate:modelValue":t[2]||(t[2]=K=>i.form.expiryDate=K),readonly:"",density:"compact",variant:"outlined",rounded:"md",color:"accent",clearable:"","prepend-inner-icon":"mdi-calendar-outline",placeholder:e.$t("components.api.ApiKeyDialog.hints.expiry")},c,{"hide-details":!0,"onClick:clear":t[3]||(t[3]=K=>i.form.expiryDate=null)}),null,16,["modelValue","placeholder"])]),default:s(()=>[r(_,{class:"rounded-md border pa-2",elevation:"4"},{default:s(()=>[r(ee,{modelValue:i.form.expiryDate,"onUpdate:modelValue":t[4]||(t[4]=c=>i.form.expiryDate=c),scrollable:n.scrollable,min:new Date().toISOString().substr(0,10),color:"accent",elevation:"0"},null,8,["modelValue","scrollable","min"]),o("div",be,[r(u,{intent:"cancel",size:"small",onClick:t[5]||(t[5]=c=>i.form.menu=!1)},{default:s(()=>[y(l(e.$t("components.api.ApiKeyDialog.buttons.cancel")),1)]),_:1}),r(u,{intent:"neutral",size:"small",onClick:t[6]||(t[6]=c=>i.form.menu=!1)},{default:s(()=>[y(l(e.$t("components.api.ApiKeyDialog.buttons.ok")),1)]),_:1})])]),_:1})]),_:1},8,["modelValue"]),o("span",Ke,l(e.$t("components.api.ApiKeyDialog.hints.expiry")),1)]),p(" Owners (disabled if admin) "),o("div",xe,[o("label",ke,l(e.$t("components.api.ApiKeyDialog.labels.owners")),1),r(g,{modelValue:i.form.owners,"onUpdate:modelValue":t[8]||(t[8]=c=>i.form.owners=c),label:e.$t("components.api.ApiKeyDialog.labels.owners"),multiple:"",density:"compact",variant:"outlined",rounded:"md",color:"accent",disabled:i.form.role==="admin"},null,8,["modelValue","label","disabled"]),o("span",De,l(i.form.role==="admin"?e.$t("components.api.ApiKeyDialog.hints.ownersAdmin"):e.$t("components.api.ApiKeyDialog.hints.ownersGeneral")),1)])]),p(" Modal Footer "),o("div",Ae,[r(u,{intent:"cancel","prepend-icon":n.cancelIcon,onClick:a.handleCancel},{default:s(()=>[y(l(n.cancelButtonText),1)]),_:1}
1,8,["prepend-icon","onClick"]),r(u,{intent:"success","prepend-icon":n.confirmIcon,disabled:!i.form.name||!i.form.role,loading:n.loading,onClick:a.handleConfirm},{default:s(()=>[y(l(n.confirmButtonText),1)]),_:1},8,["prepend-icon","disabled","loading","onClick"])])]),_:1})]),_:1},8,["model-value"])}const B=Object.assign($(re,[["render",Ce],["__scopeId","data-v-e90e9c57"]]),{__name:"ApiKeyDialog"}),ve=D`
2  query GetApiKeys($page: Int, $numberElements: Int, $searches: [String], $prefixes: [String]) {
3    apiKeys(page: $page, numberElements: $numberElements, searches: $searches, prefixes: $prefixes) {
4      pageInfo {
5        count
6        numPages
7      }
8      apiKeys {
9        id
10        name
11        created
12        expiryDate
13        prefix
14        role
15        owners {
16          id
17        }
18      }
19    }
20  }
21`,_e=D`
22  mutation RevokeApiKey($apiKeyId: String!) {
23    revokeApiKey(apiKeyId: $apiKeyId) {
24      result
25    }
26  }
27`,Se=D`
28  mutation CreateApiKey($name: String!, $expiryDate: DateTime, $role: String!, $ownerIds: [Int!]) {
29    createApiKey(name: $name, expiryDate: $expiryDate, role: $role, ownerIds: $ownerIds) {
30      apiKey {
31        apiKey {
32          id
33          name
34          created
35          expiryDate
36          prefix
37          role
38        }
39        secretKey
40      }
41    }
42  }
43`,$e=D`
44  mutation UpdateApiKey(
45    $apiKeyId: String!
46    $name: String
47    $expiryDate: DateTime
48    $role: String
49    $ownerIds: [Int!]
50  ) {
51    updateApiKey(
52      apiKeyId: $apiKeyId
53      name: $name
54      expiryDate: $expiryDate
55      role: $role
56      ownerIds: $ownerIds
57    ) {
58      apiKey {
59        id
60        name
61        created
62        expiryDate
63        prefix
64        role
65        owners {
66          id
67        }
68      }
69    }
70  }
71`;class Ve{constructor(t){this.$axios=t}async getApiKeys({page:t,numberElements:n,searches:m,prefixes:i}){t==null&&(t=0),(n===void 0||n==null)&&(n=10);const a=await this.$axios.post("/apis/graphql",{query:ve,variables:{page:t,numberElements:n,searches:m,prefixes:i}});if(a.data?.errors?.length>0)throw new Error(a.data?.errors[0]?.message);return a?.data?.data?.apiKeys||[]}async revokeApiKey(t){return(await this.$axios.post("/apis/graphql",{query:_e,variables:{apiKeyId:t}})).data.data.revokeApiKey}async createApiKey(t,n,m,i){let a=null;return i!=null&&(a=new Date(i).toISOString()),(await this.$axios.post("/apis/graphql",{query:Se,variables:{name:t,role:n,ownerIds:m?.length?m:[],expiryDate:a}})).data.data.createApiKey.apiKey}async updateApiKey(t,{name:n,expiryDate:m,role:i,ownerIds:a}){let u=null;m!=null&&(u=new Date(m).toISOString());const g={apiKeyId:t};return n!=null&&(g.name=n),m!=null&&(g.expiryDate=u),i!=null&&(g.role=i),a!=null&&(g.ownerIds=a?.length?a:[]),(await this.$axios.post("/apis/graphql",{query:$e,variables:g})).data.data.updateApiKey}}const Ue=W({name:"CollapsibleOwners",components:{UiCollapsibleOwners:Q},props:{owners:{type:Array,default:()=>[]},showAllOwners:{type:Boolean,default:!1}},emits:["update:showAllOwners"]});function Ee(e,t,n,m,i,a){const u=f("UiCollapsibleOwners");return h(),b(u,{owners:e.owners,"show-all-owners":e.showAllOwners,"onUpdate:showAllOwners":t[0]||(t[0]=g=>e.$emit("update:showAllOwners",g))},null,8,["owners","show-all-owners"])}const Ie=Object.assign($(Ue,[["render",Ee]]),{__name:"ApiCollapsibleOwners"});oe({searchComponent:X.ApiKeysSimpleSearch});const Oe={name:"ApiKeys",components:{ApiKeyDialog:B,CollapsibleOwners:Ie,UiPageHeader:N,UiCard:z,UiButton:I,UiConfirmModal:G,UiAlert:L,UiCopyButton:j,UiEmptyState:H},mixins:[ie,ae],title:"Api Keys",data(){return{apiKeysService:new Ve(this.$axios),apiKeys:[],loading:!1,revoking:!1,creatingOrUpdating:!1,options:{page:1,itemsPerPage:10},pagination:{count:0},searchQuery:"",selectedRole:null,localFilters:{search:null,role:null},deleteDialog:!1,createDialog:!1,editDialog:!1,apiKeyToDelete:null,apiKeyToEdit:null,newApiKeySecret:null,showAllOwners:!1}},mounted(){this.$store?.commit("contextui/setTitle",this.$t("pages.integrations.api.title"))},computed:{headers(){return[{title:this.$t("pages.integrations.api.table.headers.name"),key:"name",sortable:!1},{title:this.$t("pages.integrations.api.table.headers.role"),key:"role",sortable:!1},{title:this.$t("pages.integrations.api.table.headers.prefix"),key:"prefix",sortable:!1},{title:this.$t("pages.integrations.api.table.headers.expiry"),key:"expiryDate",sortable:!1},{title:this.$t("pages.integrations.api.table.headers.owners"),key:"owners",sortable:!1,width:340},{title:this.$t("pages.integrations.api.table.headers.actions"),key:"actions",sortable:!1,align:"end",width:110}]},permissions(){return[{title:this.$t("pages.integrations.api.permissions.reader"),key:"reader"},{title:this.$t("pages.integrations.api.permissions.user"),key:"user"},{title:this.$t("pages.integrations.api.permissions.auditor"),key:"attack_surface_auditor"},{title:this.$t("pages.integrations.api.permissions.admin"),key:"admin"}]},roleFilterItems(){return[{key:null,title:this.$t("pages.integrations.api.filterBar.rolePlaceholder")},...this.permissions]},apiKeyForEdit(){return this.apiKeyToEdit&&this.apiKeyToEdit.apiKey?this.apiKeyToEdit.apiKey:this.apiKeyToEdit||null},filterValues(){return this.$store?.getters["searchStore/filterValues"]||[]},hasActiveFilters(){return!!(this.searchQuery&&this.searchQuery.trim()!==""||this.localFilters.search||this.selectedRole)},fetchOptions(){const e=[];this.localFilters.search&&e.push(this.localFilters.search);const t=U(this.filterValues,"search");return t?.length&&e.push(...t),{page:this.options.page,numberElements:this.options.itemsPerPage,searches:e.length?e:void 0,prefixes:U(this.filterValues,"prefix")}},filteredApiKeys(){return this.selectedRole?this.apiKeys.filter(e=>e?.apiKey?.role?.toLowerCase()===this.selectedRole?.toLowerCase()):this.apiKeys},formattedTotalKeys(){return this.pagination?.count??this.apiKeys?.length??0},allOwners(){return this.$store?.getters["owners/owners"]||[]}},watch:{fetchOptions:{immediate:!0,deep:!0,handler(){this.fetchApiKeys()}}},methods:{async fetchApiKeys(){this.loading=!0;try{const e=await this.apiKeysService.getApiKeys(this.fetchOptions);this.apiKeys=Array.isArray(e.apiKeys)?e.apiKeys.map(t=>({apiKey:t})):[],this.pagination.count=e.pageInfo&&e.pageInfo.count?e.pageInfo.count:0}catch(e){await this.$store?.dispatch("contextui/reportError",e?.message||this.$t("pages.integrations.api.errors.fetchFail"))}finally{this.loading=!1}},triggerSearch(){this.options.page=1,this.localFilters.search=this.searchQuery?.trim()||null,this.fetchApiKeys()},clearSearch(){this.searchQuery="",this.triggerSearch()},clearAllFilters(){this.searchQuery="",this.selectedRole=null,this.localFilters.search=null,this.localFilters.role=null,this.options.page=1,this.fetchApiKeys()},openCreateDialog(){this.createDialog=!0},closeCreateDialog(){this.createDialog=!1,this.newApiKeySecret=null},async confirmCreateApiKey(e){this.creatingOrUpdating=!0;try{const t=await this.apiKeysService.createApiKey(e.name,e.role,e.ownerIds,e.expiryDate);this.newApiKeySecret=t.secretKey,this.createDialog=!1,await this.fetchApiKeys()}catch(t){await this.$store?.dispatch("contextui/reportError",t?.message||this.$t("pages.integrations.api.errors.createFail"))}finally{this.creatingOrUpdating=!1}},openEditDialog(e){this.apiKeyToEdit=e,this.editDialog=!0},async confirmEditApiKey(e){const t=this.apiKeyToEdit?.apiKey?.id||this.apiKeyToEdit?.id;if(t){this.creatingOrUpdating=!0;try{await this.apiKeysService.updateApiKey(t,e),this.editDialog=!1,await this.fetchApiKeys()}catch(n){await this.$store?.dispatch("contextui/reportError",n?.message||this.$t("pages.integrations.api.errors.updateFail"))}finally{this.creatingOrUpdating=!1,this.apiKeyToEdit=null}}},deleteApiKey(e){this.apiKeyToDelete=e,this.deleteDialog=!0},async confirmDeleteApiKey(){const e=this.apiKeyToDelete?.apiKey?.id||this.apiKeyToDelete?.id;if(e){this.revoking=!0;try{await this.apiKeysService.revokeApiKey(e),this.deleteDialog=!1,await this.fetchApiKeys()}catch(t){await this.$store?.dispatch("contextui/reportError",t?.message||this.$t("pages.integrations.api.errors.revokeFail"))}finally{this.revoking=!1,this.apiKeyToDelete=null}}},formatCreatedDate(e){return e?this.$moment?this.$moment(e).format("MMM D, YYYY"):new Date(e).toLocaleDateString():"—"},getFormattedExpiryDate(e){return e?this.$moment?this.$moment(e).format("MMM D, YYYY"):new Date(e).toLocaleDateString():"—"},formatFullDate(e){return e?this.$moment?this.$moment(e).format("MMMM Do YYYY, h:mm:ss A"):new Date(e).toLocaleStr
71ing():"—"},isExpired(e){return e?new Date(e).getTime()<Date.now():!1},getRoleStatusIntent(e){if(!e)return"neutral";const t=e.toLowerCase();return t==="admin"?"warning":t==="attack_surface_auditor"||t==="auditor"?"info":t==="user"?"success":"neutral"},getRoleIcon(e){if(!e)return"mdi-shield-outline";const t=e.toLowerCase();return t==="admin"?"mdi-shield-crown-outline":t==="attack_surface_auditor"||t==="auditor"?"mdi-shield-search-outline":t==="user"?"mdi-account-outline":"mdi-eye-outline"},formatRole(e){if(!e)return"-";const t=e.toLowerCase(),n=this.permissions.find(m=>m.key===t);return n?n.title:e.replace(/_/g," ").replace(/\b\w/g,m=>m.toUpperCase())},getMappedOwners(e){return(e||[]).map(t=>this.allOwners.find(n=>n.id===t.id)).filter(Boolean)}}},Be={class:"api-keys-page py-4 px-2 px-md-4"},Te={class:"d-flex flex-column ga-2 mt-1"},Fe={class:"text-body-2 text-grey-darken-3"},Me={class:"d-flex align-center ga-2 flex-wrap mt-1"},Re={class:"secret-token-box font-mono px-3 py-1.5 rounded-md text-body-2"},Pe={class:"d-flex flex-wrap align-center justify-space-between ga-3 filter-toolbar"},Ye={class:"d-flex flex-wrap align-center ga-2 flex-grow-1 min-w-0"},qe={class:"api-key-row"},ze={class:"py-3 px-4"},Qe={class:"d-flex align-center ga-3"},je={class:"key-icon-wrapper flex-shrink-0"},Le={class:"min-w-0 d-flex flex-column"},Ne={class:"text-body-2 font-weight-bold text-grey-darken-4 text-truncate"},He={key:0,class:"text-caption text-grey-darken-1"},Ge={class:"py-3 px-4"},We={class:"d-inline-flex align-center text-body-2 font-weight-medium text-grey-darken-3"},Je={class:"py-3 px-4"},Xe={class:"d-flex align-center ga-2 font-mono text-body-2 text-grey-darken-3"},Ze={class:"prefix-badge px-2 py-0.5 rounded bg-grey-lighten-4 border"},et={class:"py-3 px-4"},tt={key:0,class:"d-flex align-center ga-2"},it={key:1,class:"text-grey-darken-1 text-body-2"},at={class:"py-3 px-4"},ot={class:"d-flex align-center justify-end ga-1"},nt={class:"pa-8"},rt={class:"d-flex align-center ga-3 mt-2"};function st(e,t,n,m,i,a){const u=f("UiButton"),g=f("UiPageHeader"),c=f("UiConfirmModal"),K=B,T=f("UiCopyButton"),F=f("UiAlert"),M=f("CollapsibleOwners"),R=f("UiEmptyState"),P=f("UiCard");return h(),x("div",Be,[p(" Header Section "),r(g,{title:e.$t("pages.integrations.api.title"),subtitle:e.$t("pages.integrations.api.subtitle"),icon:"mdi-key-outline",class:"mb-4"},{"title-append":s(()=>[i.loading?p("",!0):(h(),b(E,{key:0,size:"small",color:"grey-lighten-3",class:"text-grey-darken-3 font-weight-bold"},{default:s(()=>[y(l(a.formattedTotalKeys)+" "+l(e.$t("pages.integrations.api.keysCount")),1)]),_:1}))]),actions:s(()=>[r(u,{intent:"neutral","prepend-icon":"mdi-key-plus",onClick:a.openCreateDialog},{default:s(()=>[y(l(e.$t("pages.integrations.api.buttons.newApiKey")),1)]),_:1},8,["onClick"])]),_:1},8,["title","subtitle"]),p(" Revoke Confirmation Modal "),r(c,{modelValue:i.deleteDialog,"onUpdate:modelValue":t[0]||(t[0]=d=>i.deleteDialog=d),intent:"danger",title:e.$t("pages.integrations.api.confirmations.revoke.title"),description:e.$t("pages.integrations.api.confirmations.revoke.description"),"confirm-text":e.$t("pages.integrations.api.confirmations.revoke.confirm"),"cancel-text":e.$t("pages.integrations.api.confirmations.revoke.cancel"),"confirm-icon":"mdi-key-remove","cancel-icon":"mdi-close",loading:i.revoking,onConfirm:a.confirmDeleteApiKey,onCancel:t[1]||(t[1]=d=>i.deleteDialog=!1)},null,8,["modelValue","title","description","confirm-text","cancel-text","loading","onConfirm"]),p(" Create API Key Dialog "),r(K,{modelValue:i.createDialog,"onUpdate:modelValue":t[2]||(t[2]=d=>i.createDialog=d),title:e.$t("pages.integrations.api.dialogs.create.title"),permissions:a.permissions,"cancel-button-text":e.$t("pages.integrations.api.dialogs.create.cancel"),"confirm-button-text":e.$t("pages.integrations.api.dialogs.create.confirm"),loading:i.creatingOrUpdating,"cancel-icon":"mdi-close","confirm-icon":"mdi-check",scrollable:"",onConfirm:a.confirmCreateApiKey,onCancel:a.closeCreateDialog},null,8,["modelValue","title","permissions","cancel-button-text","confirm-button-text","loading","onConfirm","onCancel"]),p(" Edit API Key Dialog "),r(K,{modelValue:i.editDialog,"onUpdate:modelValue":t[3]||(t[3]=d=>i.editDialog=d),title:e.$t("pages.integrations.api.dialogs.edit.title"),"api-key":a.apiKeyForEdit,permissions:a.permissions,"cancel-button-text":e.$t("pages.integrations.api.dialogs.edit.cancel"),"confirm-button-text":e.$t("pages.integrations.api.dialogs.edit.confirm"),loading:i.creatingOrUpdating,"cancel-icon":"mdi-close","confirm-icon":"mdi-check",scrollable:"",onConfirm:a.confirmEditApiKey,onCancel:t[4]||(t[4]=d=>i.editDialog=!1)},null,8,["modelValue","title","api-key","permissions","cancel-button-text","confirm-button-text","loading","onConfirm"]),p(" Secret Key Display Banner "),i.newApiKeySecret?(h(),b(F,{key:0,t
71ype:"success",variant:"subtle",closable:"",class:"mb-4",onClose:t[5]||(t[5]=d=>i.newApiKeySecret=null)},{title:s(()=>[y(l(e.$t("pages.integrations.api.alerts.copySecretTitle")),1)]),default:s(()=>[o("div",Te,[o("span",Fe,l(e.$t("pages.integrations.api.alerts.copySecret")),1),o("div",Me,[o("code",Re,l(i.newApiKeySecret),1),r(T,{text:i.newApiKeySecret,label:e.$t("pages.integrations.api.alerts.copyToken"),size:"small",variant:"elevated"},null,8,["text","label"])])])]),_:1})):p("",!0),p(" Search & Filter Bar "),r(_,{variant:"flat",class:"rounded-md border pa-3 mb-4 bg-grey-lighten-5"},{default:s(()=>[o("div",Pe,[o("div",Ye,[p(" Search input "),r(S,{modelValue:i.searchQuery,"onUpdate:modelValue":t[6]||(t[6]=d=>i.searchQuery=d),density:"compact",variant:"outlined",rounded:"md",color:"accent","prepend-inner-icon":"mdi-magnify",placeholder:e.$t("pages.integrations.api.filterBar.searchPlaceholder"),clearable:"","hide-details":!0,class:"filter-input-search",style:{"min-width":"240px","max-width":"360px"},onKeyup:J(a.triggerSearch,["enter"]),"onClick:clear":a.clearSearch},null,8,["modelValue","placeholder","onKeyup","onClick:clear"]),p(" Role Filter "),r(O,{modelValue:i.selectedRole,"onUpdate:modelValue":t[7]||(t[7]=d=>i.selectedRole=d),items:a.roleFilterItems,"item-title":"title","item-value":"key",density:"compact",variant:"outlined",rounded:"md",color:"accent",clearable:"",placeholder:e.$t("pages.integrations.api.filterBar.rolePlaceholder"),"hide-details":!0,class:"filter-input-role",style:{"min-width":"170px","max-width":"220px"}},null,8,["modelValue","items","placeholder"]),p(" Search Button "),r(u,{intent:"neutral","prepend-icon":"mdi-magnify",class:"filter-btn",onClick:a.triggerSearch},{default:s(()=>[y(l(e.$t("pages.integrations.api.filterBar.search")),1)]),_:1},8,["onClick"]),p(" Clear Filters Button "),a.hasActiveFilters?(h(),b(u,{key:0,intent:"secondary","prepend-icon":"mdi-filter-off-outline",class:"filter-btn",onClick:a.clearAllFilters},{default:s(()=>[y(l(e.$t("pages.integrations.api.filterBar.clearFilters")),1)]),_:1},8,["onClick"])):p("",!0)])])]),_:1}),p(" Table Container "),r(P,{"no-padding":"",class:"overflow-hidden"},{default:s(()=>[r(ne,{headers:a.headers,items:a.filteredApiKeys,options:i.options,"onUpdate:options":t[11]||(t[11]=d=>i.options=d),"items-length":i.pagination.count||0,loading:i.loading,"items-per-page-options":[10,25,50,100],class:"api-keys-table"},{item:s(({item:d})=>[o("tr",qe,[p(" Name Column "),o("td",ze,[o("div",Qe,[o("div",je,[r(C,{size:"18",color:"grey-darken-3"},{default:s(()=>[...t[12]||(t[12]=[y("mdi-key-variant",-1)])]),_:1})]),o("div",Le,[o("span",Ne,l(d.apiKey?.name||"-"),1),d.apiKey?.created?(h(),x("span",He,l(e.$t("pages.integrations.api.table.created"))+": "+l(a.formatCreatedDate(d.apiKey.created)),1)):p("",!0)])])]),p(" Role Column "),o("td",Ge,[o("div",We,[r(C,{size:"15",class:"me-2 text-grey-darken-1"},{default:s(()=>[y(l(a.getRoleIcon(d.apiKey?.role)),1)]),_:2},1024),o("span",null,l(a.formatRole(d.apiKey?.role)),1)])]),p(" Prefix Column "),o("td",Je,[o("div",Xe,[o("span",Ze,l(d.apiKey?.prefix||"-"),1),t[13]||(t[13]=o("span",{class:"text-grey-darken-1 text-caption"},"••••••••••••",-1))])]),p(" Expiry Column "),o("td",et,[d.apiKey?.expiryDate?(h(),x("div",tt,[r(A,{location:"top",text:a.formatFullDate(d.apiKey.expiryDate)},{activator:s(({props:w})=>[o("span",k(w,{class:"text-body-2 text-grey-darken-3"}),l(a.getFormattedExpiryDate(d.apiKey.expiryDate)),17)]),_:2},1032,["text"]),a.isExpired(d.apiKey.expiryDate)?(h(),b(E,{key:0,size:"small",color:"error",variant:"flat",class:"font-weight-bold rounded-md px-2"},{default:s(()=>[y(l(e.$t("pages.integrations.api.table.expired")),1)]),_:1})):p("",!0)])):(h(),x("span",it,l(e.$t("pages.integrations.api.table.never")),1))]),p(" Owners Column "),o("td",at,[r(M,{owners:a.getMappedOwners(d.apiKey?.owners||[]),"show-all-owners":i.showAllOwners,"onUpdate:showAllOwners":t[8]||(t[8]=w=>i.showAllOwners=w)},null,8,["owners","show-all-owners"])]),p(" Actions Column "),o("td",{class:"py-3 px-4 text-end",onClick:t[9]||(t[9]=V(()=>{},["stop"])),onMouseup:t[10]||(t[10]=V(()=>{},["stop"]))},[o("div",ot,[r(A,{location:"top",text:e.$t("pages.integrations.api.table.actions.edit")},{activator:s(({props:w})=>[r(v,k(w,{variant:"text",density:"compact",icon:"mdi-pencil-outline",size:"small",color:"grey-darken-3",class:"action-btn-edit",onClick:Y=>a.openEditDialog(d)}),null,16,["onClick"])]),_:2},1032,["text"]),r(A,{location:"top",text:e.$t("pages.integrations.api.table.actions.revoke")},{activator:s(({props:w})=>[r(v,k(w,{variant:"text",density:"compact",icon:"mdi-trash-can-outline",size:"small",color:"error",class:"action-btn-revoke",onClick:Y=>a.deleteApiKey(d)}),null,16,["onClick"])]),_:2},1032,["text"])])],32)])]),"no-data":s(()=>[o("div",nt,[r(R,{icon:"mdi-shield-key-outline",title:e.$t("pages.integrations.api.emptyState.title"),description:e.$t("pages.integrations.api.emptyState.message"),"action-text":e.$t("pages.integrations.api.emptyState.create"),"action-icon":"mdi-key-plus","action-intent":"neutral",onAction:a.openCreateDialog},{actions:s(()=>[o("div",rt,[r(u,{intent:"neutral","prepend-icon":"mdi-key-plus",onClick:a.openCreateDialog},{default:s(()=>[y(l(e.$t("pages.integrations.api.emptyState.create")),1)]),_:1}
71,8,["onClick"]),r(u,{intent:"secondary","prepend-icon":"mdi-book-open-outline",href:"https://docs.ostorlab.co/api/",target:"_blank"},{default:s(()=>[y(l(e.$t("pages.integrations.api.emptyState.docs")),1)]),_:1})])]),_:1},8,["title","description","action-text","onAction"])])]),_:1},8,["headers","items","options","items-length","loading"])]),_:1})])}const ni=$(Oe,[["render",st],["__scopeId","data-v-a7d4d704"]]);export{ni as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.