UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

4 lines 27.6 kB
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{};e.SENTRY_RELEASE={id:`n8n@2.16.1`}}catch{}})();try{(function(){var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`ee463d24-3e55-4769-8ef6-6f14a8ace006`,e._sentryDebugIdIdentifier=`sentry-dbid-ee463d24-3e55-4769-8ef6-6f14a8ace006`)})()}catch{}import"./chunk-CACdhNlC.js";import{$ as e,A as t,At as n,C as r,E as i,Ft as a,H as o,N as s,S as c,Sn as l,T as u,Wt as d,X as f,_ as p,_n as m,bt as h,dt as g,gt as _,h as v,j as y,ot as b,pt as x,rt as S,w as C,yt as w}from"./vue.runtime.esm-bundler-C3C09Zii.js";import{at as T}from"./core-Bz5WjPxS.js";import{J as E,Ji as D,N as O,Pi as k,Qi as A,Xi as j,Zi as M,_t as N,dt as P,ji as F,st as I,vt as L,wt as R}from"./src-XqE2yCpG.js";import{t as z}from"./_plugin-vue_export-helper-CIL7EULb.js";import{Ln as B,Pn as V,Rt as H,fr as U,mi as W}from"./users.store-xP93bV7X.js";import{t as G}from"./dialog-Bs3PLrml.js";import"./constants-DuQbSl-q.js";import{t as K}from"./useRootStore-XEREVjMN.js";import{p as q}from"./settings.store-CAFiYCMH.js";import{t as J}from"./usePageRedirectionHelper-CC6sh9o0.js";import{t as Y}from"./CopyInput-Diu7JJOl.js";import{r as ee}from"./exports-D7g5x3uk.js";import{n as X,t as Z}from"./sso.store-BLo2SbFc.js";import{t as Q}from"./userRoleProvisioning.store-JMQrCKEv.js";var te=[`href`],ne=z(s({__name:`UserRoleProvisioningDropdown`,props:o({authProtocol:{}},{modelValue:{default:`disabled`},modelModifiers:{}}),emits:[`update:modelValue`],setup(n){let a=g(n,`modelValue`),o=T(),s=W().hasScope(`provisioning:manage`),c=e=>{a.value=e},u=[{label:o.baseText(`settings.sso.settings.userRoleProvisioning.option.disabled.label`),value:`disabled`},{label:o.baseText(`settings.sso.settings.userRoleProvisioning.option.instanceRole.label`),value:`instance_role`},{label:o.baseText(`settings.sso.settings.userRoleProvisioning.option.instanceAndProjectRoles.label`),value:`instance_and_project_roles`}];return(f,h)=>(e(),i(`div`,{class:m(f.$style.group)},[r(`label`,null,l(d(o).baseText(`settings.sso.settings.userRoleProvisioning.label`)),1),y(d(N),{"model-value":a.value,disabled:!d(s),"data-test-id":`oidc-user-role-provisioning`,class:m(f.$style.userRoleProvisioningSelect),"onUpdate:modelValue":c},{default:w(()=>[(e(),i(p,null,S(u,e=>y(d(L),{key:e.value,label:e.label,"data-test-id":`oidc-user-role-provisioning-option`,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`model-value`,`disabled`,`class`]),r(`small`,null,[t(l(d(o).baseText(`settings.sso.settings.userRoleProvisioning.help`))+` `,1),r(`a`,{href:`https://docs.n8n.io/user-management/${n.authProtocol}/setup/`,target:`_blank`},l(d(o).baseText(`settings.sso.settings.userRoleProvisioning.help.linkText`)),9,te)])],2))}}),[[`__cssModules`,{$style:{group:`_group_o443m_125`,userRoleProvisioningSelect:`_userRoleProvisioningSelect_o443m_141`}}]]);function re(e){let t=Q(),n=U(),r=a(`disabled`),i=e=>e?e.scopesProvisionInstanceRole&&e.scopesProvisionProjectRoles?`instance_and_project_roles`:e.scopesProvisionInstanceRole?`instance_role`:`disabled`:`disabled`,o=e=>e===`instance_role`?{scopesProvisionInstanceRole:!0,scopesProvisionProjectRoles:!1}:e===`instance_and_project_roles`?{scopesProvisionInstanceRole:!0,scopesProvisionProjectRoles:!0}:{scopesProvisionInstanceRole:!1,scopesProvisionProjectRoles:!1},s=c(()=>i(t.provisioningConfig)!==r.value),l=t=>{n.track(`User updated provisioning settings`,{instance_id:K().instanceId,authentication_method:e,updated_setting:t})};return t.getProvisioningConfig().then(()=>{r.value=i(t.provisioningConfig)}),{formValue:r,isUserRoleProvisioningChanged:s,saveProvisioningConfig:async e=>{let n=e?`disabled`:r.value;n!==i(t.provisioningConfig)&&(await t.saveProvisioningConfig(o(n)),r.value=n,l(n))},shouldPromptUserToConfirmUserRoleProvisioningChange:({currentLoginEnabled:e,loginEnabledFormValue:t})=>{let n=e!==t,i=n&&!e,a=n&&e,o=i&&r.value!==`disabled`,c=s.value&&e&&!a;return o||c}}}async function $(e){let t=[],n={select:[`email`,`role`],expand:[`projectRelations`]},r=0,i=0,a=!0;for(;a;){let o=await q(e,{...n,sortBy:[`email:desc`],take:50,skip:r*50});r===0&&(i=o.count),t.push(...o.items),a=o.items.length===50&&t.length<i,r++}return{count:i,items:t}}function ie(){let e=a(),t=a(),n=K(),r=()=>{let e=new Date;return`${e.getDate()}_${e.getMonth()+1}_${e.getFullYear()}_${e.getHours()}_${e.getMinutes()}`},i=e=>e.includes(`,`)||e.includes(`"`)?`"${e.replace(/"/g,`""`)}"`:e,o=(e,t)=>{let n=new Blob([e],{type:`text/csv;charset=utf-8;`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.setAttribute(`href`,r),i.setAttribute(`download`,t),i.style.display=`none`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)},s=async()=>{if(e.value)return e.value;if(t.value)return await t.value;let r=$(n.restApiContext).then(n=>(e.value=n,t.value=void 0,n)).catch(e=>{throw t.value=void 0,e});return t.value=r,await r},c=a(!1),l=async()=>{let e=await s(),t=[`email,project_displayname,project_id,project_role`];for(let n of e.items){let e=i(n.email??``);if(n.projectRelations&&n.projectRelations.length>0)for(let r of n.projectRelations){let n=i(r.name??``),a=i(r.id??``),o=i(r.role.split(`:`)[1]??r.role);t.push(`${e},${n},${a},${o}`)}}o(t.join(` `),`n8n_project_role_export_${r()}.csv`),c.value=!0},u=a(!1);return{downloadProjectRolesCsv:l,downloadInstanceRolesCsv:async()=>{let e=await s(),t=[`email,instance_role`];for(let n of e.items){let e=i(n.email??``),r=i(n.role??``);t.push(`${e},${r}`)}o(t.join(` `),`n8n_instance_role_export_${r()}.csv`),u.value=!0},hasDownloadedInstanceRoleCsv:u,hasDownloadedProjectRoleCsv:c,accessSettingsCsvExportOnModalClose:()=>{u.value=!1,c.value=!1,e.value=void 0,t.value=void 0}}}var ae={class:`mb-s`},oe={class:`mb-s`},se=[`href`],ce={class:`mb-s`},le={key:0},ue={class:`mb-s`},de={class:`mb-s`},fe=[`href`],pe={class:`mb-s`},me=z(s({__name:`ConfirmProvisioningDialog`,props:o({newProvisioningSetting:{},authProtocol:{}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:o([`confirmProvisioning`,`cancel`],[`update:modelValue`]),setup(n,{emit:o}){let s=g(n,`modelValue`),f=n,v=o,x=T(),S=a(!1),E=a(!1),D=a(!1),O=a(!1),{hasDownloadedInstanceRoleCsv:k,hasDownloadedProjectRoleCsv:N,downloadProjectRolesCsv:F,downloadInstanceRolesCsv:I,accessSettingsCsvExportOnModalClose:L}=ie(),z=c(()=>f.newProvisioningSetting===`disabled`),B=c(()=>z.value?`disable`:`enable`),V=c(()=>f.newProvisioningSetting===`instance_and_project_roles`);_(s,()=>{D.value=!1,O.value=!1,L()});let H=async()=>{S.value=!0;try{await I()}finally{S.value=!1}},U=async()=>{E.value=!0;try{await F()}finally{E.value=!1}},W=()=>{D.value=!0,v(`confirmProvisioning`)};return(a,o)=>{let c=b(`n8n-html`);return e(),C(d(G),{modelValue:s.value,"onUpdate:modelValue":o[2]||=e=>s.value=e,title:d(x).baseText(`settings.provisioningConfirmDialog.${B.value}.title`),width:`650`},{footer:w(()=>[y(d(M),{variant:`ghost`,type:`button`,"data-test-id":`provisioning-cancel-button`,onClick:o[1]||=e=>v(`cancel`)},{default:w(()=>[t(l(d(x).baseText(`settings.provisioningConfirmDialog.button.cancel`)),1)]),_:1}),y(d(M),{variant:`solid`,type:`button`,disabled:D.value||!O.value||!z.value&&!d(k)||V.value&&!d(N),"data-test-id":`provisioning-confirm-button`,onClick:W},{default:w(()=>[t(l(d(x).baseText(`settings.provisioningConfirmDialog.button.${B.value}.confirm`)),1)]),_:1},8,[`disabled`])]),default:w(()=>[z.value?(e(),i(p,{key:1},[r(`div`,ue,[y(d(j),{color:`text-base`},{default:w(()=>[t(l(d(x).baseText(`settings.provisioningConfirmDialog.disable.description`)),1)]),_:1})]),r(`div`,de,[y(d(j),{color:`text-base`},{default:w(()=>[r(`a`,{href:`https://docs.n8n.io/user-management/${n.authProtocol}/setup/`,target:`_blank`},l(d(x).baseText(`settings.provisioningConfirmDialog.link.docs`)),9,fe)]),_:1})])],64)):(e(),i(p,{key:0},[r(`div`,ae,[y(d(j),{color:`text-base`},{default:w(()=>[t(l(d(x).baseText(n.newProvisioningSetting===`instance_and_project_roles`?`settings.provisioningConfirmDialog.breakingChangeDescription.firstSentence.partOne.withProjectRoles`:`settings.provisioningConfirmDialog.breakingChangeDescription.firstSentence.partOne`)),1)]),_:1}),y(d(j),{class:m(a.$style.descriptionTextPartTwo),color:`text-base`},{default:w(()=>[t(l(d(x).baseText(`settings.provisioningConfirmDialog.breakingChangeDescription.firstSentence.partTwo`)),1)]),_:1},8,[`class`])]),r(`div`,oe,[y(d(j),{color:`text-base`},{default:w(()=>[r(`a`,{href:`https://docs.n8n.io/user-management/${n.authProtocol}/setup/`,target:`_blank`},l(d(x).baseText(`settings.provisioningConfirmDialog.link.docs`)),9,se)]),_:1})]),r(`div`,ce,[h(y(d(j),{color:`text-base`},null,512),[[c,d(x).baseText(`settings.provisioningConfirmDialog.breakingChangeDescription.secondLine`)]])]),r(`ul`,{class:m([a.$style.list,`mb-s`])},[r(`li`,null,[y(d(j),{color:`text-base`},{default:w(()=>[t(l(d(x).baseText(`settings.provisioningConfirmDialog.button.downloadInstanceRolesCsv`)),1)]),_:1}),d(k)?(e(),C(d(A),{key:1,icon:`check`,color:`success`,class:m(a.$style.icon)},null,8,[`class`])):(e(),C(d(M),{key:0,variant:`ghost`,"native-type":`button`,icon:`file-download`,"data-test-id":`provisioning-download-instance-roles-csv-button`,disabled:S.value,loading:S.value,class:m([a.$style.button,`n8n-button--highlight`]),onClick:H},null,8,[`disabled`,`loading`,`class`]))]),V.value?(e(),i(`li`,le,[y(d(j),{color:`text-base`},{default:w(()=>[t(l(d(x).baseText(`settings.provisioningConfirmDialog.button.downloadProjectRolesCsv`)),1)]),_:1}),d(N)?(e(),C(d(A),{key:1,icon:`check`,color:`success`,class:m(a.$style.icon)},null,8,[`class`])):(e(),C(d(M),{key:0,variant:`ghost`,"native-type":`button`,icon:`file-download`,"data-test-id":`provisioning-download-project-roles-csv-button`,disabled:E.value,loading:E.value,class:m([a.$style.button,`n8n-button--highlight`]),onClick:U},null,8,[`disabled`,`loading`,`class`]))])):u(``,!0)],2)],64)),r(`div`,pe,[y(d(R),{class:m(a.$style.card)},{default:w(()=>[y(d(P),{modelValue:O.value,"onUpdate:modelValue":o[0]||=e=>O.value=e,disabled:!z.value&&(!d(k)||V.value&&!d(N)),"data-test-id":`provisioning-confirmation-checkbox`},{label:w(()=>[y(d(j),{color:`text-base`},{default:w(()=>[t(l(d(x).baseText(`settings.provisioningConfirmDialog.${B.value}.checkbox`)),1)]),_:1})]),_:1},8,[`modelValue`,`disabled`])]),_:1},8,[`class`])])]),_:1},8,[`modelValue`,`title`])}}}),[[`__cssModules`,{$style:{button:`_button_1bulq_126`,card:`_card_1bulq_130`,descriptionTextPartTwo:`_descriptionTextPartTwo_1bulq_134`,icon:`_icon_1bulq_138`,list:`_list_1bulq_143`}}]]),he={class:`mt-2xs mb-s`},ge={key:0},_e={key:1},ve=s({__name:`SamlSettingsForm`,setup(o,{expose:s}){let p=T(),h=X(),g=U(),_=V(),v=B(),b=a(!1),x=a(),S=a(!1),C={URL:`url`,XML:`xml`},E=a([{label:p.baseText(`settings.sso.settings.ips.options.url`),value:C.URL},{label:p.baseText(`settings.sso.settings.ips.options.xml`),value:C.XML}]),D=a(C.URL),k=a(),A=a(),j=a(),N=a(!1),{formValue:I,isUserRoleProvisioningChanged:L,saveProvisioningConfig:R,shouldPromptUserToConfirmUserRoleProvisioningChange:z}=re(Z.SAML);async function H(){if(h.isEnterpriseSamlEnabled)try{await W()}catch(e){_.showError(e,`error`)}}let W=async()=>{let e=await h.getSamlConfig();j.value=e?.entityID,x.value=e?.returnUrl,e?.metadataUrl?D.value=C.URL:e?.metadata&&(D.value=C.XML),A.value=e?.metadata,k.value=e?.metadataUrl,S.value=e.loginEnabled??!1},G=c(()=>{if(b.value)return!1;let e=()=>D.value===C.URL?!!k.value&&k.value!==h.samlConfig?.metadataUrl:D.value===C.XML?!!A.value&&A.value!==h.samlConfig?.metadata:!1,t=h.isSamlLoginEnabled!==S.value;return L.value||e()||t}),q=c(()=>D.value===C.URL?!!k.value:D.value===C.XML?!!A.value:!1),J=e=>{if(!e){ee(`Single Sign-On SAML: telemtetry data undefined on submit`,{level:`error`});return}let t={instance_id:K().instanceId,authentication_method:Z.SAML,identity_provider:e.metadataUrl?`metadata`:`xml`,is_active:e.loginEnabled??!1};g.track(`User updated single sign on settings`,t)},Q=async()=>await v.confirm(p.baseText(`settings.sso.confirmMessage.beforeSaveForm.message`,{interpolate:{protocol:`SAML`}}),p.baseText(`settings.sso.confirmMessage.beforeSaveForm.headline`,{interpolate:{protocol:`SAML`}}),{cancelButtonText:p.baseText(`settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText`),confirmButtonText:p.baseText(`settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText`)}),te=async()=>{let e=await v.confirm(p.baseText(`settings.sso.settings.save.testConnection.message`),p.baseText(`settings.sso.settings.save.testConnection.title`),{confirmButtonText:p.baseText(`settings.sso.settings.save.testConnection.test`),cancelButtonText:p.baseText(`settings.sso.settings.save.activate.cancel`)});return e===`confirm`?(await ie(),await v.confirm(p.baseText(`settings.sso.settings.save.confirmTestConnection.message`),p.baseText(`settings.sso.settings.save.confirmTestConnection.title`),{confirmButtonText:p.baseText(`settings.sso.settings.save.confirmTestConnection.confirm`),cancelButtonText:p.baseText(`settings.sso.settings.save.activate.cancel`)})):e},$=async(e=!1)=>{try{b.value=!0,ae();let t=S.value!==h.isSamlLoginEnabled&&h.isSamlLoginEnabled===!0;if(t&&await Q()!==`confirm`)return;if(!e&&z({currentLoginEnabled:!!h.isSamlLoginEnabled,loginEnabledFormValue:S.value})){N.value=!0;return}N.value=!1;let n=D.value===C.URL?{metadataUrl:k.value}:{metadata:A.value};if(!h.isSamlLoginEnabled&&S.value&&(await h.saveSamlConfig(n),await te()!==`confirm`))return;let r=await h.saveSamlConfig({...n,loginEnabled:S.value});await R(t),h.selectedAuthProtocol=Z.SAML,await W(),J(r)}catch(e){_.showError(e,p.baseText(`settings.sso.settings.save.error`));return}finally{b.value=!1}},ie=async()=>{try{let e=D.value===C.URL?{metadataUrl:k.value}:{metadata:A.value},t=await h.testSamlConfig(e);typeof window<`u`&&window.open(t,`_blank`)}catch(e){_.showError(e,`error`)}},ae=()=>{if(D.value===C.URL)try{let e=new URL(k.value);if(e.protocol!==`https:`&&e.protocol!==`http:`)throw Error(`The provided protocol is not supported`)}catch{throw Error(p.baseText(`settings.sso.settings.ips.url.invalid`))}};return s({hasUnsavedChanges:c(()=>G.value),onSave:$}),f(async()=>{await H()}),(a,o)=>(e(),i(`div`,null,[r(`div`,{class:m(a.$style.group)},[r(`label`,null,l(d(p).baseText(`settings.sso.settings.redirectUrl.label`)),1),y(Y,{value:x.value,"copy-button-text":d(p).baseText(`generic.clickToCopy`),"toast-title":d(p).baseText(`settings.sso.settings.redirectUrl.copied`)},null,8,[`value`,`copy-button-text`,`toast-title`]),r(`small`,null,l(d(p).baseText(`settings.sso.settings.redirectUrl.help`)),1)],2),r(`div`,{class:m(a.$style.group)},[r(`label`,null,l(d(p).baseText(`settings.sso.settings.entityId.label`)),1),y(Y,{value:j.value,"copy-button-text":d(p).baseText(`generic.clickToCopy`),"toast-title":d(p).baseText(`settings.sso.settings.entityId.copied`)},null,8,[`value`,`copy-button-text`,`toast-title`]),r(`small`,null,l(d(p).baseText(`settings.sso.settings.entityId.help`)),1)],2),r(`div`,{class:m(a.$style.group)},[r(`label`,null,l(d(p).baseText(`settings.sso.settings.ips.label`)),1),r(`div`,he,[y(d(O),{modelValue:D.value,"onUpdate:modelValue":o[0]||=e=>D.value=e,options:E.value},null,8,[`modelValue`,`options`])]),D.value===C.URL?(e(),i(`div`,ge,[y(d(F),{modelValue:k.value,"onUpdate:modelValue":o[1]||=e=>k.value=e,type:`text`,name:`metadataUrl`,size:`large`,placeholder:d(p).baseText(`settings.sso.settings.ips.url.placeholder`),"data-test-id":`sso-provider-url`},null,8,[`modelValue`,`placeholder`]),r(`small`,null,l(d(p).baseText(`settings.sso.settings.ips.url.help`)),1)])):u(``,!0),D.value===C.XML?(e(),i(`div`,_e,[y(d(F),{modelValue:A.value,"onUpdate:modelValue":o[2]||=e=>A.value=e,type:`textarea`,name:`metadata`,rows:4,"data-test-id":`sso-provider-xml`},null,8,[`modelValue`]),r(`small`,null,l(d(p).baseText(`settings.sso.settings.ips.xml.help`)),1)])):u(``,!0),y(ne,{modelValue:d(I),"onUpdate:modelValue":o[3]||=e=>n(I)?I.value=e:null,"auth-protocol":`saml`},null,8,[`modelValue`]),y(me,{modelValue:N.value,"onUpdate:modelValue":o[4]||=e=>N.value=e,"new-provisioning-setting":d(I),"auth-protocol":`saml`,onConfirmProvisioning:o[5]||=e=>$(!0),onCancel:o[6]||=e=>N.value=!1},null,8,[`modelValue`,`new-provisioning-setting`]),r(`div`,{class:m([a.$style.group,a.$style.checkboxGroup])},[y(d(P),{modelValue:S.value,"onUpdate:modelValue":o[7]||=e=>S.value=e,"data-test-id":`sso-toggle`,label:d(p).baseText(`settings.sso.activated`)},null,8,[`modelValue`,`label`])],2)],2),r(`div`,{class:m(a.$style.buttons)},[y(d(M),{disabled:!G.value,loading:b.value,size:`large`,"data-test-id":`sso-save`,onClick:o[8]||=e=>$(!1)},{default:w(()=>[t(l(d(p).baseText(`settings.sso.settings.save`)),1)]),_:1},8,[`disabled`,`loading`]),y(d(M),{variant:`subtle`,disabled:!q.value,size:`large`,"data-test-id":`sso-test`,onClick:ie},{default:w(()=>[t(l(d(p).baseText(`settings.sso.settings.test`)),1)]),_:1},8,[`disabled`])],2)]))}}),ye={switch:`_switch_1blmf_128`,buttons:`_buttons_1blmf_134`,group:`_group_1blmf_143`,checkboxGroup:`_checkboxGroup_1blmf_159`,actionBox:`_actionBox_1blmf_163`,footer:`_footer_1blmf_167`},be=z(ve,[[`__cssModules`,{$style:ye}]]),xe=z(s({__name:`OidcSettingsForm`,setup(o,{expose:s}){let u=T(),h=X(),g=U(),_=V(),v=B(),b=a(!1),x=a(``),C=a(``),E=a(``),D=a(!1),{formValue:O,isUserRoleProvisioningChanged:k,saveProvisioningConfig:A,shouldPromptUserToConfirmUserRoleProvisioningChange:j}=re(Z.OIDC),I=a(`select_account`),R=e=>{I.value=e},z=[{label:u.baseText(`settings.sso.settings.oidc.prompt.login`),value:`login`},{label:u.baseText(`settings.sso.settings.oidc.prompt.none`),value:`none`},{label:u.baseText(`settings.sso.settings.oidc.prompt.consent`),value:`consent`},{label:u.baseText(`settings.sso.settings.oidc.prompt.select_account`),value:`select_account`},{label:u.baseText(`settings.sso.settings.oidc.prompt.create`),value:`create`}],H=a(``),W=async()=>{let e=await h.getOidcConfig();C.value=e.clientId,E.value=e.clientSecret,x.value=e.discoveryEndpoint,I.value=e.prompt??`select_account`,H.value=e.authenticationContextClassReference?.join(`,`)||``},G=async()=>{if(h.isEnterpriseOidcEnabled)try{await W()}catch(e){_.showError(e,u.baseText(`settings.sso.settings.save.error_oidc`))}},q=c(()=>{let e=H.value.split(`,`).map(e=>e.trim()).filter(Boolean).join(`,`),t=h.oidcConfig?.authenticationContextClassReference?.join(`,`)||``;return h.oidcConfig?.clientId===C.value&&h.oidcConfig?.clientSecret===E.value&&h.oidcConfig?.discoveryEndpoint===x.value&&h.oidcConfig?.loginEnabled===h.isOidcLoginEnabled&&h.oidcConfig?.prompt===I.value&&!k.value&&t===H.value&&e===t});async function J(e=!1){if(!e&&j({currentLoginEnabled:!!h.oidcConfig?.loginEnabled,loginEnabledFormValue:h.isOidcLoginEnabled})){D.value=!0;return}let t=h.oidcConfig?.loginEnabled!==h.isOidcLoginEnabled&&h.oidcConfig?.loginEnabled===!0;if(t&&await v.confirm(u.baseText(`settings.sso.confirmMessage.beforeSaveForm.message`,{interpolate:{protocol:`OIDC`}}),u.baseText(`settings.sso.confirmMessage.beforeSaveForm.headline`,{interpolate:{protocol:`OIDC`}}),{cancelButtonText:u.baseText(`settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText`),confirmButtonText:u.baseText(`settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText`)})!==`confirm`)return;let n=H.value.split(`,`).map(e=>e.trim()).filter(Boolean);try{b.value=!0;let e=await h.saveOidcConfig({clientId:C.value,clientSecret:E.value,discoveryEndpoint:x.value,prompt:I.value,loginEnabled:h.isOidcLoginEnabled,authenticationContextClassReference:n});await A(t),D.value=!1,h.selectedAuthProtocol=Z.OIDC,E.value=e.clientSecret,ee(e)}catch(e){_.showError(e,u.baseText(`settings.sso.settings.save.error_oidc`));return}finally{b.value=!1,await W()}}function ee(e){let t={instance_id:K().instanceId,authentication_method:Z.OIDC,discovery_endpoint:e.discoveryEndpoint,is_active:e.loginEnabled};g.track(`User updated single sign on settings`,t)}let Q=c(()=>!!h.oidcConfig?.discoveryEndpoint&&h.oidcConfig.discoveryEndpoint!==``&&!!h.oidcConfig?.clientId&&!!h.oidcConfig?.clientSecret),te=async()=>{try{let{url:e}=await h.testOidcConfig();typeof window<`u`&&window.open(e,`_blank`)}catch(e){_.showError(e,u.baseText(`settings.sso.settings.test.error`))}};return s({hasUnsavedChanges:c(()=>!q.value&&!b.value),onSave:J}),f(async()=>{await G()}),(a,o)=>(e(),i(`div`,null,[r(`div`,{class:m(a.$style.group)},[o[10]||=r(`label`,null,`Redirect URL`,-1),y(Y,{value:d(h).oidc.callbackUrl,"copy-button-text":d(u).baseText(`generic.clickToCopy`),"toast-title":`Redirect URL copied to clipboard`},null,8,[`value`,`copy-button-text`]),o[11]||=r(`small`,null,`Copy the Redirect URL to configure your OIDC provider `,-1)],2),r(`div`,{class:m(a.$style.group)},[o[12]||=r(`label`,null,`Discovery Endpoint`,-1),y(d(F),{"model-value":x.value,type:`text`,"data-test-id":`oidc-discovery-endpoint`,placeholder:`https://accounts.google.com/.well-known/openid-configuration`,"onUpdate:modelValue":o[0]||=e=>x.value=e},null,8,[`model-value`]),o[13]||=r(`small`,null,`Paste here your discovery endpoint`,-1)],2),r(`div`,{class:m(a.$style.group)},[o[14]||=r(`label`,null,`Client ID`,-1),y(d(F),{"model-value":C.value,type:`text`,"data-test-id":`oidc-client-id`,"onUpdate:modelValue":o[1]||=e=>C.value=e},null,8,[`model-value`]),o[15]||=r(`small`,null,`The client ID you received when registering your application with your provider`,-1)],2),r(`div`,{class:m(a.$style.group)},[o[16]||=r(`label`,null,`Client Secret`,-1),y(d(F),{"model-value":E.value,type:`password`,"data-test-id":`oidc-client-secret`,"onUpdate:modelValue":o[2]||=e=>E.value=e},null,8,[`model-value`]),o[17]||=r(`small`,null,`The client Secret you received when registering your application with your provider`,-1)],2),r(`div`,{class:m(a.$style.group)},[o[18]||=r(`label`,null,`Prompt`,-1),y(d(N),{"model-value":I.value,"data-test-id":`oidc-prompt`,"onUpdate:modelValue":R},{default:w(()=>[(e(),i(p,null,S(z,e=>y(d(L),{key:e.value,label:e.label,"data-test-id":`oidc-prompt-filter-option`,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`model-value`]),o[19]||=r(`small`,null,`The prompt parameter to use when authenticating with the OIDC provider`,-1)],2),y(ne,{modelValue:d(O),"onUpdate:modelValue":o[3]||=e=>n(O)?O.value=e:null,"auth-protocol":`oidc`},null,8,[`modelValue`]),y(me,{modelValue:D.value,"onUpdate:modelValue":o[4]||=e=>D.value=e,"new-provisioning-setting":d(O),"auth-protocol":`oidc`,onConfirmProvisioning:o[5]||=e=>J(!0),onCancel:o[6]||=e=>D.value=!1},null,8,[`modelValue`,`new-provisioning-setting`]),r(`div`,{class:m(a.$style.group)},[o[20]||=r(`label`,null,`Authentication Context Class Reference`,-1),y(d(F),{"model-value":H.value,type:`textarea`,"data-test-id":`oidc-authentication-context-class-reference`,placeholder:`mfa, phrh, pwd`,"onUpdate:modelValue":o[7]||=e=>H.value=e},null,8,[`model-value`]),o[21]||=r(`small`,null,`ACR values to include in the authorization request (acr_values parameter), separated by commas in order of preference.`,-1)],2),r(`div`,{class:m([a.$style.group,a.$style.checkboxGroup])},[y(d(P),{modelValue:d(h).isOidcLoginEnabled,"onUpdate:modelValue":o[8]||=e=>d(h).isOidcLoginEnabled=e,"data-test-id":`sso-oidc-toggle`,label:d(u).baseText(`settings.sso.activated`)},null,8,[`modelValue`,`label`])],2),r(`div`,{class:m(a.$style.buttons)},[y(d(M),{"data-test-id":`sso-oidc-save`,size:`large`,loading:b.value,disabled:b.value||q.value,onClick:o[9]||=e=>J(!1)},{default:w(()=>[t(l(d(u).baseText(`settings.sso.settings.save`)),1)]),_:1},8,[`loading`,`disabled`]),y(d(M),{variant:`subtle`,disabled:!Q.value,size:`large`,"data-test-id":`sso-oidc-test`,onClick:te},{default:w(()=>[t(l(d(u).baseText(`settings.sso.settings.test`)),1)]),_:1},8,[`disabled`])],2)]))}}),[[`__cssModules`,{$style:ye}]]),Se={class:`pb-2xl`},Ce={href:`https://docs.n8n.io/user-management/saml/`,target:`_blank`},we={key:1,"data-test-id":`sso-content-licensed`},Te={key:2,"data-test-id":`sso-content-licensed`},Ee=z(s({__name:`SettingsSso`,setup(n){let o=T(),s=X(),h=H(),g=J(),_=x(`samlForm`),b=x(`oidcForm`),O=a(!1),A=a(null),P=c(()=>[{label:Z.SAML.toUpperCase(),value:Z.SAML},{label:s.isEnterpriseOidcEnabled?Z.OIDC.toUpperCase():`${Z.OIDC.toUpperCase()} (${o.baseText(`generic.upgradeToEnterprise`)})`,value:Z.OIDC}]),F=c(()=>s.isEnterpriseSamlEnabled||s.isEnterpriseOidcEnabled),R=c(()=>z.value===Z.SAML?_.value:z.value===Z.OIDC?b.value:null),z=a(Z.SAML);function B(e){z.value=e}let V=()=>{g.goToUpgrade(`sso`,`upgrade-sso`)};I((e,t,n)=>{if(!R.value?.hasUnsavedChanges){n();return}A.value=n,O.value=!0});async function U(){O.value=!1,await R.value?.onSave(),A.value?.(),A.value=null}function W(){O.value=!1,A.value?.(),A.value=null}function K(){O.value=!1,A.value?.(!1),A.value=null}return f(()=>{h.set(o.baseText(`settings.sso.title`)),s.initializeSelectedProtocol(),z.value=s.selectedAuthProtocol||Z.SAML}),(n,a)=>(e(),i(`div`,Se,[r(`div`,{class:m(n.$style.heading)},[y(d(D),{size:`2xlarge`},{default:w(()=>[t(l(d(o).baseText(`settings.sso.title`)),1)]),_:1})],2),y(d(E),null,{default:w(()=>[t(l(d(o).baseText(`settings.sso.info`))+` `,1),r(`a`,Ce,l(d(o).baseText(`settings.sso.info.link`)),1)]),_:1}),F.value?(e(),i(`div`,{key:0,"data-test-id":`sso-auth-protocol-select`,class:m(n.shared.group)},[a[2]||=r(`label`,null,`Select Authentication Protocol`,-1),r(`div`,null,[y(d(N),{filterable:``,"model-value":z.value,placeholder:d(o).baseText(`parameterInput.select`),"onUpdate:modelValue":B,onKeydown:a[0]||=v(()=>{},[`stop`])},{default:w(()=>[(e(!0),i(p,null,S(P.value,({label:t,value:n})=>(e(),C(d(L),{key:n,value:n,label:t,"data-test-id":`credential-select-option`},null,8,[`value`,`label`]))),128))]),_:1},8,[`model-value`,`placeholder`])])],2)):u(``,!0),d(s).isEnterpriseSamlEnabled&&z.value===d(Z).SAML?(e(),i(`div`,we,[y(be,{ref:`samlForm`},null,512)])):u(``,!0),d(s).isEnterpriseOidcEnabled&&z.value===d(Z).OIDC?(e(),i(`div`,Te,[y(xe,{ref:`oidcForm`},null,512)])):u(``,!0),F.value?u(``,!0):(e(),C(d(k),{key:3,"data-test-id":`sso-content-unlicensed`,class:m(n.$style.actionBox),description:d(o).baseText(`settings.sso.actionBox.description`),"button-text":d(o).baseText(`settings.sso.actionBox.buttonText`),"onClick:button":V},{heading:w(()=>[r(`span`,null,l(d(o).baseText(`settings.sso.actionBox.title`)),1)]),_:1},8,[`class`,`description`,`button-text`])),y(d(G),{modelValue:O.value,"onUpdate:modelValue":a[1]||=e=>O.value=e,title:d(o).baseText(`settings.sso.settings.unsavedChanges.title`),width:`500`,"data-test-id":`sso-unsaved-changes-dialog`},{footer:w(()=>[r(`div`,{class:m(n.$style.dialogFooter)},[y(d(M),{variant:`ghost`,"data-test-id":`sso-unsaved-keep-editing`,onClick:K},{default:w(()=>[t(l(d(o).baseText(`settings.sso.settings.unsavedChanges.keepEditing`)),1)]),_:1}),y(d(M),{variant:`outline`,"data-test-id":`sso-unsaved-leave`,onClick:W},{default:w(()=>[t(l(d(o).baseText(`settings.sso.settings.unsavedChanges.leaveWithoutSaving`)),1)]),_:1}),y(d(M),{variant:`solid`,"data-test-id":`sso-unsaved-save-and-leave`,onClick:U},{default:w(()=>[t(l(d(o).baseText(`settings.sso.settings.unsavedChanges.saveAndLeave`)),1)]),_:1})],2)]),default:w(()=>[y(d(j),null,{default:w(()=>[t(l(d(o).baseText(`settings.sso.settings.unsavedChanges.message`)),1)]),_:1})]),_:1},8,[`modelValue`,`title`])]))}}),[[`__cssModules`,{shared:ye,$style:{heading:`_heading_18pwa_125`,actionBox:`_actionBox_18pwa_129`,dialogFooter:`_dialogFooter_18pwa_133`}}]]);export{Ee as default}; //# sourceMappingURL=SettingsSso--MOWgipJ.js.map