n8n-editor-ui
Version:
Workflow Editor UI for n8n
4 lines • 27.2 kB
JavaScript
(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.13.4`}}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]=`83ceaaa0-a6d4-472f-959a-172d6f96eed2`,e._sentryDebugIdIdentifier=`sentry-dbid-83ceaaa0-a6d4-472f-959a-172d6f96eed2`)})()}catch{}import{o as e}from"./chunk-DxpFCn6T.js";import{$ as t,A as n,At as r,C as i,E as a,Ft as o,H as s,N as c,S as l,Sn as u,T as d,Wt as f,X as p,_ as m,_n as h,bt as g,dt as _,gt as v,h as y,j as b,ot as x,pt as S,rt as C,w,yt as T}from"./vue.runtime.esm-bundler-D9KLAxvJ.js";import{bt as E}from"./_MapCache-CUJwh2qp.js";import{$i as D,Et as O,Fi as k,H as A,Nt as j,Qi as M,Ri as N,Tt as P,Yi as F,Zi as I,ht as L,tt as R,yt as z}from"./src-wni2AGA3.js";import{t as B}from"./_plugin-vue_export-helper-Dm3nT7Ps.js";import"./sanitize-html-my1ogl5v.js";import{Cr as V,Ns as H,Tr as U,en as W,jr as ee,vn as G}from"./users.store-BHWXXawf.js";import{t as K}from"./dialog-DkHaT5V1.js";import{Ps as te}from"./constants-CIP7tKq1.js";import"./merge-BqvKZ38d.js";import{r as q}from"./_baseOrderBy-CaKruttV.js";import"./dateformat-CYfyw486.js";import"./useDebounce-CTeIt-cH.js";import"./versions.store-CNV-esbv.js";import{t as ne}from"./usePageRedirectionHelper-Dxb_B6-R.js";import"./useClipboard-D72kaMkX.js";import{t as J}from"./CopyInput-DXwlVLzp.js";import{r as re}from"./exports-BizHxxJu.js";import{n as Y,t as X}from"./sso.store-DmM4R1YZ.js";import{t as Z}from"./userRoleProvisioning.store-NJANpy_Q.js";var Q=[`href`],ie=B(c({__name:`UserRoleProvisioningDropdown`,props:s({authProtocol:{}},{modelValue:{default:`disabled`},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let r=_(e,`modelValue`),o=E(),s=V().hasScope(`provisioning:manage`),c=e=>{r.value=e},l=[{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(d,p)=>(t(),a(`div`,{class:h(d.$style.group)},[i(`label`,null,u(f(o).baseText(`settings.sso.settings.userRoleProvisioning.label`)),1),b(f(P),{"model-value":r.value,disabled:!f(s),"data-test-id":`oidc-user-role-provisioning`,class:h(d.$style.userRoleProvisioningSelect),"onUpdate:modelValue":c},{default:T(()=>[(t(),a(m,null,C(l,e=>b(f(O),{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`]),i(`small`,null,[n(u(f(o).baseText(`settings.sso.settings.userRoleProvisioning.help`))+` `,1),i(`a`,{href:`https://docs.n8n.io/user-management/${e.authProtocol}/setup/`,target:`_blank`},u(f(o).baseText(`settings.sso.settings.userRoleProvisioning.help.linkText`)),9,Q)])],2))}}),[[`__cssModules`,{$style:{group:`_group_o443m_125`,userRoleProvisioningSelect:`_userRoleProvisioningSelect_o443m_141`}}]]);function ae(e){let t=Z(),n=W(),r=o(`disabled`),i=e=>e?e.scopesProvisionInstanceRole&&e.scopesProvisionProjectRoles?`instance_and_project_roles`:e.scopesProvisionInstanceRole?`instance_role`:`disabled`:`disabled`,a=e=>e===`instance_role`?{scopesProvisionInstanceRole:!0,scopesProvisionProjectRoles:!1}:e===`instance_and_project_roles`?{scopesProvisionInstanceRole:!0,scopesProvisionProjectRoles:!0}:{scopesProvisionInstanceRole:!1,scopesProvisionProjectRoles:!1},s=l(()=>i(t.provisioningConfig)!==r.value),c=t=>{n.track(`User updated provisioning settings`,{instance_id:q().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(a(n)),r.value=n,c(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 oe(e){let t=[],n={select:[`email`,`role`],expand:[`projectRelations`]},r=0,i=0,a=!0;for(;a;){let o=await H(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 se(){let e=o(),t=o(),n=q(),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,a=(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=oe(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=o(!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}`)}}a(t.join(`
`),`n8n_project_role_export_${r()}.csv`),c.value=!0},u=o(!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}`)}a(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 ce={class:`mb-s`},le={class:`mb-s`},ue=[`href`],de={class:`mb-s`},fe={key:0},pe={class:`mb-s`},me={class:`mb-s`},he=[`href`],ge={class:`mb-s`},_e=B(c({__name:`ConfirmProvisioningDialog`,props:s({newProvisioningSetting:{},authProtocol:{}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:s([`confirmProvisioning`,`cancel`],[`update:modelValue`]),setup(e,{emit:r}){let s=_(e,`modelValue`),c=e,p=r,y=E(),S=o(!1),C=o(!1),O=o(!1),k=o(!1),{hasDownloadedInstanceRoleCsv:A,hasDownloadedProjectRoleCsv:N,downloadProjectRolesCsv:P,downloadInstanceRolesCsv:F,accessSettingsCsvExportOnModalClose:L}=se(),R=l(()=>c.newProvisioningSetting===`disabled`),B=l(()=>R.value?`disable`:`enable`),V=l(()=>c.newProvisioningSetting===`instance_and_project_roles`);v(s,()=>{O.value=!1,k.value=!1,L()});let H=async()=>{S.value=!0;try{await F()}finally{S.value=!1}},U=async()=>{C.value=!0;try{await P()}finally{C.value=!1}},W=()=>{O.value=!0,p(`confirmProvisioning`)};return(r,o)=>{let c=x(`n8n-html`);return t(),w(f(K),{modelValue:s.value,"onUpdate:modelValue":o[2]||=e=>s.value=e,title:f(y).baseText(`settings.provisioningConfirmDialog.${B.value}.title`),width:`650`},{footer:T(()=>[b(f(M),{variant:`ghost`,type:`button`,"data-test-id":`provisioning-cancel-button`,onClick:o[1]||=e=>p(`cancel`)},{default:T(()=>[n(u(f(y).baseText(`settings.provisioningConfirmDialog.button.cancel`)),1)]),_:1}),b(f(M),{variant:`solid`,type:`button`,disabled:O.value||!k.value||!R.value&&!f(A)||V.value&&!f(N),"data-test-id":`provisioning-confirm-button`,onClick:W},{default:T(()=>[n(u(f(y).baseText(`settings.provisioningConfirmDialog.button.${B.value}.confirm`)),1)]),_:1},8,[`disabled`])]),default:T(()=>[R.value?(t(),a(m,{key:1},[i(`div`,pe,[b(f(I),{color:`text-base`},{default:T(()=>[n(u(f(y).baseText(`settings.provisioningConfirmDialog.disable.description`)),1)]),_:1})]),i(`div`,me,[b(f(I),{color:`text-base`},{default:T(()=>[i(`a`,{href:`https://docs.n8n.io/user-management/${e.authProtocol}/setup/`,target:`_blank`},u(f(y).baseText(`settings.provisioningConfirmDialog.link.docs`)),9,he)]),_:1})])],64)):(t(),a(m,{key:0},[i(`div`,ce,[b(f(I),{color:`text-base`},{default:T(()=>[n(u(f(y).baseText(e.newProvisioningSetting===`instance_and_project_roles`?`settings.provisioningConfirmDialog.breakingChangeDescription.firstSentence.partOne.withProjectRoles`:`settings.provisioningConfirmDialog.breakingChangeDescription.firstSentence.partOne`)),1)]),_:1}),b(f(I),{class:h(r.$style.descriptionTextPartTwo),color:`text-base`},{default:T(()=>[n(u(f(y).baseText(`settings.provisioningConfirmDialog.breakingChangeDescription.firstSentence.partTwo`)),1)]),_:1},8,[`class`])]),i(`div`,le,[b(f(I),{color:`text-base`},{default:T(()=>[i(`a`,{href:`https://docs.n8n.io/user-management/${e.authProtocol}/setup/`,target:`_blank`},u(f(y).baseText(`settings.provisioningConfirmDialog.link.docs`)),9,ue)]),_:1})]),i(`div`,de,[g(b(f(I),{color:`text-base`},null,512),[[c,f(y).baseText(`settings.provisioningConfirmDialog.breakingChangeDescription.secondLine`)]])]),i(`ul`,{class:h([r.$style.list,`mb-s`])},[i(`li`,null,[b(f(I),{color:`text-base`},{default:T(()=>[n(u(f(y).baseText(`settings.provisioningConfirmDialog.button.downloadInstanceRolesCsv`)),1)]),_:1}),f(A)?(t(),w(f(D),{key:1,icon:`check`,color:`success`,class:h(r.$style.icon)},null,8,[`class`])):(t(),w(f(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:h([r.$style.button,`n8n-button--highlight`]),onClick:H},null,8,[`disabled`,`loading`,`class`]))]),V.value?(t(),a(`li`,fe,[b(f(I),{color:`text-base`},{default:T(()=>[n(u(f(y).baseText(`settings.provisioningConfirmDialog.button.downloadProjectRolesCsv`)),1)]),_:1}),f(N)?(t(),w(f(D),{key:1,icon:`check`,color:`success`,class:h(r.$style.icon)},null,8,[`class`])):(t(),w(f(M),{key:0,variant:`ghost`,"native-type":`button`,icon:`file-download`,"data-test-id":`provisioning-download-project-roles-csv-button`,disabled:C.value,loading:C.value,class:h([r.$style.button,`n8n-button--highlight`]),onClick:U},null,8,[`disabled`,`loading`,`class`]))])):d(``,!0)],2)],64)),i(`div`,ge,[b(f(j),{class:h(r.$style.card)},{default:T(()=>[b(f(z),{modelValue:k.value,"onUpdate:modelValue":o[0]||=e=>k.value=e,disabled:!R.value&&(!f(A)||V.value&&!f(N)),"data-test-id":`provisioning-confirmation-checkbox`},{label:T(()=>[b(f(I),{color:`text-base`},{default:T(()=>[n(u(f(y).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`}}]]),ve={class:`mt-2xs mb-s`},ye={key:0},be={key:1},xe=c({__name:`SamlSettingsForm`,setup(e,{expose:s}){let c=E(),m=Y(),g=W(),_=U(),v=ee(),y=o(!1),x=o(),S=o(!1),C={URL:`url`,XML:`xml`},w=o([{label:c.baseText(`settings.sso.settings.ips.options.url`),value:C.URL},{label:c.baseText(`settings.sso.settings.ips.options.xml`),value:C.XML}]),D=o(C.URL),O=o(),j=o(),N=o(),P=o(!1),{formValue:F,isUserRoleProvisioningChanged:I,saveProvisioningConfig:L,shouldPromptUserToConfirmUserRoleProvisioningChange:R}=ae(X.SAML);async function B(){if(m.isEnterpriseSamlEnabled)try{await V()}catch(e){_.showError(e,`error`)}}let V=async()=>{let e=await m.getSamlConfig();N.value=e?.entityID,x.value=e?.returnUrl,e?.metadataUrl?D.value=C.URL:e?.metadata&&(D.value=C.XML),j.value=e?.metadata,O.value=e?.metadataUrl,S.value=e.loginEnabled??!1},H=l(()=>{if(y.value)return!1;let e=()=>D.value===C.URL?!!O.value&&O.value!==m.samlConfig?.metadataUrl:D.value===C.XML?!!j.value&&j.value!==m.samlConfig?.metadata:!1,t=m.isSamlLoginEnabled!==S.value;return I.value||e()||t}),G=l(()=>D.value===C.URL?!!O.value:D.value===C.XML?!!j.value:!1),K=e=>{if(!e){re(`Single Sign-On SAML: telemtetry data undefined on submit`,{level:`error`});return}let t={instance_id:q().instanceId,authentication_method:X.SAML,identity_provider:e.metadataUrl?`metadata`:`xml`,is_active:e.loginEnabled??!1};g.track(`User updated single sign on settings`,t)},te=async()=>await v.confirm(c.baseText(`settings.sso.confirmMessage.beforeSaveForm.message`,{interpolate:{protocol:`SAML`}}),c.baseText(`settings.sso.confirmMessage.beforeSaveForm.headline`,{interpolate:{protocol:`SAML`}}),{cancelButtonText:c.baseText(`settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText`),confirmButtonText:c.baseText(`settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText`)}),ne=async()=>{let e=await v.confirm(c.baseText(`settings.sso.settings.save.testConnection.message`),c.baseText(`settings.sso.settings.save.testConnection.title`),{confirmButtonText:c.baseText(`settings.sso.settings.save.testConnection.test`),cancelButtonText:c.baseText(`settings.sso.settings.save.activate.cancel`)});return e===`confirm`?(await Q(),await v.confirm(c.baseText(`settings.sso.settings.save.confirmTestConnection.message`),c.baseText(`settings.sso.settings.save.confirmTestConnection.title`),{confirmButtonText:c.baseText(`settings.sso.settings.save.confirmTestConnection.confirm`),cancelButtonText:c.baseText(`settings.sso.settings.save.activate.cancel`)})):e},Z=async(e=!1)=>{try{y.value=!0,oe();let t=S.value!==m.isSamlLoginEnabled&&m.isSamlLoginEnabled===!0;if(t&&await te()!==`confirm`)return;if(!e&&R({currentLoginEnabled:!!m.isSamlLoginEnabled,loginEnabledFormValue:S.value})){P.value=!0;return}P.value=!1;let n=D.value===C.URL?{metadataUrl:O.value}:{metadata:j.value};if(!m.isSamlLoginEnabled&&S.value&&(await m.saveSamlConfig(n),await ne()!==`confirm`))return;let r=await m.saveSamlConfig({...n,loginEnabled:S.value});await L(t),m.selectedAuthProtocol=X.SAML,await V(),K(r)}catch(e){_.showError(e,c.baseText(`settings.sso.settings.save.error`));return}finally{y.value=!1}},Q=async()=>{try{let e=D.value===C.URL?{metadataUrl:O.value}:{metadata:j.value},t=await m.testSamlConfig(e);typeof window<`u`&&window.open(t,`_blank`)}catch(e){_.showError(e,`error`)}},oe=()=>{if(D.value===C.URL)try{let e=new URL(O.value);if(e.protocol!==`https:`&&e.protocol!==`http:`)throw Error(`The provided protocol is not supported`)}catch{throw Error(c.baseText(`settings.sso.settings.ips.url.invalid`))}};return s({hasUnsavedChanges:l(()=>H.value),onSave:Z}),p(async()=>{await B()}),(e,o)=>(t(),a(`div`,null,[i(`div`,{class:h(e.$style.group)},[i(`label`,null,u(f(c).baseText(`settings.sso.settings.redirectUrl.label`)),1),b(J,{value:x.value,"copy-button-text":f(c).baseText(`generic.clickToCopy`),"toast-title":f(c).baseText(`settings.sso.settings.redirectUrl.copied`)},null,8,[`value`,`copy-button-text`,`toast-title`]),i(`small`,null,u(f(c).baseText(`settings.sso.settings.redirectUrl.help`)),1)],2),i(`div`,{class:h(e.$style.group)},[i(`label`,null,u(f(c).baseText(`settings.sso.settings.entityId.label`)),1),b(J,{value:N.value,"copy-button-text":f(c).baseText(`generic.clickToCopy`),"toast-title":f(c).baseText(`settings.sso.settings.entityId.copied`)},null,8,[`value`,`copy-button-text`,`toast-title`]),i(`small`,null,u(f(c).baseText(`settings.sso.settings.entityId.help`)),1)],2),i(`div`,{class:h(e.$style.group)},[i(`label`,null,u(f(c).baseText(`settings.sso.settings.ips.label`)),1),i(`div`,ve,[b(f(A),{modelValue:D.value,"onUpdate:modelValue":o[0]||=e=>D.value=e,options:w.value},null,8,[`modelValue`,`options`])]),D.value===C.URL?(t(),a(`div`,ye,[b(f(k),{modelValue:O.value,"onUpdate:modelValue":o[1]||=e=>O.value=e,type:`text`,name:`metadataUrl`,size:`large`,placeholder:f(c).baseText(`settings.sso.settings.ips.url.placeholder`),"data-test-id":`sso-provider-url`},null,8,[`modelValue`,`placeholder`]),i(`small`,null,u(f(c).baseText(`settings.sso.settings.ips.url.help`)),1)])):d(``,!0),D.value===C.XML?(t(),a(`div`,be,[b(f(k),{modelValue:j.value,"onUpdate:modelValue":o[2]||=e=>j.value=e,type:`textarea`,name:`metadata`,rows:4,"data-test-id":`sso-provider-xml`},null,8,[`modelValue`]),i(`small`,null,u(f(c).baseText(`settings.sso.settings.ips.xml.help`)),1)])):d(``,!0),b(ie,{modelValue:f(F),"onUpdate:modelValue":o[3]||=e=>r(F)?F.value=e:null,"auth-protocol":`saml`},null,8,[`modelValue`]),b(_e,{modelValue:P.value,"onUpdate:modelValue":o[4]||=e=>P.value=e,"new-provisioning-setting":f(F),"auth-protocol":`saml`,onConfirmProvisioning:o[5]||=e=>Z(!0),onCancel:o[6]||=e=>P.value=!1},null,8,[`modelValue`,`new-provisioning-setting`]),i(`div`,{class:h([e.$style.group,e.$style.checkboxGroup])},[b(f(z),{modelValue:S.value,"onUpdate:modelValue":o[7]||=e=>S.value=e,"data-test-id":`sso-toggle`,label:f(c).baseText(`settings.sso.activated`)},null,8,[`modelValue`,`label`])],2)],2),i(`div`,{class:h(e.$style.buttons)},[b(f(M),{disabled:!H.value,loading:y.value,size:`large`,"data-test-id":`sso-save`,onClick:o[8]||=e=>Z(!1)},{default:T(()=>[n(u(f(c).baseText(`settings.sso.settings.save`)),1)]),_:1},8,[`disabled`,`loading`]),b(f(M),{variant:`subtle`,disabled:!G.value,size:`large`,"data-test-id":`sso-test`,onClick:Q},{default:T(()=>[n(u(f(c).baseText(`settings.sso.settings.test`)),1)]),_:1},8,[`disabled`])],2)]))}}),$={switch:`_switch_1blmf_128`,buttons:`_buttons_1blmf_134`,group:`_group_1blmf_143`,checkboxGroup:`_checkboxGroup_1blmf_159`,actionBox:`_actionBox_1blmf_163`,footer:`_footer_1blmf_167`},Se=B(xe,[[`__cssModules`,{$style:$}]]),Ce=B(c({__name:`OidcSettingsForm`,setup(e,{expose:s}){let c=E(),d=Y(),g=W(),_=U(),v=ee(),y=o(!1),x=o(``),S=o(``),w=o(``),D=o(!1),{formValue:A,isUserRoleProvisioningChanged:j,saveProvisioningConfig:N,shouldPromptUserToConfirmUserRoleProvisioningChange:F}=ae(X.OIDC),I=o(`select_account`),L=e=>{I.value=e},R=[{label:c.baseText(`settings.sso.settings.oidc.prompt.login`),value:`login`},{label:c.baseText(`settings.sso.settings.oidc.prompt.none`),value:`none`},{label:c.baseText(`settings.sso.settings.oidc.prompt.consent`),value:`consent`},{label:c.baseText(`settings.sso.settings.oidc.prompt.select_account`),value:`select_account`},{label:c.baseText(`settings.sso.settings.oidc.prompt.create`),value:`create`}],B=o(``),V=async()=>{let e=await d.getOidcConfig();S.value=e.clientId,w.value=e.clientSecret,x.value=e.discoveryEndpoint,I.value=e.prompt??`select_account`,B.value=e.authenticationContextClassReference?.join(`,`)||``},H=async()=>{if(d.isEnterpriseOidcEnabled)try{await V()}catch(e){_.showError(e,`error`)}},G=l(()=>{let e=B.value.split(`,`).map(e=>e.trim()).filter(Boolean).join(`,`),t=d.oidcConfig?.authenticationContextClassReference?.join(`,`)||``;return d.oidcConfig?.clientId===S.value&&d.oidcConfig?.clientSecret===w.value&&d.oidcConfig?.discoveryEndpoint===x.value&&d.oidcConfig?.loginEnabled===d.isOidcLoginEnabled&&d.oidcConfig?.prompt===I.value&&!j.value&&t===B.value&&e===t});async function K(e=!1){if(!e&&F({currentLoginEnabled:!!d.oidcConfig?.loginEnabled,loginEnabledFormValue:d.isOidcLoginEnabled})){D.value=!0;return}let t=d.oidcConfig?.loginEnabled!==d.isOidcLoginEnabled&&d.oidcConfig?.loginEnabled===!0;if(t&&await v.confirm(c.baseText(`settings.sso.confirmMessage.beforeSaveForm.message`,{interpolate:{protocol:`OIDC`}}),c.baseText(`settings.sso.confirmMessage.beforeSaveForm.headline`,{interpolate:{protocol:`OIDC`}}),{cancelButtonText:c.baseText(`settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText`),confirmButtonText:c.baseText(`settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText`)})!==`confirm`)return;let n=B.value.split(`,`).map(e=>e.trim()).filter(Boolean);try{y.value=!0;let e=await d.saveOidcConfig({clientId:S.value,clientSecret:w.value,discoveryEndpoint:x.value,prompt:I.value,loginEnabled:d.isOidcLoginEnabled,authenticationContextClassReference:n});await N(t),D.value=!1,d.selectedAuthProtocol=X.OIDC,w.value=e.clientSecret,te(e)}catch(e){_.showError(e,c.baseText(`settings.sso.settings.save.error_oidc`));return}finally{y.value=!1,await V()}}function te(e){let t={instance_id:q().instanceId,authentication_method:X.OIDC,discovery_endpoint:e.discoveryEndpoint,is_active:e.loginEnabled};g.track(`User updated single sign on settings`,t)}return s({hasUnsavedChanges:l(()=>!G.value&&!y.value),onSave:K}),p(async()=>{await H()}),(e,o)=>(t(),a(`div`,null,[i(`div`,{class:h(e.$style.group)},[o[10]||=i(`label`,null,`Redirect URL`,-1),b(J,{value:f(d).oidc.callbackUrl,"copy-button-text":f(c).baseText(`generic.clickToCopy`),"toast-title":`Redirect URL copied to clipboard`},null,8,[`value`,`copy-button-text`]),o[11]||=i(`small`,null,`Copy the Redirect URL to configure your OIDC provider `,-1)],2),i(`div`,{class:h(e.$style.group)},[o[12]||=i(`label`,null,`Discovery Endpoint`,-1),b(f(k),{"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]||=i(`small`,null,`Paste here your discovery endpoint`,-1)],2),i(`div`,{class:h(e.$style.group)},[o[14]||=i(`label`,null,`Client ID`,-1),b(f(k),{"model-value":S.value,type:`text`,"data-test-id":`oidc-client-id`,"onUpdate:modelValue":o[1]||=e=>S.value=e},null,8,[`model-value`]),o[15]||=i(`small`,null,`The client ID you received when registering your application with your provider`,-1)],2),i(`div`,{class:h(e.$style.group)},[o[16]||=i(`label`,null,`Client Secret`,-1),b(f(k),{"model-value":w.value,type:`password`,"data-test-id":`oidc-client-secret`,"onUpdate:modelValue":o[2]||=e=>w.value=e},null,8,[`model-value`]),o[17]||=i(`small`,null,`The client Secret you received when registering your application with your provider`,-1)],2),i(`div`,{class:h(e.$style.group)},[o[18]||=i(`label`,null,`Prompt`,-1),b(f(P),{"model-value":I.value,"data-test-id":`oidc-prompt`,"onUpdate:modelValue":L},{default:T(()=>[(t(),a(m,null,C(R,e=>b(f(O),{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]||=i(`small`,null,`The prompt parameter to use when authenticating with the OIDC provider`,-1)],2),b(ie,{modelValue:f(A),"onUpdate:modelValue":o[3]||=e=>r(A)?A.value=e:null,"auth-protocol":`oidc`},null,8,[`modelValue`]),b(_e,{modelValue:D.value,"onUpdate:modelValue":o[4]||=e=>D.value=e,"new-provisioning-setting":f(A),"auth-protocol":`oidc`,onConfirmProvisioning:o[5]||=e=>K(!0),onCancel:o[6]||=e=>D.value=!1},null,8,[`modelValue`,`new-provisioning-setting`]),i(`div`,{class:h(e.$style.group)},[o[20]||=i(`label`,null,`Authentication Context Class Reference`,-1),b(f(k),{"model-value":B.value,type:`textarea`,"data-test-id":`oidc-authentication-context-class-reference`,placeholder:`mfa, phrh, pwd`,"onUpdate:modelValue":o[7]||=e=>B.value=e},null,8,[`model-value`]),o[21]||=i(`small`,null,`ACR values to include in the authorization request (acr_values parameter), separated by commas in order of preference.`,-1)],2),i(`div`,{class:h([e.$style.group,e.$style.checkboxGroup])},[b(f(z),{modelValue:f(d).isOidcLoginEnabled,"onUpdate:modelValue":o[8]||=e=>f(d).isOidcLoginEnabled=e,"data-test-id":`sso-oidc-toggle`,label:f(c).baseText(`settings.sso.activated`)},null,8,[`modelValue`,`label`])],2),i(`div`,{class:h(e.$style.buttons)},[b(f(M),{"data-test-id":`sso-oidc-save`,size:`large`,loading:y.value,disabled:y.value||G.value,onClick:o[9]||=e=>K(!1)},{default:T(()=>[n(u(f(c).baseText(`settings.sso.settings.save`)),1)]),_:1},8,[`loading`,`disabled`])],2)]))}}),[[`__cssModules`,{$style:$}]]),we={class:`pb-2xl`},Te={href:`https://docs.n8n.io/user-management/saml/`,target:`_blank`},Ee={key:1,"data-test-id":`sso-content-licensed`},De={key:2,"data-test-id":`sso-content-licensed`},Oe=B(c({__name:`SettingsSso`,setup(e){let r=E(),s=Y(),c=G(),g=ne(),_=S(`samlForm`),v=S(`oidcForm`),x=o(!1),D=o(null),k=l(()=>[{label:X.SAML.toUpperCase(),value:X.SAML},{label:s.isEnterpriseOidcEnabled?X.OIDC.toUpperCase():`${X.OIDC.toUpperCase()} (${r.baseText(`generic.upgradeToEnterprise`)})`,value:X.OIDC}]),A=l(()=>s.isEnterpriseSamlEnabled||s.isEnterpriseOidcEnabled),j=l(()=>z.value===X.SAML?_.value:z.value===X.OIDC?v.value:null),z=o(X.SAML);function B(e){z.value=e}let V=()=>{g.goToUpgrade(`sso`,`upgrade-sso`)};L((e,t,n)=>{if(!j.value?.hasUnsavedChanges){n();return}D.value=n,x.value=!0});async function H(){x.value=!1,await j.value?.onSave(),D.value?.(),D.value=null}function U(){x.value=!1,D.value?.(),D.value=null}function W(){x.value=!1,D.value?.(!1),D.value=null}return p(()=>{c.set(r.baseText(`settings.sso.title`)),s.initializeSelectedProtocol(),z.value=s.selectedAuthProtocol||X.SAML}),(e,o)=>(t(),a(`div`,we,[i(`div`,{class:h(e.$style.heading)},[b(f(F),{size:`2xlarge`},{default:T(()=>[n(u(f(r).baseText(`settings.sso.title`)),1)]),_:1})],2),b(f(R),null,{default:T(()=>[n(u(f(r).baseText(`settings.sso.info`))+` `,1),i(`a`,Te,u(f(r).baseText(`settings.sso.info.link`)),1)]),_:1}),A.value?(t(),a(`div`,{key:0,"data-test-id":`sso-auth-protocol-select`,class:h(e.shared.group)},[o[2]||=i(`label`,null,`Select Authentication Protocol`,-1),i(`div`,null,[b(f(P),{filterable:``,"model-value":z.value,placeholder:f(r).baseText(`parameterInput.select`),"onUpdate:modelValue":B,onKeydown:o[0]||=y(()=>{},[`stop`])},{default:T(()=>[(t(!0),a(m,null,C(k.value,({label:e,value:n})=>(t(),w(f(O),{key:n,value:n,label:e,"data-test-id":`credential-select-option`},null,8,[`value`,`label`]))),128))]),_:1},8,[`model-value`,`placeholder`])])],2)):d(``,!0),f(s).isEnterpriseSamlEnabled&&z.value===f(X).SAML?(t(),a(`div`,Ee,[b(Se,{ref:`samlForm`},null,512)])):d(``,!0),f(s).isEnterpriseOidcEnabled&&z.value===f(X).OIDC?(t(),a(`div`,De,[b(Ce,{ref:`oidcForm`},null,512)])):d(``,!0),A.value?d(``,!0):(t(),w(f(N),{key:3,"data-test-id":`sso-content-unlicensed`,class:h(e.$style.actionBox),description:f(r).baseText(`settings.sso.actionBox.description`),"button-text":f(r).baseText(`settings.sso.actionBox.buttonText`),"onClick:button":V},{heading:T(()=>[i(`span`,null,u(f(r).baseText(`settings.sso.actionBox.title`)),1)]),_:1},8,[`class`,`description`,`button-text`])),b(f(K),{modelValue:x.value,"onUpdate:modelValue":o[1]||=e=>x.value=e,title:f(r).baseText(`settings.sso.settings.unsavedChanges.title`),width:`500`,"data-test-id":`sso-unsaved-changes-dialog`},{footer:T(()=>[i(`div`,{class:h(e.$style.dialogFooter)},[b(f(M),{variant:`ghost`,"data-test-id":`sso-unsaved-keep-editing`,onClick:W},{default:T(()=>[n(u(f(r).baseText(`settings.sso.settings.unsavedChanges.keepEditing`)),1)]),_:1}),b(f(M),{variant:`outline`,"data-test-id":`sso-unsaved-leave`,onClick:U},{default:T(()=>[n(u(f(r).baseText(`settings.sso.settings.unsavedChanges.leaveWithoutSaving`)),1)]),_:1}),b(f(M),{variant:`solid`,"data-test-id":`sso-unsaved-save-and-leave`,onClick:H},{default:T(()=>[n(u(f(r).baseText(`settings.sso.settings.unsavedChanges.saveAndLeave`)),1)]),_:1})],2)]),default:T(()=>[b(f(I),null,{default:T(()=>[n(u(f(r).baseText(`settings.sso.settings.unsavedChanges.message`)),1)]),_:1})]),_:1},8,[`modelValue`,`title`])]))}}),[[`__cssModules`,{shared:$,$style:{heading:`_heading_18pwa_125`,actionBox:`_actionBox_18pwa_129`,dialogFooter:`_dialogFooter_18pwa_133`}}]]);export{Oe as default};
//# sourceMappingURL=SettingsSso-BsHkwW26.js.map