PageSourceSearch

https://olympus.exatom.io/js/3471.57732d42.js

js exatom.io collected 2026-09-24 20:04:34 UTC 30,256 bytes, 2 lines download raw bytes

1"use strict";(self["webpackChunkappwork_vue_starter"]=self["webpackChunkappwork_vue_starter"]||[]).push([[3471],{22061:function(t,e,s){s.d(e,{A:function(){return c}});s(18111),s(22489);var a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"d-flex flex-column align-items-start"},[e("div",{staticClass:"d-flex flex-column align-items-end"},[e("table",{staticClass:"table table-sm table-striped",staticStyle:{width:"auto"}},[e("tbody",t._l(t.value,function(s){return e("tr",{key:s.client_hash},[e("td",{staticClass:"align-middle p-2"},[e("b-avatar",{staticClass:"text-primary font-weight-bolder letter-spacing-1px",attrs:{src:s.logo_url,size:"lg",text:s.name.substr(0,2),square:"",variant:null}})],1),t._v(" "),e("td",{staticClass:"align-middle p-2 px-3"},[t._v(t._s(s.name))]),t._v(" "),e("td",{staticClass:"align-middle p-2 px-3"},[e("button",{staticClass:"btn btn-iso-unlink",attrs:{type:"button"},on:{click:function(e){t.$emit("input",t.value.filter(t=>t!==s))}}},[e("span",{staticClass:"material-icons icon-iso-unlink"},[t._v("link_off")]),t._v("\n            "+t._s(t.revokeLabel||"UNLINK")+"\n          ")])])])}),0)]),t._v(" "),t._t("buttons")],2)])},i=[],n={name:"Grants",props:["revokeLabel","value"]},r=n,l=s(81656),o=(0,l.A)(r,a,i,!1,null,null,null),c=o.exports},71914:function(t,e,s){s.d(e,{A:function(){return m}});var a=s.cw(function(t,e){var a=s.p+"img/shield-check-filled.67fa8dcc.svg";t.exports=a}),i=s.cw(function(t,e){var a=s.p+"img/shield-check-outline.78d83271.svg";t.exports=a}),n=function(){var t=this,e=t._self._c;return e("div",{on:{click:function(e){return t.$emit("click")}}},[t.checked?[e("img",{staticStyle:{filter:"invert(31%) sepia(84%) saturate(2356%) hue-rotate(197deg) brightness(100%) contrast(105%)"},attrs:{src:a(),width:"16",height:"16"}})]:[e("img",{staticStyle:{filter:"invert(91%) sepia(0%) saturate(67%) hue-rotate(140deg) brightness(94%) contrast(97%)"},attrs:{src:i(),width:"16",height:"16"}})]],2)},r=[],l={name:"ShieldCheck",props:["checked"]},o=l,c=s(81656),d=(0,c.A)(o,n,r,!1,null,null,null),m=d.exports},11279:function(t,e,s){s.r(e),s.d(e,{default:function(){return _}});s(44114),s(18111),s(22489);var a=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"show",rawName:"v-show",value:!t.loading,expression:"!loading"}]},[e("div",{staticClass:"mb-4"},[e("h4",{staticClass:"font-weight-bold mb-2"},[e("span",{staticClass:"text-muted font-weight-light"},[t._v("\n        Administration "),e("span",{staticClass:"material-icons md-14 arrow-east"},[t._v("east")]),t._v(" "),e("router-link",{staticClass:"text-muted",attrs:{to:{name:"users"}}},[t._v("Users")]),t._v(" "),e("span",{staticClass:"material-icons md-14 arrow-east"},[t._v("east")])],1),t._v("\n      "+t._s(t.item.name||"User name")+"\n    ")])]),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-xl-10"},[e("form",{staticClass:"card",class:{"validation-feedback":t.validation},attrs:{id:"administration-user"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("div",{staticClass:"card-body"},[e("div",{staticClass:"d-flex justify-content-between"},[e("h4",{staticClass:"text-secondary"},[t._v("User details")]),t._v(" "),t.item&&t.item.id?e("b-dropdown",{staticClass:"mb-2",attrs:{"no-caret":"",type:"link",variant:"link"},scopedSlots:t._u([{key:"button-content",fn:function(){return[e("span",{staticClass:"monospace text-secondary"},[t._v("...")])]},proxy:!0}],null,!1,2131274257)},[t._v(" "),t.item&&t.item.id?[e("b-dropdown-item",{on:{click:function(e){return t.$bvModal.show("audit-log")}}},[e("span",{staticClass:"material-symbols-outlined filled p-1",staticStyle:{"vertical-align":"sub"}},[t._v("user_attributes")]),t._v(" Audit log\n              ")]),t._v(" "),e("b-dropdown-item",{on:{click:t.startResetTwoFactor}},[e("span",{staticClass:"material-icons p-1",staticStyle:{"vertical-align":"sub"}},[t._v("lock_reset")]),t._v(" Reset two-factor authentication\n              ")])]:t._e()],2):t._e()],1),t._v(" "),e("div",{staticClass:"form-group row"},[e("label",{staticClass:"col-sm-2 col-form-label",attrs:{for:"inputEmail"}},[t._v("Email")]),t._v(" "),e("div",{staticClass:"col-sm-10"},[e("b-input",{attrs:{id:"inputEmail",type:"email",autocomplete:"off","data-1p-ignore":"",disabled:t.saving,required:"",state:t.errors.email&&!t.errors.email,placeholder:"[email protected]"},on:{input:t.emailChanged},model:{value:t.item.email,callback:function(e){t.$set(t.item,"email",e)},expression:"item.email"}}),t._v(" "),t.errors.email?e("b-form-invalid-feedback",[t._v("\n                "+t._s(t.errors.email.join())+"\n              ")]):t._e()],1)]),t._v(" "),e("div",{staticClass:"form-group row"},[e("label",{staticClass:"col-sm-2 col-form-label",attrs:{for:"inputName"}},[t._v("Name")]),t._v(" "),e("div",{staticClass:"col-sm-10"},[e("b-input",{attrs:{id:"inputName",autocomplete:"off","data-1p-ignore":"",disabled:t.saving,required:"",state:t.errors.name&&!t.errors.name,placeholder:"First and last name"},model:{value:t.item.name,callback:function(e){t.$set(t.item,"name",e)},expression:"item.name"}}
1),t._v(" "),t.errors.name?e("b-form-invalid-feedback",[t._v("\n                "+t._s(t.errors.name.join())+"\n              ")]):t._e()],1)]),t._v(" "),t.$root.hasRole("admin.internal")&&!t.loading?e("div",{staticClass:"form-group row"},[t._m(0),t._v(" "),e("div",{staticClass:"col-sm-10"},[e("multiselect",{attrs:{id:"company",multiple:!0,max:1,options:t.addOrganizationGrant.items.filter(t=>"ACTIVE"===t.status),placeholder:"Click to select a company",label:"name","track-by":"id"},model:{value:t.itemOrganization,callback:function(e){t.itemOrganization=e},expression:"itemOrganization"}}),t._v(" "),e("span",{staticClass:"badge badge-pill badge-danger py-1 px-2",staticStyle:{transform:"scale(75%)","transform-origin":"left"}},[t._v("ADMIN.INTERNAL ONLY")])],1)]):t._e(),t._v(" "),t.item.id&&!t.getUserProperty("Google OAuth sub")?e("div",{staticClass:"form-group row"},[e("div",{staticClass:"col-sm-10 offset-sm-2"},[e("div",[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.handleResetPassword.apply(null,arguments)}}},[t._v("Send forgot my password email")])]),t._v(" "),e("div",[e("a",{directives:[{name:"b-modal",rawName:"v-b-modal.modal-password",modifiers:{"modal-password":!0}}],attrs:{href:"#"},on:{click:function(t){t.preventDefault()}}},[t._v("Change password")])])])]):t._e(),t._v(" "),t.item.id&&!t.getUserProperty("Google OAuth sub")?e("div",{staticClass:"form-group row"},[e("label",{staticClass:"col-sm-2 col-form-label",attrs:{for:"inputStatus"}},[t._v("Two-factor authentication")]),t._v(" "),e("div",{staticClass:"col-sm-10 py-2"},[e("span",{class:t.item.two_factor_completed_at?"text-success":"text-danger"},[t._v(t._s(t.item.two_factor_completed_at?"Enabled":"Disabled"))]),t._v(" "),t.item.two_factor_completed_at?e("a",{staticClass:"d-block",attrs:{href:"javascript:void(0)"},on:{click:t.startResetTwoFactor}},[t._v("Reset two-factor authentication")]):e("a",{staticClass:"d-block",attrs:{href:"https://support.exatom.io/portal/en/kb/articles/securing-your-account-with-two-factor-authentication",target:"_blank"}},[t._v("How to enable two-factor authentication?")])])]):t._e(),t._v(" "),t.$route.params.id?e("div",{staticClass:"form-group row"},[e("label",{staticClass:"col-sm-2 col-form-label",attrs:{for:"inputStatus"}},[t._v("Status")]),t._v(" "),e("div",{staticClass:"col-sm-10"},[e("b-form-radio-group",{attrs:{name:"inputStatus",id:"inputStatus",disabled:t.saving,options:t.statusOptions,buttons:"","button-variant":"primary"},model:{value:t.item.status,callback:function(e){t.$set(t.item,"status",e)},expression:"item.status"}})],1)]):t._e(),t._v(" "),e("div",{staticClass:"form-group row"},[t._m(1),t._v(" "),e("div",{staticClass:"col-sm-10"},[e("table",{staticClass:"table table-striped",staticStyle:{width:"auto"}},[e("thead",[e("tr",t._l(t.roles,function(s){return e("th",{key:s.id},[e("div",{staticClass:"vertical-header ml-1"},[t._v(t._s(s.name))])])}),0)]),t._v(" "),e("tbody",[e("tr",t._l(t.roles,function(s){return e("td",{key:s.id,staticClass:"text-center"},[e("shield-check",{staticClass:"cursor-pointer shield-icon",attrs:{checked:!!t.itemRoles.latest[s.id]},on:{click:function(e){t.itemRoles.latest={...t.itemRoles.latest,[s.id]:!t.itemRoles.latest[s.id]}}}})],1)}),0)])]),t._v(" "),t.errorRoles?e("div",{staticClass:"text-danger mt-3"},[t._v("Please select one or more roles by clicking the shield icons")]):t._e()])]),t._v(" "),t.item&&t.item.id?e("div",{staticClass:"form-group row"},[e("label",{staticClass:"col-sm-2 col-form-label"},[t._v("Preferences")]),t._v(" "),e("div",{staticClass:"col-sm-10 mt-2"},[e("user-properties",{attrs:{user:t.item}})],1)]):t._e(),t._v(" "),e("div",{staticClass:"mt-5"},[t.errorGrants?e("div",{staticClass:"text-danger col-12 mb-3"},[t._v("\n              Please select one or more websites "+t._s(t.$root.hasRole("admin.internal")?"or companies ":"")+"that the user should be able to access.\n            ")]):t._e(),t._v(" "),e("div",{staticClass:"row p-3 py-4 mx-3 card-on-top",class:{"bg-danger-light":t.errorGrants}},[e("div",{staticClass:"col-md-6"},[e("h4",{staticClass:"text-primary mb-2 d-inline-block"},[t._v("User's access to websites")]),t._v(" "),e("i",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip"}],staticClass:"material-icons info",attrs:{title:"Setting permissions over here allows "+(t.item.name||"the user")+" to only access the websites selected"}},[t._v("info")]),t._v(" "),t.isOrgAdmin&&t.itemOrganization.length?[e("p",[t._v("Access to all clients of "),e("b",[t._v(t._s(t.itemOrganization[0].name))])])]:t.isOrgAdmin?[e("p",[t._v("Access to all clients of the users company (none selected yet)")])]:t._e(),t._v(" "),t.isOrgAdmin&&t.$root.hasRole("admin.internal")?e("div",{staticClass:"font-weight-bolder text-primary"},[t._v("\n                  Additionally access to "),e("span",{staticClass:"badge badge-pill badge-danger py-1 px-2",staticStyle:{transform:"scale(75%)","transform-origin":"left"}},[t._v("ADMIN.INTERNAL ONLY")])]):t._e(),t._v(" "),!t.isOrgAdmin||t.$root.hasRole("admin.internal")?e("grants",{class:{"mt-2":t.itemGrants.clients.latest.length},scopedSlots:t._u([{key:"buttons",fn:function(){return[e("button",{directives:[{name:"b-modal",rawName:"v-b-modal.modal-add-client",modifiers:{"modal
1-add-client":!0}}],staticClass:"btn btn-iso-create",attrs:{type:"button"}},[e("i",{staticClass:"material-icons icon-iso-create"},[t._v("add")]),t._v(" Add website\n                    ")])]},proxy:!0}],null,!1,4127135788),model:{value:t.itemGrants.clients.latest,callback:function(e){t.$set(t.itemGrants.clients,"latest",e)},expression:"itemGrants.clients.latest"}}):t._e()],2),t._v(" "),t.$root.hasRole("admin.internal")&&!t.item.organization_hash?e("div",{staticClass:"col-md-6"},[e("h4",{staticClass:"text-primary mb-2 d-inline-block",staticStyle:{"vertical-align":"top"}},[t._v("User's access to companies")]),t._v(" "),e("i",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip"}],staticClass:"material-icons info",attrs:{title:"Setting permissions over here allows "+(t.item.name||"the user")+" to access all websites associated with the selected companies"}},[t._v("info")]),t._v(" "),e("span",{staticClass:"badge badge-pill badge-danger py-1 px-2",staticStyle:{transform:"scale(75%)","transform-origin":"left"}},[t._v("ADMIN.INTERNAL ONLY")]),t._v(" "),t.isInternalAdmin?[e("p",{staticClass:"mb-3"},[t._v("Access to all")])]:e("grants",{class:{"mt-2":t.itemGrants.organizations.latest.length},scopedSlots:t._u([{key:"buttons",fn:function(){return[e("button",{directives:[{name:"b-modal",rawName:"v-b-modal.modal-add-org",modifiers:{"modal-add-org":!0}}],staticClass:"btn btn-iso-create",attrs:{type:"button"}},[e("i",{staticClass:"material-icons icon-iso-create"},[t._v("add")]),t._v(" Add company\n                    ")])]},proxy:!0}],null,!1,2277423728),model:{value:t.itemGrants.organizations.latest,callback:function(e){t.$set(t.itemGrants.organizations,"latest",e)},expression:"itemGrants.organizations.latest"}})],2):t._e()])])]),t._v(" "),e("div",{staticClass:"card-footer text-right mb-2"},[e("b-btn",{staticClass:"btn btn-outline-danger mr-2",on:{click:t.cancel}},[t._v("Cancel")]),t._v(" "),e("ladda-btn",{staticClass:"btn btn-create mr-2",attrs:{type:"submit",loading:t.saving&&t.invite,disabled:t.saving&&!t.invite},nativeOn:{click:function(e){t.validation=!0,t.invite=!0}}},[t._v("\n            "+t._s(t.item.id?"Save user":"Create user")+" and send invite email\n          ")]),t._v(" "),e("ladda-btn",{staticClass:"btn btn-create",class:[null!=t.item.tc_accepted_date?"btn-create":"text-success"],attrs:{type:"submit",loading:t.saving&&!t.invite,disabled:t.saving&&t.invite},nativeOn:{click:function(e){t.validation=!0,t.invite=!1}}},[t._v("\n            "+t._s(t.item.id?"Save user":"Create user")+"\n          ")])],1)])])]),t._v(" "),e("div",{staticClass:"tech-info mt-3"},[t.item.id?e("div",[e("b",[t._v("ID:")]),t._v(" "+t._s(t.item.id))]):t._e(),t._v(" "),t.item.created_at?e("div",[e("b",[t._v("Created:")]),t._v(" "+t._s(t._f("datetime")(t.item.created_at)))]):t._e(),t._v(" "),t.item.updated_at?e("div",[e("b",[t._v("Last update:")]),t._v(" "+t._s(t._f("datetime")(t.item.updated_at)))]):t._e()]),t._v(" "),e("b-modal",{attrs:{id:"modal-add-client",title:"Add website","cancel-variant":"white","ok-variant":"success"},on:{show:function(e){t.addClientGrant.item=null},shown:function(e){t.$refs.addClientInput.$el.querySelector("input").focus()},ok:function(e){t.addClientGrant.item&&t.itemGrants.clients.latest.push(t.addClientGrant.item)}}},[e("div",{staticClass:"form-group row"},[e("label",{staticClass:"col-sm-2 col-form-label"},[t._v("Website")]),t._v(" "),e("div",{staticClass:"col-sm-10"},[e("multiselect",{ref:"addClientInput",attrs:{options:t.availableClientGrants,"hide-selected":!0,placeholder:"Click to select a website",label:"name","track-by":"id"},model:{value:t.addClientGrant.item,callback:function(e){t.$set(t.addClientGrant,"item",e)},expression:"addClientGrant.item"}})],1)])]),t._v(" "),e("b-modal",{attrs:{id:"modal-add-org",title:"Add company","cancel-variant":"white","ok-variant":"success"},on:{show:function(e){t.addOrganizationGrant.item=null},shown:function(e){t.$refs.addOrgInput.$el.querySelector("input").focus()},ok:function(e){t.addOrganizationGrant.item&&t.itemGrants.organizations.latest.push(t.addOrganizationGrant.item)}}},[e("div",{staticClass:"form-group row"},[e("label",{staticClass:"col-sm-2 col-form-label"}
1,[t._v("Company")]),t._v(" "),e("div",{staticClass:"col-sm-10"},[e("multiselect",{ref:"addOrgInput",attrs:{options:t.availableOrganizationGrants,"hide-selected":!0,placeholder:"Click to select a company",label:"name","track-by":"id"},model:{value:t.addOrganizationGrant.item,callback:function(e){t.$set(t.addOrganizationGrant,"item",e)},expression:"addOrganizationGrant.item"}})],1)])]),t._v(" "),e("b-modal",{attrs:{id:"modal-password",title:"Change password","cancel-variant":"iso-link","ok-variant":"success","ok-title":"Change password"},on:{show:function(e){t.modalPassword.value=""},shown:function(e){return t.$refs.passwordInput.focus()},ok:t.handleSubmitPassword}},[e("p",{staticClass:"font-weight-bold"},[t._v("Please choose a new password:")]),t._v(" "),e("ul",{staticStyle:{"font-size":"0.85rem","margin-bottom":"0"},attrs:{id:"passRequirement16"}},[e("li",[t._v("\n        16 characters or longer with any combination of characters\n        "),e("div",{staticClass:"font-weight-bold m-2 text-secondary",attrs:{id:"passRequirementOr"}},[t._v("OR")])])]),t._v(" "),e("ul",{staticStyle:{"margin-bottom":"0"},attrs:{id:"passRequirement8"}},[e("li",{attrs:{id:"passRequirement8Chars"}},[t._v("At least 8 characters")]),t._v(" "),e("ul",{attrs:{id:"passRequirement8List"}},[e("li",{attrs:{id:"passRequirement8Number"}},[t._v("Needs to include a number")]),t._v(" "),e("li",{attrs:{id:"passRequirement8Lowercase"}},[t._v("Needs to include a lowercase letter")]),t._v(" "),e("li",{attrs:{id:"passRequirement8Uppercase"}},[t._v("Needs to include an uppercase letter")]),t._v(" "),e("li",{attrs:{id:"passRequirement8Special"}},[t._v("Needs to include a special character")])])]),t._v(" "),e("form",{staticClass:"mt-3",attrs:{id:"administration-user-setpassword"},on:{submit:function(e){e.preventDefault(),t.item.password=t.modalPassword.value,t.$bvModal.hide("modal-password")}}},[e("div",{staticClass:"input-group"},[e("b-input",{ref:"passwordInput",staticClass:"form-control",staticStyle:{height:"36px"},attrs:{type:"password",autofocus:"",required:"",id:"password","aria-describedby":"reveal",autocomplete:"new-password",state:t.passwordValid,placeholder:"Password",pattern:"^(((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\\W_]).{8,128})$|^([a-zA-Z0-9\\W_\\s]{16,128}))$"},on:{input:t.validatePassword},model:{value:t.modalPassword.value,callback:function(e){t.$set(t.modalPassword,"value",e)},expression:"modalPassword.value"}}),t._v(" "),e("div",{staticClass:"input-group-append"},[e("button",{staticClass:"btn btn-secondary reveal",staticStyle:{"line-height":"normal"},attrs:{type:"button",id:"reveal"},on:{click:function(e){return t.togglePassword(e)}}},[t.passwordRevealed?e("i",{staticClass:"material-icons text-white",staticStyle:{"font-size":"1rem"}},[t._v("visibility")]):e("i",{staticClass:"material-icons text-white",staticStyle:{"font-size":"1rem"}},[t._v("visibility_off")])])])],1),t._v(" "),e("button",{ref:"passwordSubmit",staticClass:"d-none",attrs:{type:"submit"}})])]),t._v(" "),e("b-modal",{attrs:{id:"audit-log",title:`Audit log for ${t.item.name}`,size:"xl"},scopedSlots:t._u([{key:"modal-footer",fn:function({ok:s}){return[e("b-button",{attrs:{size:"sm",variant:"success"},on:{click:function(t){return s()}}},[t._v("\n        Close\n      ")])]}}])},[e("AuditLog",{attrs:{endpoint:`/users/${t.item.id}/logs`}})],1)],1)},i=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-sm-2 col-form-label pl-0 ml-0 pt-0"},[e("label",{staticClass:"col-form-label mb-0"}
1,[t._v("User belongs to company")]),e("br"),t._v(" "),e("i",{staticStyle:{"font-size":"70%"}},[t._v("Default Exatom")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-sm-2 text-right"},[e("label",{staticClass:"col-form-label mb-0"},[t._v("Roles")])])}],n=(s(20116),s(61701),s(18237),s(33110),s(22061)),r=s(75158),l=s(75262),o=s.n(l),c=s(71914),d=s(66670),m=s(2566),u=s(46446),p=s(90859),h={name:"UserForm",components:{AuditLog:u.A,Grants:n.A,LaddaBtn:r.A,Multiselect:o(),ShieldCheck:c.A,UserProperties:p.A},metaInfo:{title:"User management"},data(){return{addClientGrant:{item:null,items:[]},addOrganizationGrant:{item:null,items:[]},errors:{},errorRoles:!1,errorGrants:!1,initialEmail:null,invite:!1,item:{organization_hash:null,status:"ACTIVE"},itemGrants:{clients:{initial:[],latest:[]},organizations:{initial:[],latest:[]}},itemRoles:{initial:[],latest:{}},loading:!1,modalPassword:{value:null},roles:[],saving:!1,statusOptions:[{text:"ACTIVE",value:"ACTIVE"},{text:"INACTIVE",value:"INACTIVE"}],validation:!1,passwordRevealed:!1,passwordValid:null}},computed:{availableClientGrants(){const t=this.itemGrants.clients.latest.map(t=>t.id);return this.addClientGrant.items.filter(e=>!t.includes(e.id))},availableOrganizationGrants(){const t=this.itemGrants.organizations.latest.map(t=>t.id);return this.addOrganizationGrant.items.filter(e=>!t.includes(e.id))},isInternalAdmin(){return this.roles.filter(t=>this.itemRoles.latest[t.id]).map(t=>t.name).includes("admin.internal")},isOrgAdmin(){return this.roles.filter(t=>this.itemRoles.latest[t.id]).map(t=>t.name).includes("admin.company")},itemOrganization:{get(){return[this.addOrganizationGrant.items.filter(t=>t.id===this.item.organization_hash)[0]].filter(Boolean)},set(t){this.item.organization_hash=t.map(t=>t.id)[0]||null}}},async mounted(){if(this.loading=!0,this.addClientGrant.items=(await this.$api.get("/clients")).data.sort((t,e)=>t.name>e.name?1:-1),this.$root.hasRole("admin.internal")&&(this.addOrganizationGrant.items=(await this.$api.get("/organizations")).data.sort((t,e)=>t.name>e.name?1:-1)),this.roles=(await this.$api.get("/roles")).data.filter(t=>!["admin.internal","earlyAccess","ai.analysis"].includes(t.name)||this.$root.hasRole("admin.internal")).sort((t,e)=>d.indexOf(t.name)-d.indexOf(e.name)),this.$route.params.id)try{const t=(await this.$api.get(`/users/${this.$route.params.id}`)).data;if(this.item={...t,organization_hash:(t.organization||{id:null}).id},this.initialEmail=this.item.email,this.itemRoles.initial=this.item.roles.map(t=>t.id),this.itemRoles.latest=this.itemRoles.initial.reduce((t,e)=>({...t,[e]:!0}),{}),!this.isInternalAdmin){const{clients:t,organizations:e}=(await this.$api.get(`/users/${this.$route.params.id}/grants`)).data,s=t.map(t=>t.client_hash),a=e.map(t=>t.organization_hash);this.itemGrants.clients={initial:s,latest:this.addClientGrant.items.filter(t=>s.includes(t.id))},this.itemGrants.organizations={initial:a,latest:this.addOrganizationGrant.items.filter(t=>a.includes(t.id))}}}catch(t){this.$router.replace({name:"users"})}this.initialState=this.hashState(),this.loading=!1},methods:{emailChanged(){const{name:t,email:e}=(0,m.VA)(this.item.email,this.item.name);this.item.name=t,this.item.email=e},hashState(){return JSON.stringify([this.item,this.itemRoles])},async cancel(){(this.hashState()===this.initialState||await this.$bvModal.msgBoxConfirm("Are you sure you want to cancel all your changes?",{title:"Discard changes?",okVariant:"danger",cancelVariant:"iso-link"}))&&await this.$router.push({name:"users"})},async handleResetPassword(){await this.$bvModal.msgBoxConfirm(`An email will be sent to ${this.initialEmail}`,{title:"Send password reset email?",okVariant:"danger",cancelVariant:"iso-link"})&&await this.$api.resetInit(this.initialEmail)},async startResetTwoFactor(){if(await this.$bvModal.msgBoxConfirm(`Are you sure you want to reset two-factor authentication for ${this.item.name||"this user"}?`,{title:"Reset two-factor?",okVariant:"danger",cancelVariant:"iso-link"}))try{await this.$api.delete(`/users/${this.item.id}/two-factor`),this.$root.$bvToast.toast("Two-factor authentication has been reset for this user.",{title:"Two-Factor Authentication",solid:!0,variant:"success"})}catch(t){this.$root.$bvToast.toast("Failed to reset two-factor authentication.",{title:"Two-Factor Authentication",solid:!0,variant:"danger"})}},handleSubmitPassword(t){t.preventDefault(),!1!==this.passwordValid&&this.$nextTick(()=>this.$refs.passwordSubmit.click())},async submit(){if(!this.item.id&&!this.$root.hasRole("admin.internal")&&this.isOrgAdmin&&!await this.$bvModal.msgBoxConfirm(`Are you sure you want to add a user with similar permissions like you? ${this.item.name} will be able to administer your organization ${this.$root.me.organization.name}!`,{okTitle:"I understand, please continue",okVariant:"danger",cancelTitle:"No, I’ll change roles",cancelVariant:"iso-link"}))return;let t=0;if(this.errorRoles=!1,Object.values(this.itemRoles.latest).filter(t=>t).length||(this.errorRoles=!0,t++),this.errorGrants=!1,this.isInternalAdmin||this.isOrgAdmin||this.itemGrants.clients.latest.length||this.itemGrants.organizations.latest.length?this.isOrgAdmin&&!this.itemGrants.organizations.latest&&(this.errorGrants=!0,t++):(this.errorGrants=!0,t++),t)return;const e=!this.item.id;this.saving=!0,this.errors={};try{if(this.item.id?await this.$api.patch(`/users/${this.item.id}`,this.item):this.item.id=(await this.$api.post("/users",this.item)).data.id,await(0,m.II)(this.itemRoles.initial,Object.keys(this.itemRoles.latest).filter(t=>this.itemRoles.latest[t]),t=>this.$api.post(`/users/${this.item.id}/roles`,{roles:[t]}),t=>this.$api.delete(`/users/${this.item.id}/roles/${t}`)),!this.isInternalAdmin&&await(0,m.II)(this.itemGrants.clients.initial,this.itemGrants.clients.latest.map(t=>
1t.id),t=>this.$api.post(`/users/${this.item.id}/grants/clients`,{client_hash:t}),t=>this.$api.delete(`/users/${this.item.id}/grants/clients/${t}`)),this.$root.hasRole("admin.internal")&&await(0,m.II)(this.itemGrants.organizations.initial,this.itemGrants.organizations.latest.map(t=>t.id),t=>this.$api.post(`/users/${this.item.id}/grants/organizations`,{organization_hash:t}),t=>this.$api.delete(`/users/${this.item.id}/grants/organizations/${t}`)),this.invite&&await this.$api.post(`/users/${this.item.id}/invite`,{}),e&&await this.$bvModal.msgBoxConfirm("Do you want to add another user with similar settings?",{okVariant:"success",okTitle:"Yes",cancelVariant:"iso-link",cancelTitle:"No"}))return this.item.id=null,this.item.email="",this.item.name="",this.saving=!1,void(this.validation=!1);this.$router.push({name:"users"})}catch(s){this.errors=s.response.data.errors,this.saving=!1}},togglePassword(t){document.getElementById("password").type="password"===document.getElementById("password").type?"text":"password","password"===document.getElementById("password").type?document.getElementById("password").classList.remove("monospace"):document.getElementById("password").classList.add("monospace"),this.passwordRevealed=!this.passwordRevealed},validatePassword(t){if(this.passwordValid=null,["passRequirement16","passRequirementOr","passRequirement8","passRequirement8Chars","passRequirement8List","passRequirement8Number","passRequirement8Lowercase","passRequirement8Uppercase","passRequirement8Special"].forEach(t=>{"passRequirementOr"!==t?(document.getElementById(t).className="",document.getElementById(t).style.display="ul"===document.getElementById(t).tagName.toLowerCase()?"block":"list-item"):document.getElementById(t).style.display="block"}),t.length>15)["passRequirementOr","passRequirement8"].forEach(t=>{document.getElementById(t).style.display="none"}),document.getElementById("passRequirement16").classList.add("text-success"),this.passwordValid=!0;else if(t.length){let e=0;t.length>7?(document.getElementById("passRequirement8Chars").classList.add("text-success"),e++):document.getElementById("passRequirement8Chars").classList.add("text-danger"),t.match(/[0-9]+/)&&(document.getElementById("passRequirement8Number").classList.add("text-success"),e++),t.match(/[a-z]+/)&&(document.getElementById("passRequirement8Lowercase").classList.add("text-success"),e++),t.match(/[A-Z]+/)&&(document.getElementById("passRequirement8Uppercase").classList.add("text-success"),e++),t.match(/[^a-zA-Z0-9]+/)&&(document.getElementById("passRequirement8Special").classList.add("text-success"),e++),5===e&&(document.getElementById("passRequirement16").style.display="none",this.passwordValid=!0)}},getUserProperty(t){return this.item.properties.find(e=>e.type.name===t)}}},v=h,g=s(81656),f=(0,g.A)(v,a,i,!1,null,"5251e0dc",null),_=f.exports},22857:function(t,e,s){s.d(e,{A:function(){return d}});var a=function(){var t=this,e=t._self._c;return e("div",{class:t.componentClass},[t.propType?e("label",{class:t.labelClass,attrs:{for:t.propType.id}}
1,[t._v(t._s(t.displayName??t.propType.name)+" "),t.propType&&t.propType.description?e("i",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip"}],staticClass:"material-icons info",attrs:{title:t.propType.description}},[t._v("info")]):t._e()]):t._e(),t._v(" "),e("div",{class:t.controlClass},[e("label",{staticClass:"switcher switcher-sm m-0"},[e("input",{staticClass:"switcher-input",attrs:{type:"checkbox",id:t.propType.id,disabled:t.disabled},domProps:{checked:t.normalizedValue},on:{input:t.change}}),t._v(" "),t._m(0)])])])},i=[function(){var t=this,e=t._self._c;return e("span",{staticClass:"switcher-indicator"},[e("span",{staticClass:"switcher-yes"}),e("span",{staticClass:"switcher-no"})])}],n=s(2566),r={name:"BooleanProperty",components:{},props:{value:{type:Boolean},propType:{type:Object},displayName:{type:String},componentClass:{type:String},labelClass:{type:String},controlClass:{type:String},disabled:{type:Boolean}},data(){return{}},computed:{normalizedValue(){return!!this.value&&!!(0,n.Jr)(this.value)}},async mounted(){},methods:{change(t){this.$emit("input",!!(0,n.Jr)(t.target.checked))}},watch:{}},l=r,o=s(81656),c=(0,o.A)(l,a,i,!1,null,null,null),d=c.exports},90859:function(t,e,s){s.d(e,{A:function(){return m}});var a=function(){var t=this,e=t._self._c;return e("div",[t.propertyTypes?e("div",t._l(t.propertyTypes,function(s){return e("boolean-property",{key:s.id,attrs:{"prop-type":t.getUserPropertyType(s.name),"component-class":"mb-1 d-flex align-items-center flex-row-reverse justify-content-end","label-class":"m-0 ml-2","control-class":""},on:{input:e=>t.change(t.getUserProperty(s.name),e)},model:{value:t.getUserProperty(s.name).value,callback:function(e){t.$set(t.getUserProperty(s.name),"value",e)},expression:"getUserProperty(pt.name).value"}})}),1):e("div",{staticClass:"text-light small"},[t._v("\n    loading...\n  ")])])},i=[],n=(s(44114),s(18111),s(22489),s(20116),s(7588),s(2566)),r=s(22857),l={name:"UserProperties",components:{BooleanProperty:r.A},props:{user:{type:Object}},data(){return{item:{},availableProperties:["Email - weekly insights"],propertyTypes:null,itemProperties:[]}},async mounted(){await this.reload()},methods:{async reload(){this.item=this.user;const[t]=await Promise.all([this.$api.get("/user-property-types")]);this.propertyTypes=t.data.filter(t=>this.availableProperties.includes(t.name)),this.itemProperties=this.item?.properties??[],this.propertyTypes.forEach(t=>{const e=this.getUserProperty(t.name);e?e.value=!!(0,n.Jr)(e.value):this.itemProperties.push({user_property_type_hash:t.id,type:t})})},getUserProperty(t){return t&&this.itemProperties?this.itemProperties.find(e=>e.type&&(e.type.name===t||e.type.id===t))??null:null},getUserPropertyType(t){return t&&this.propertyTypes?this.propertyTypes.find(e=>e.name===t||e.id===t)??null:null},async change(t){"undefined"===typeof t.id?this.$api.post(`/users/${this.item.id}/properties`,t,this.$root.client.client_hash):this.$api.patch(`/users/${this.item.id}/properties/${t.id}`,t,this.$root.client.client_hash)}}},o=l,c=s(81656),d=(0,c.A)(o,a,i,!1,null,null,null),m=d.exports},66670:function(t){t.exports=JSON.parse('["reporting","configuration.view","configuration.modify","configuration.delete","demo","finance","admin.company","ai.analysis","earlyAccess","admin.internal"]')}}]);
2//# sourceMappingURL=3471.57732d42.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.