1"use strict";(self["webpackChunkappwork_vue_starter"]=self["webpackChunkappwork_vue_starter"]||[]).push([[9517],{39517:function(t,e,a){a.r(e),a.d(e,{default:function(){return u}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"oauth-consent d-flex justify-content-center"},[e("b-card",{staticClass:"oauth-consent-card mt-5",staticStyle:{"max-width":"540px",width:"100%"}},[e("div",{staticClass:"text-center mb-4"},[e("span",{staticClass:"material-symbols-outlined oauth-consent-icon"},[t._v("link")]),t._v(" "),e("h4",{staticClass:"font-weight-bold mt-2 mb-0"},[t._v("Authorize access")])]),t._v(" "),t.loading?e("div",{staticClass:"text-center py-4",attrs:{"data-testid":"consent-loading"}},[e("b-spinner")],1):t.error?e("b-alert",{attrs:{show:"",variant:"danger","data-testid":"consent-error"}},[t._v("\n "+t._s(t.error)+"\n ")]):[e("p",{staticClass:"text-center"},[e("b",{attrs:{"data-testid":"consent-client-name"}},[t._v(t._s(t.client.name))]),t._v(" wants to connect to your Exatom account\n "),t.$root.me?[t._v(" ("+t._s(t.$root.me.email)+")")]:t._e(),t._v(".\n ")],2),t._v(" "),e("div",{staticClass:"card card-body bg-light mb-4"},[e("div",{staticClass:"small text-muted text-uppercase letter-spacing-1px mb-2"},[t._v("This will allow it to")]),t._v(" "),e("ul",{staticClass:"mb-0 pl-3",attrs:{"data-testid":"consent-scopes"}},t._l(t.scopes,function(a){return e("li",{key:a.id},[t._v(t._s(a.description))])}),0)]),t._v(" "),t.hasAgreedToAIConsent?e("p",{staticClass:"small text-muted text-center",attrs:{"data-testid":"consent-ai-already-agreed"}},[e("span",{staticClass:"material-symbols-outlined align-middle",staticStyle:{"font-size":"1rem"}},[t._v("check_circle")]),t._v("\n You've already agreed to the "),e("a",{attrs:{href:"https://exatom.io/ai-terms/",target:"_blank",rel:"noopener"}},[t._v("MCP AI Terms")]),t._v(".\n ")]):t._e(),t._v(" "),e("div",{staticClass:"d-flex justify-content-between"},[e("b-btn",{attrs:{variant:"default",disabled:t.submitting,"data-testid":"consent-deny"},on:{click:t.deny}},[t._v("\n Cancel\n ")]),t._v(" "),e("ladda-btn",{staticClass:"btn btn-primary",attrs:{loading:t.submitting,"data-style":"expand-left","data-testid":"consent-approve"},nativeOn:{click:function(e){return t.approve.apply(null,arguments)}}},[t._v("\n Authorize\n ")])],1)]],2)],1)},i=[],n=(a(14603),a(47566),a(98721),a(75158));const r="mcp_ai_consent_20260903";var o={name:"OAuthConsent",components:{LaddaBtn:n.A},metaInfo:{title:"Authorize access"},data(){return{loading:!0,submitting:!1,error:null,client:{id:null,name:"An application"},scopes:[]}},computed:{hasAgreedToAIConsent(){return!!this.$hasAIConsent(r)}},async created(){if(this.$api.getToken())return this.$route.query.error?(this.error=this.$route.query.error_description||this.$route.query.error,void(this.loading=!1)):void await this.loadDetails();window.location.href="/login?redirect="+encodeURIComponent(this.$route.fullPath)},methods:{async loadDetails(){this.loading=!0;try{const t=new URLSearchParams(this.oauthParams()).toString(),e=await this.$api.get("/oauth/authorize/details?"+t);this.client=e.client,this.scopes=e.scopes||[]}catch(t){this.error=this.errorMessage(t,"This authorization request is invalid or has expired.")}finally{this.loading=!1}},async approve(){const t=await this.$msgBoxAIConsent({version:r,title:"MCP AI Consent",heading:"By enabling MCP access, you accept the "});t&&await this.complete("/oauth/authorize/approve")},async deny(){await this.complete("/oauth/authorize/deny")},async complete(t){this.submitting=!0;try{const e=await this.$api.post(t,this.oauthParams());if(e&&e.redirect_uri)return void(window.location.href=e.redirect_uri);this.error="The authorization server did not return a redirect."}catch(e){this.error=this.errorMessage(e,"Could not complete the authorization request.")}finally{this.submitting=!1}},oauthParams(){const t=["response_type","client_id","redirect_uri","scope","state","code_challenge","code_challenge_method","nonce"],e={};return t.forEach(t=>{void 0!==this.$route.query[t]&&(e[t]=this.$route.query[t])}),e},errorMessage(t,e){return t?.response?.data?.error_description||t?.response?.data?.message||e}}}
1,c=o,l=a(81656),d=(0,l.A)(c,s,i,!1,null,"3fad8c01",null),u=d.exports}}]); 2//# sourceMappingURL=9517.47bd9c4f.js.map
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.