UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

2 lines 17.4 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.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]=`14297b4a-3773-4a6b-a5d9-3b4378ca4904`,e._sentryDebugIdIdentifier=`sentry-dbid-14297b4a-3773-4a6b-a5d9-3b4378ca4904`)})()}catch{}import{o as e}from"./chunk-DxpFCn6T.js";import{$ as t,A as n,C as r,E as i,F 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,dt as g,j as _,rt as v,vn as y,w as b,yt as x}from"./vue.runtime.esm-bundler-D9KLAxvJ.js";import{bt as S,st as C,xt as w}from"./_MapCache-CUJwh2qp.js";import{$i as T,Bt as E,Fi as D,K as O,M as k,Mi as A,Qi as ee,Ri as te,Rt as j,Yi as ne,Zi as M,_ as N,lt as re}from"./src-wni2AGA3.js";import{t as P}from"./_plugin-vue_export-helper-Dm3nT7Ps.js";import"./sanitize-html-my1ogl5v.js";import{As as F,Hr as I,Po as ie,Tr as ae,_o as oe,gr as L,jr as se,r as ce,t as le,vn as ue}from"./users.store-BHWXXawf.js";import{t as R}from"./radio-BbcMeDSx.js";import{t as de}from"./Alert-Brqgj777.js";import{Ps as z,gl as fe,ii as B,ll as V,pl as pe,wl as me,yi as he}from"./constants-CIP7tKq1.js";import"./merge-BqvKZ38d.js";import"./_baseOrderBy-CaKruttV.js";import"./dateformat-CYfyw486.js";import"./useDebounce-CTeIt-cH.js";import"./versions.store-CNV-esbv.js";import{t as ge}from"./usePageRedirectionHelper-Dxb_B6-R.js";import{t as _e}from"./useClipboard-D72kaMkX.js";import{r as H}from"./dateFormatter-aoRZizgK.js";import{n as U}from"./sso.store-DmM4R1YZ.js";import{t as ve}from"./userRoleProvisioning.store-NJANpy_Q.js";var W=[`disabled`],G={key:1},K=P(c({__name:`SettingsUsersRoleCell`,props:{data:{},roles:{},actions:{},loading:{type:Boolean,default:!1}},emits:[`update:role`],setup(e,{emit:a}){let o=e,s=a,c=l(()=>o.data.role??B.Default),d=l(()=>o.data.role!==B.Owner),p=l(()=>o.roles[c.value]?.label),m=e=>{s(`update:role`,{role:e,userId:o.data.id})};return(e,a)=>(t(),i(`div`,null,[d.value?(t(),b(f(E),{key:0,placement:`bottom-start`,items:o.actions,disabled:o.loading,"data-test-id":`user-role-dropdown`,onSelect:m},{activator:x(()=>[r(`button`,{class:h(e.$style.roleLabel),type:`button`,disabled:o.loading},[_(f(M),{color:`text-dark`},{default:x(()=>[n(u(p.value),1)]),_:1}),o.loading?(t(),b(f(T),{key:0,color:`text-dark`,icon:`spinner`,spin:``,size:`large`})):(t(),b(f(T),{key:1,color:`text-dark`,icon:`chevron-down`,size:`large`}))],10,W)]),menuItem:x(t=>[_(f(R),{"model-value":c.value,label:t.id},{default:x(()=>[r(`span`,{class:h(e.$style.radioLabel)},[_(f(M),{color:`text-dark`,class:`pb-3xs`},{default:x(()=>[n(u(t.label),1)]),_:2},1024),_(f(M),{color:`text-dark`,size:`small`},{default:x(()=>[n(u(o.roles[t.id]?.desc),1)]),_:2},1024)],2)]),_:2},1032,[`model-value`,`label`])]),_:1},8,[`items`,`disabled`])):(t(),i(`span`,G,u(p.value),1))]))}}),[[`__cssModules`,{$style:{roleLabel:`_roleLabel_13imy_125`,radioLabel:`_radioLabel_13imy_139`,removeUser:`_removeUser_13imy_149`}}]]),q=P(c({__name:`SettingsUsersProjectsCell`,props:{data:{}},setup(e){let n=e,a=S(),s=o([B.Owner,B.Admin]),c=o(2),p=l(()=>n.data.role&&s.value.includes(n.data.role)?[a.baseText(`settings.users.table.row.allProjects`)]:n.data.projectRelations?.length?n.data.projectRelations.map(({name:e})=>e):[a.baseText(`settings.users.table.row.personalProject`)]),g=l(()=>({visible:p.value.slice(0,c.value),additional:p.value.slice(c.value)}));return(e,n)=>(t(),i(`div`,{class:h(e.$style.projects)},[(t(!0),i(m,null,v(g.value.visible,(n,a)=>(t(),i(m,{key:a},[r(`span`,{class:h(e.$style.project)},u(n),3),a<g.value.visible.length-1?(t(),i(`span`,{key:0,class:h(e.$style.comma)},`,`,2)):d(``,!0)],64))),128)),g.value.additional.length>0?(t(),i(`span`,{key:0,class:h(e.$style.comma)},`,`,2)):d(``,!0),g.value.additional.length>0?(t(),b(f(A),{key:1},{content:x(()=>[r(`ul`,{class:h(e.$style.projectList)},[(t(!0),i(m,null,v(g.value.additional,(e,n)=>(t(),i(`li`,{key:n},u(e),1))),128))],2)]),default:x(()=>[r(`span`,{class:h(e.$style.project)},`+ `+u(g.value.additional.length),3)]),_:1})):d(``,!0)],2))}}),[[`__cssModules`,{$style:{projects:`_projects_1ynwg_125`,project:`_project_1ynwg_125`,comma:`_comma_1ynwg_140`,projectList:`_projectList_1ynwg_145`}}]]),J=c({__name:`SettingsUsersActionsCell`,props:{data:{},actions:{}},emits:[`action`],setup(e,{emit:n}){let r=e,a=n,o=e=>{a(`action`,{action:e,userId:r.data.id})};return(e,n)=>(t(),i(`div`,null,[r.data.signInType!==`ldap`&&r.actions.length>0?(t(),b(f(j),{key:0,placement:`bottom`,actions:r.actions,theme:`dark`,onAction:o},null,8,[`actions`])):d(``,!0)]))}}),Y=c({__name:`SettingsUsersLastActiveCell`,props:{data:{}},setup(e){let n=S(),r=e,a=l(()=>r.data.lastActiveAt?H(r.data.lastActiveAt):n.baseText(`generic.never`));return(e,n)=>(t(),i(`span`,null,u(a.value),1))}}),X={class:`pt-xs pb-xs`},ye=c({__name:`SettingsUsersTable`,props:s({data:{},actions:{},loading:{type:Boolean},canEditRole:{type:Boolean},updatingRoleUserId:{}},{tableOptions:{default:()=>({})},tableOptionsModifiers:{}}),emits:s([`update:options`,`update:role`,`action`],[`update:tableOptions`]),setup(e,{emit:s}){let c=S(),d=F(),p=e,m=s,h=g(e,`tableOptions`),v=l(()=>p.data.items),C=o([{title:c.baseText(`settings.users.table.header.user`),key:`name`,width:400,value(e){return{...e,isPendingUser:e.isPending}}},{title:c.baseText(`settings.users.table.header.accountType`),key:`role`},{title:c.baseText(`settings.users.table.header.lastActive`),key:`lastActiveAt`,value(e){return{...e,lastActiveAt:e.lastActiveAt??``}}},{title:c.baseText(`settings.users.table.header.2fa`),key:`mfaEnabled`,value(e){return e.mfaEnabled?c.baseText(`settings.users.table.row.2fa.enabled`):c.baseText(`settings.users.table.row.2fa.disabled`)}},{title:c.baseText(`projects.menu.title`),key:`projects`,disableSort:!0,value(){}},{title:``,key:`actions`,align:`end`,width:46,disableSort:!0,value(){}}]),w=l(()=>({[B.Owner]:{label:c.baseText(`auth.roles.owner`),desc:``},[B.Admin]:{label:c.baseText(`auth.roles.admin`),desc:c.baseText(`settings.users.table.row.role.description.admin`)},[B.Member]:{label:c.baseText(`auth.roles.member`),desc:c.baseText(`settings.users.table.row.role.description.member`)},...d.isChatFeatureEnabled&&{[B.ChatUser]:{label:c.baseText(`auth.roles.chatUser`),desc:c.baseText(`settings.users.table.row.role.description.chatUser`)}},[B.Default]:{label:c.baseText(`auth.roles.default`),desc:``}})),T=l(()=>[{id:B.Member,label:c.baseText(`auth.roles.member`)},...d.isChatFeatureEnabled?[{id:B.ChatUser,label:c.baseText(`auth.roles.chatUser`)}]:[],{id:B.Admin,label:c.baseText(`auth.roles.admin`)}]),E=l(()=>!(!L([`rbac`],{rbac:{scope:[`user:update`,`user:changeRole`]}})||!p.canEditRole)),D=e=>e.isOwner?[]:p.actions.filter(t=>t.guard?.({...e,isPendingUser:e.isPending})??!0),O=({role:e,userId:t})=>{m(`update:role`,{role:e,userId:t})};return(o,s)=>(t(),i(`div`,null,[_(f(N),{"sort-by":h.value.sortBy,"onUpdate:sortBy":s[1]||=e=>h.value.sortBy=e,page:h.value.page,"onUpdate:page":s[2]||=e=>h.value.page=e,"items-per-page":h.value.itemsPerPage,"onUpdate:itemsPerPage":s[3]||=e=>h.value.itemsPerPage=e,headers:C.value,items:v.value,"items-length":e.data.count,"page-sizes":[10,25,50],"onUpdate:options":s[4]||=e=>m(`update:options`,e)},{"item.name":x(({value:e})=>[r(`div`,X,[_(f(k),y(a(e)),null,16)])]),"item.role":x(({item:e})=>[E.value?(t(),b(K,{key:0,data:e,roles:w.value,actions:T.value,loading:p.updatingRoleUserId===e.id,"onUpdate:role":O},null,8,[`data`,`roles`,`actions`,`loading`])):(t(),b(f(M),{key:1,color:`text-dark`},{default:x(()=>[n(u(w.value[e.role??f(B).Default]?.label),1)]),_:2},1024))]),"item.lastActiveAt":x(({item:e})=>[_(Y,{data:e},null,8,[`data`])]),"item.projects":x(({item:e})=>[_(q,{data:e},null,8,[`data`])]),"item.actions":x(({item:e})=>[_(J,{data:e,actions:D(e),onAction:s[0]||=e=>o.$emit(`action`,e)},null,8,[`data`,`actions`])]),_:2},1032,[`sort-by`,`page`,`items-per-page`,`headers`,`items`,`items-length`])]))}}),Z=P(c({__name:`SettingsUsersView`,setup(e){let a=_e(),{showToast:s,showError:c}=ae(),m=se(),g=F(),v=ce(),y=le(),E=U(),k=ue(),j=ge(),N=ve(),P=I(),R=S(),z=o(``),H=o({page:0,itemsPerPage:10,sortBy:[{id:`firstName`,desc:!1},{id:`lastName`,desc:!1},{id:`email`,desc:!1}]}),W=l(()=>L([`defaultUser`])),G=l(()=>N.provisioningConfig?.scopesProvisionInstanceRole||!1),K=l(()=>P.isVariantEnabled(V.name,V.variant)),q=l(()=>!!E.isSamlLoginEnabled||!!E.isOidcLoginEnabled);p(async()=>{k.set(R.baseText(`settings.users`)),W.value||await $(H.value),await N.getProvisioningConfig()});let J=l(()=>[{label:R.baseText(`settings.users.actions.generateInviteLink`),value:`generateInviteLink`,guard:e=>K.value&&L([`rbac`],{rbac:{scope:`user:generateInviteLink`}})&&y.usersLimitNotReached&&e.id!==y.currentUserId&&!e.firstName},{label:R.baseText(`settings.users.actions.copyInviteLink`),value:`copyInviteLink`,guard:e=>!K.value&&y.usersLimitNotReached&&!e.firstName&&!!e.inviteAcceptUrl},{label:R.baseText(`settings.users.actions.reinvite`),value:`reinvite`,guard:e=>y.usersLimitNotReached&&!e.firstName&&g.isSmtpSetup},{label:R.baseText(`settings.users.actions.delete`),value:`delete`,guard:e=>L([`rbac`],{rbac:{scope:`user:delete`}})&&e.id!==y.currentUserId},{label:R.baseText(`settings.users.actions.copyPasswordResetLink`),value:`copyPasswordResetLink`,guard:e=>L([`rbac`],{rbac:{scope:`user:resetPassword`}})&&y.usersLimitNotReached&&!e.isPendingUser&&e.id!==y.currentUserId},{label:R.baseText(`settings.users.actions.allowSSOManualLogin`),value:`allowSSOManualLogin`,guard:e=>q.value&&!e.settings?.allowSSOManualLogin},{label:R.baseText(`settings.users.actions.disallowSSOManualLogin`),value:`disallowSSOManualLogin`,guard:e=>q.value&&e.settings?.allowSSOManualLogin===!0}]),Y=l(()=>g.isEnterpriseFeatureEnabled[pe.AdvancedPermissions]),X=l(()=>[{value:B.Member,label:R.baseText(`auth.roles.member`)},{value:B.ChatUser,label:R.baseText(`auth.roles.chatUser`),disabled:!Y.value},{value:B.Admin,label:R.baseText(`auth.roles.admin`),disabled:!Y.value}]);async function Z({action:e,userId:t}){switch(e){case`delete`:await xe(t);break;case`reinvite`:await Se(t);break;case`copyInviteLink`:await Ce(t);break;case`generateInviteLink`:await we(t);break;case`copyPasswordResetLink`:await Te(t);break;case`allowSSOManualLogin`:await Ee(t);break;case`disallowSSOManualLogin`:await De(t);break}}function be(){v.openModalWithData({name:ie,data:{afterInvite:async()=>{await $(H.value)}}})}async function xe(e){v.openModalWithData({name:oe,data:{userId:e,afterDelete:async()=>{await $(H.value)}}})}async function Se(e){try{let t=y.usersList.state.items.find(t=>t.id===e);if(t?.email&&t?.role){if(![`global:admin`,`global:member`].includes(t.role))throw Error(`Invalid role name on reinvite`);await y.reinviteUser({email:t.email,role:t.role}),s({type:`success`,title:R.baseText(`settings.users.inviteResent`),message:R.baseText(`settings.users.emailSentTo`,{interpolate:{email:t.email??``}})})}}catch(e){c(e,R.baseText(`settings.users.userReinviteError`))}}async function Ce(e){let t=y.usersList.state.items.find(t=>t.id===e);t?.inviteAcceptUrl&&(a.copy(t.inviteAcceptUrl),s({type:`success`,title:R.baseText(`settings.users.inviteUrlCreated`),message:R.baseText(`settings.users.inviteUrlCreated.message`)}))}async function we(e){try{if(y.usersList.state.items.find(t=>t.id===e)){let t=await y.generateInviteLink({id:e});a.copy(t.link),s({type:`success`,title:R.baseText(`settings.users.inviteUrlCreated`),message:R.baseText(`settings.users.inviteUrlCreated.message`)})}}catch(e){c(e,R.baseText(`settings.users.inviteLinkError`))}}async function Te(e){try{let t=y.usersList.state.items.find(t=>t.id===e);if(t){let e=await y.getUserPasswordResetLink(t);a.copy(e.link),s({type:`success`,title:R.baseText(`settings.users.passwordResetUrlCreated`),message:R.baseText(`settings.users.passwordResetUrlCreated.message`)})}}catch(e){c(e,R.baseText(`settings.users.passwordResetLinkError`))}}async function Ee(e){let t=y.usersList.state.items.find(t=>t.id===e);t&&(t.settings||={},t.settings.allowSSOManualLogin=!0,await y.updateOtherUserSettings(e,t.settings),await $(H.value),s({type:`success`,title:R.baseText(`settings.users.allowSSOManualLogin`),message:R.baseText(`settings.users.allowSSOManualLogin.message`)}))}async function De(e){let t=y.usersList.state.items.find(t=>t.id===e);t?.settings&&(t.settings.allowSSOManualLogin=!1,await y.updateOtherUserSettings(e,t.settings),await $(H.value),s({type:`success`,title:R.baseText(`settings.users.disallowSSOManualLogin`),message:R.baseText(`settings.users.disallowSSOManualLogin.message`)}))}function Oe(){j.goToUpgrade(`settings-users`,`upgrade-users`)}function ke(){j.goToUpgrade(`settings-users`,`upgrade-advanced-permissions`)}let Q=o(null),Ae=async e=>{let t=y.usersList.state.items.find(t=>t.id===e.userId);if(!t){c(Error(`User not found`),R.baseText(`settings.users.userNotFound`));return}await je(t,e.role)},$=async({page:e,itemsPerPage:t,sortBy:n})=>{try{H.value={page:e,itemsPerPage:t,sortBy:n};let r=e*t,i=t,a=n.flatMap(({id:e,desc:t})=>{let n=t?`desc`:`asc`;return e===`name`?[`firstName:${n}`,`lastName:${n}`,`email:${n}`]:`${e}:${n}`}).filter(Me);await y.usersList.execute(0,{skip:r,take:i,sortBy:a,expand:[`projectRelations`],filter:{fullText:z.value.trim()}})}catch(e){c(e,R.baseText(`settings.users.table.update.error`))}};async function je(e,t){if(t===e.role)return;let n=e.firstName&&e.lastName?`${e.firstName} ${e.lastName}`:e.email??``,r=X.value.find(({value:e})=>e===t)?.label??t;if(!(t===B.ChatUser&&await m.confirm(R.baseText(`settings.users.userRoleUpdated.confirm.message`,{interpolate:{role:r}}),R.baseText(`settings.users.userRoleUpdated.confirm.title`,{interpolate:{user:n}}),{confirmButtonText:R.baseText(`settings.users.userRoleUpdated.confirm.button`),cancelButtonText:R.baseText(`settings.users.userRoleUpdated.cancel.button`)})!==`confirm`)){Q.value=e.id;try{await y.updateGlobalRole({id:e.id,newRoleName:t}),await $(H.value),s({type:`success`,title:R.baseText(`settings.users.userRoleUpdated`),message:R.baseText(`settings.users.userRoleUpdated.message`,{interpolate:{user:n,role:r}})})}catch(e){c(e,R.baseText(`settings.users.userRoleUpdatedError`))}finally{Q.value=null}}}let Me=e=>he.includes(e),Ne=C(()=>{H.value.page=0,$(H.value)},me(fe.INPUT.SEARCH)),Pe=e=>{z.value=e,Ne()};return(e,a)=>(t(),i(`div`,{class:h(e.$style.container)},[_(f(ne),{tag:`h1`,size:`2xlarge`,class:`mb-xl`},{default:x(()=>[n(u(f(R).baseText(`settings.users`))+` `,1),W.value?d(``,!0):(t(),b(f(M),{key:0,class:h(e.$style.userCount),color:`text-light`},{default:x(()=>[n(u(f(R).baseText(`settings.users.count`,{interpolate:{count:f(y).usersList.state.count},adjustToNumber:f(y).usersList.state.count})),1)]),_:1},8,[`class`]))]),_:1}),f(y).usersLimitNotReached?d(``,!0):(t(),i(`div`,{key:0,class:h(e.$style.setupInfoContainer)},[_(f(te),{heading:f(R).baseText(f(v).contextBasedTranslationKeys.users.settings.unavailable.title),description:f(R).baseText(f(v).contextBasedTranslationKeys.users.settings.unavailable.description),"button-text":f(R).baseText(f(v).contextBasedTranslationKeys.users.settings.unavailable.button),"onClick:button":Oe},null,8,[`heading`,`description`,`button-text`])],2)),Y.value?d(``,!0):(t(),b(f(O),{key:1},{default:x(()=>[_(f(w),{keypath:`settings.users.advancedPermissions.warning`,scope:`global`},{link:x(()=>[_(f(re),{"data-test-id":`upgrade-permissions-link`,size:`small`,onClick:ke},{default:x(()=>[n(u(f(R).baseText(`generic.upgrade`)),1)]),_:1})]),_:1})]),_:1})),G.value?(t(),i(`div`,{key:2,class:h(e.$style.container)},[_(de,{type:`info`,title:f(R).baseText(`settings.provisioningInstanceRolesHandledBySsoProvider.description`)},null,8,[`title`])],2)):d(``,!0),W.value?d(``,!0):(t(),i(`div`,{key:3,class:h(e.$style.buttonContainer)},[_(f(D),{class:h(e.$style.search),"model-value":z.value,placeholder:f(R).baseText(`settings.users.search.placeholder`),clearable:``,"data-test-id":`users-list-search`,"onUpdate:modelValue":Pe},{prefix:x(()=>[_(f(T),{icon:`search`})]),_:1},8,[`class`,`model-value`,`placeholder`]),_(f(A),{disabled:!q.value},{content:x(()=>[r(`span`,null,u(f(R).baseText(`settings.users.invite.tooltip`)),1)]),default:x(()=>[r(`div`,null,[_(f(ee),{disabled:q.value||!f(y).usersLimitNotReached||G.value,label:f(R).baseText(`settings.users.invite`),size:`large`,"data-test-id":`settings-users-invite-button`,onClick:be},null,8,[`disabled`,`label`])])]),_:1},8,[`disabled`])],2)),f(y).usersLimitNotReached||f(y).usersList.state.count>1?(t(),i(`div`,{key:4,class:h(e.$style.usersContainer)},[_(ye,{"table-options":H.value,"onUpdate:tableOptions":a[0]||=e=>H.value=e,"data-test-id":`settings-users-table`,"can-edit-role":!G.value,data:f(y).usersList.state,loading:f(y).usersList.isLoading,"updating-role-user-id":Q.value,actions:J.value,"onUpdate:options":$,"onUpdate:role":Ae,onAction:Z},null,8,[`table-options`,`can-edit-role`,`data`,`loading`,`updating-role-user-id`,`actions`])],2)):d(``,!0)],2))}}),[[`__cssModules`,{$style:{userCount:`_userCount_17a4t_125`,buttonContainer:`_buttonContainer_17a4t_130`,search:`_search_17a4t_137`,setupInfoContainer:`_setupInfoContainer_17a4t_141`,container:`_container_17a4t_145`}}]]);export{Z as default}; //# sourceMappingURL=SettingsUsersView-BSnYVAR1.js.map