iobroker.admin 7.1.1 → 7.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +5 -8
  2. package/adminWww/asset-manifest.json +33 -33
  3. package/adminWww/index.html +1 -1
  4. package/adminWww/static/css/3210.f6c8a5fc.chunk.css.map +1 -1
  5. package/adminWww/static/js/2534.d8fd195b.chunk.js +2 -0
  6. package/adminWww/static/js/2534.d8fd195b.chunk.js.map +1 -0
  7. package/adminWww/static/js/2544.047df092.chunk.js +2 -0
  8. package/adminWww/static/js/2544.047df092.chunk.js.map +1 -0
  9. package/adminWww/static/js/2816.f7bf6ba0.chunk.js +2 -0
  10. package/adminWww/static/js/2816.f7bf6ba0.chunk.js.map +1 -0
  11. package/adminWww/static/js/3210.1be726e7.chunk.js +2 -0
  12. package/adminWww/static/js/3210.1be726e7.chunk.js.map +1 -0
  13. package/adminWww/static/js/4112.9b241792.chunk.js +2 -0
  14. package/adminWww/static/js/4112.9b241792.chunk.js.map +1 -0
  15. package/adminWww/static/js/4579.014de1f1.chunk.js +2 -0
  16. package/adminWww/static/js/4579.014de1f1.chunk.js.map +1 -0
  17. package/adminWww/static/js/{5174.60f22386.chunk.js → 5174.f5aa1074.chunk.js} +2 -2
  18. package/adminWww/static/js/5174.f5aa1074.chunk.js.map +1 -0
  19. package/adminWww/static/js/530.cb8dbcf9.chunk.js +2 -0
  20. package/adminWww/static/js/530.cb8dbcf9.chunk.js.map +1 -0
  21. package/adminWww/static/js/6552.0a447e18.chunk.js +2 -0
  22. package/adminWww/static/js/6552.0a447e18.chunk.js.map +1 -0
  23. package/adminWww/static/js/6938.af058182.chunk.js +2 -0
  24. package/adminWww/static/js/6938.af058182.chunk.js.map +1 -0
  25. package/adminWww/static/js/{8038.cacab580.chunk.js → 8038.ae8b7862.chunk.js} +2 -2
  26. package/adminWww/static/js/8038.ae8b7862.chunk.js.map +1 -0
  27. package/adminWww/static/js/858.f34ea2c6.chunk.js +2 -0
  28. package/adminWww/static/js/858.f34ea2c6.chunk.js.map +1 -0
  29. package/adminWww/static/js/9399.5852b7e7.chunk.js +2 -0
  30. package/adminWww/static/js/9399.5852b7e7.chunk.js.map +1 -0
  31. package/adminWww/static/js/9534.2af54084.chunk.js +2 -0
  32. package/adminWww/static/js/9534.2af54084.chunk.js.map +1 -0
  33. package/adminWww/static/js/9917.3662a807.chunk.js +2 -0
  34. package/adminWww/static/js/9917.3662a807.chunk.js.map +1 -0
  35. package/adminWww/static/js/{main.c1384a82.js → main.423e60b6.js} +2 -2
  36. package/adminWww/static/js/main.423e60b6.js.map +1 -0
  37. package/build-backend/lib/passportSocket.js +8 -10
  38. package/build-backend/lib/translations.js +0 -1
  39. package/build-backend/lib/web.js +101 -81
  40. package/build-backend/main.js +173 -184
  41. package/io-package.json +14 -14
  42. package/package.json +97 -96
  43. package/adminWww/static/js/2534.0bc9912f.chunk.js +0 -2
  44. package/adminWww/static/js/2534.0bc9912f.chunk.js.map +0 -1
  45. package/adminWww/static/js/2544.4fa1eef5.chunk.js +0 -2
  46. package/adminWww/static/js/2544.4fa1eef5.chunk.js.map +0 -1
  47. package/adminWww/static/js/2816.cfab0128.chunk.js +0 -2
  48. package/adminWww/static/js/2816.cfab0128.chunk.js.map +0 -1
  49. package/adminWww/static/js/3210.4c1ccdc2.chunk.js +0 -2
  50. package/adminWww/static/js/3210.4c1ccdc2.chunk.js.map +0 -1
  51. package/adminWww/static/js/4112.8c6e6dae.chunk.js +0 -2
  52. package/adminWww/static/js/4112.8c6e6dae.chunk.js.map +0 -1
  53. package/adminWww/static/js/4579.cd86a1cb.chunk.js +0 -2
  54. package/adminWww/static/js/4579.cd86a1cb.chunk.js.map +0 -1
  55. package/adminWww/static/js/5174.60f22386.chunk.js.map +0 -1
  56. package/adminWww/static/js/530.8eed62a7.chunk.js +0 -2
  57. package/adminWww/static/js/530.8eed62a7.chunk.js.map +0 -1
  58. package/adminWww/static/js/6552.29112fa0.chunk.js +0 -2
  59. package/adminWww/static/js/6552.29112fa0.chunk.js.map +0 -1
  60. package/adminWww/static/js/6938.f4331126.chunk.js +0 -2
  61. package/adminWww/static/js/6938.f4331126.chunk.js.map +0 -1
  62. package/adminWww/static/js/8038.cacab580.chunk.js.map +0 -1
  63. package/adminWww/static/js/858.3a130f69.chunk.js +0 -2
  64. package/adminWww/static/js/858.3a130f69.chunk.js.map +0 -1
  65. package/adminWww/static/js/9399.c959c5de.chunk.js +0 -2
  66. package/adminWww/static/js/9399.c959c5de.chunk.js.map +0 -1
  67. package/adminWww/static/js/9534.68ac37f7.chunk.js +0 -2
  68. package/adminWww/static/js/9534.68ac37f7.chunk.js.map +0 -1
  69. package/adminWww/static/js/9917.28c0dbc2.chunk.js +0 -2
  70. package/adminWww/static/js/9917.28c0dbc2.chunk.js.map +0 -1
  71. package/adminWww/static/js/main.c1384a82.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunksrc_rx=self.webpackChunksrc_rx||[]).push([[4579],{71360:(e,t,s)=>{s.d(t,{K:()=>l,S:()=>a});s(29183);var o=s(89303),i=s(32075),r=s(26699),n=s(99277);function l(e){const t=e.icon;return(0,n.jsxs)("div",{style:e.styles.formContainer,children:[t?(0,n.jsx)(t,{style:e.styles.formIcon}):null,(0,n.jsx)(o.FormControl,{style:e.styles.formControl,variant:"standard",children:(0,n.jsx)(o.TextField,{variant:"standard",label:e.t(e.label),autoComplete:e.autoComplete,error:!!e.error,helperText:e.error||"",value:e.value,onChange:t=>e.onChange(t.target.value),disabled:e.disabled,type:e.type,slotProps:{inputLabel:{shrink:!0},input:{readOnly:!1,endAdornment:e.value?(0,n.jsx)(o.InputAdornment,{position:"end",children:(0,n.jsx)(o.IconButton,{size:"small",onClick:()=>e.onChange(""),children:(0,n.jsx)(i.Close,{})})}):null}}})})]})}function a(e){const t=e.icon;return(0,n.jsxs)("div",{style:{width:"100%"},children:[t?(0,n.jsx)(t,{style:e.previewStyle||e.styles.formIcon}):null,(0,n.jsx)(r.ColorPicker,{style:{...e.style||void 0,width:t?"calc(100% - 45px)":"100%",display:"inline-block",verticalAlign:"top"},label:e.t(e.label),onChange:e.onChange,value:e.value||""})]})}},74579:(e,t,s)=>{s.r(t),s.d(t,{default:()=>W});var o=s(29183),i=s(26699),r=s(46799),n=s(2913),l=s(95463),a=s(69175),d=s(89303),c=s(32075),u=s(12549),p=s(37886),m=s(51862),h=s(99277);const g=e=>{const t=e.isDragging?0:1,s=i.Utils.getInvertedColor(e.user.common.color,e.themeType,!0),o={cursor:"grab",opacity:t,overflow:"hidden",color:s};return e.user.common.color&&(o.backgroundColor=e.user.common.color),(0,h.jsx)(d.Card,{style:o,sx:e.styles.userGroupCard2,children:(0,h.jsxs)("div",{style:e.styles.userCardContent,children:[(0,h.jsxs)("div",{style:e.styles.right,children:[(0,h.jsx)(d.Checkbox,{checked:e.user.common.enabled,style:{color:s},disabled:e.user.common.dontDelete,onChange:()=>{e.socket.extendObject(e.user._id,{common:{enabled:!e.user.common.enabled}}).then((()=>e.updateData()))}}),(0,h.jsx)(d.IconButton,{size:"small",onClick:()=>e.showUserEditDialog(e.user,!1),children:(0,h.jsx)(c.Edit,{style:{color:s}})}),(0,h.jsx)(d.IconButton,{size:"small",onClick:()=>e.showUserDeleteDialog(e.user),disabled:e.user.common.dontDelete,children:(0,h.jsx)(c.Delete,{style:e.user.common.dontDelete?null:{color:s}})})]}),(0,h.jsxs)(d.CardContent,{children:[(0,h.jsxs)(d.Typography,{gutterBottom:!0,component:"div",style:e.styles.userGroupTitle,children:[e.user.common.icon?(0,h.jsx)(i.Icon,{style:e.styles.icon,src:e.user.common.icon}):(0,h.jsx)(c.Person,{style:e.styles.icon}),(0,h.jsxs)("div",{children:[(0,h.jsxs)("div",{children:[(0,h.jsx)("span",{style:e.styles.userGroupUserName,children:e.getText(e.user.common.name)}),(0,h.jsxs)("span",{style:e.styles.userGroupUserID,children:["[",e.user._id,"]"]})]}),(0,h.jsx)("span",{children:e.user.common.desc?(0,h.jsx)("div",{style:e.styles.description,children:e.getText(e.user.common.desc)}):null})]})]}),e.groups.find((t=>t.common.members&&t.common.members.includes(e.user._id)))?(0,h.jsxs)("div",{children:[e.t("In groups"),":"]}):null,(0,h.jsx)("div",{children:e.groups.map((t=>{var o,r;if(!t.common.members||!t.common.members.includes(e.user._id))return null;const n=t&&null!==(o=t.common)&&void 0!==o&&o.color?i.Utils.getInvertedColor(t.common.color,e.themeType,!0):s;return(0,h.jsxs)(d.Card,{variant:"outlined",sx:e.styles.userGroupMember,style:{color:n,borderColor:`${n}80`,background:(null===(r=t.common)||void 0===r?void 0:r.color)||"inherit"},children:[t.common.icon?(0,h.jsx)(i.Icon,{style:e.styles.icon,src:t.common.icon}):(0,h.jsx)(c.Group,{style:e.styles.icon}),e.getText(t.common.name),(0,h.jsx)(d.IconButton,{size:"small",onClick:()=>e.removeUserFromGroup(e.user._id,t._id),children:(0,h.jsx)(c.Clear,{style:{color:n}})})]},t._id)}))})]})]})})},x=e=>{const t=(0,o.useRef)(),[{isDragging:s},i,r]=(0,p.i)({type:"user",item:()=>{var s;return{userId:e.user._id,preview:(0,h.jsx)("div",{style:{width:null===(s=t.current)||void 0===s?void 0:s.offsetWidth},children:(0,h.jsx)(g,{...e})})}},end:(t,s)=>{const o=s.getDropResult();t&&o&&e.addUserToGroup(t.userId,o.groupId)},collect:e=>({isDragging:e.isDragging(),handlerId:e.getHandlerId()})});return(0,o.useEffect)((()=>{r((0,m.n)(),{captureDraggingState:!0})}),[r]),(0,h.jsx)("div",{ref:i,children:(0,h.jsx)("div",{ref:t,children:(0,h.jsx)(g,{isDragging:s,...e})})})};var y=s(21388);const v=e=>{var t;const[{CanDrop:s,isOver:o},r]=(0,y.H)((()=>({accept:"user",drop:()=>({groupId:e.group._id}),canDrop:(t,s)=>function(e,t){return!t.group.common.members||!t.group.common.members.includes(e.getItem().userId)}(s,e),collect:e=>({isOver:e.isOver(),CanDrop:e.canDrop()})})),[e.group.common.members]);let n,l=.7;s&&o?(l=s?1:.125,n=e.styles.userGroupCardSecondary):s&&(l=s?.75:.25);const a=i.Utils.getInvertedColor(e.group.common.color,e.themeType,!0),u={opacity:l,overflow:"hidden",color:a};return e.group.common.color&&(u.backgroundColor=e.group.common.color),(0,h.jsxs)(d.Card,{style:u,ref:r,sx:i.Utils.getStyle(e.theme,e.styles.userGroupCard2,n),children:[(0,h.jsxs)("div",{style:e.styles.right,children:[(0,h.jsx)(d.IconButton,{size:"small",onClick:()=>e.showGroupEditDialog(e.group,!1),children:(0,h.jsx)(c.Edit,{style:{color:a}})}),(0,h.jsx)(d.IconButton,{size:"small",onClick:()=>e.showGroupDeleteDialog(e.group),disabled:e.group.common.dontDelete,children:(0,h.jsx)(c.Delete,{style:e.group.common.dontDelete?null:{color:a}})})]}),(0,h.jsxs)(d.CardContent,{children:[(0,h.jsxs)(d.Typography,{gutterBottom:!0,component:"div",style:e.styles.userGroupTitle,children:[e.group.common.icon?(0,h.jsx)(i.Icon,{style:e.styles.icon,src:e.group.common.icon}):(0,h.jsx)(c.Group,{style:e.styles.icon}),(0,h.jsxs)("div",{children:[(0,h.jsxs)("div",{children:[(0,h.jsx)("span",{style:e.styles.userGroupUserName,children:e.getText(e.group.common.name)}),(0,h.jsxs)("span",{children:["[",e.group._id,"]"]})]}),e.group.common.desc?(0,h.jsx)("div",{style:e.styles.description,children:e.getText(e.group.common.desc)}):null]})]}),null!==(t=e.group.common.members)&&void 0!==t&&t.length?(0,h.jsxs)("div",{children:[e.t("Group members"),":"]}):null,(0,h.jsx)("div",{children:(e.group.common.members||[]).map(((t,s)=>{var o,r;const n=e.users.find((e=>e._id===t)),l=n&&null!==(o=n.common)&&void 0!==o&&o.color?i.Utils.getInvertedColor(n.common.color,e.themeType,!0):a;return n?(0,h.jsxs)(d.Card,{variant:"outlined",sx:e.styles.userGroupMember,style:{color:l,borderColor:`${l}40`,background:(null===(r=n.common)||void 0===r?void 0:r.color)||"inherit"},children:[n.common.icon?(0,h.jsx)(i.Icon,{style:e.styles.icon,src:n.common.icon}):(0,h.jsx)(c.Person,{style:e.styles.icon}),e.getText(n.common.name),(0,h.jsx)(d.IconButton,{size:"small",onClick:()=>e.removeUserFromGroup(t,e.group._id),children:(0,h.jsx)(c.Clear,{style:{color:l}})})]},s):null}))})]})]})};var C=s(71360),j=s(78884);const f=["./static/media/user1.24fa2b07586d952c415397f499b50c49.svg",s.p+"static/media/user2.c6b253a8208981fea9c70e282073c8ea.svg",s.p+"static/media/user3.e838132e7f2d6d44d829d934daf96dbe.svg",s.p+"static/media/user4.f66996c087a4247316e162b5ec54ff11.svg",s.p+"static/media/user5.842fb6e5ac2067df7c241eb9e42a7ff6.svg",s.p+"static/media/user6.f1589fc9f97a1e42a2a3dd62d18aee5e.svg",s.p+"static/media/user7.773f25cff1c54afbc35bbd79455aa271.svg",s.p+"static/media/user8.43bbbecca8ba97c5da0521bdc072ae1f.svg",s.p+"static/media/user9.2a94bc8f32545bf549e96311624574c4.svg",s.p+"static/media/user10.7b8712e8bbad287a584a0a26ac4cf23c.svg",s.p+"static/media/user11.dfec7022ca4b81de158d5adf60571632.svg",s.p+"static/media/user12.67a70d9093f2e3aafdeddb5dc4f110df.svg"],b={padding:"16px 24px"},D=e=>{const[t,s]=(0,o.useState)(null),[r,n]=(0,o.useState)(e.user.common.password);(0,o.useEffect)((()=>{if(s(e.user._id),e.isNew){const t=f[Math.round(Math.random()*(f.length-1))];t&&i.Utils.getSvg(t).then((t=>{const s=i.Utils.clone(e.user);s.common.icon=t,e.onChange(s)}))}}),[e.user,e.isNew]);const l=e.users.find((t=>t._id===e.user._id)),a=e.user._id!==t,u=e=>e.replace(i.Utils.FORBIDDEN_CHARS,"_").replace(/\s/g,"_").replace(/\./g,"_").replace(/,/g,"_").replace(/__/g,"_").replace(/__/g,"_").toLowerCase(),p=(e,t)=>{const s=e.split(".");return s[s.length-1]=t,s.join(".")},m=e.getText(e.user.common.desc),g=e.getText(e.user.common.name),x=j.A.checkPassword(e.user.common.password),y=j.A.checkPassword(e.user.common.password,r);let v="system.user."!==e.user._id&&!x&&!y;return(e.isNew&&l||l&&a)&&(v=!1),(0,h.jsxs)(d.Dialog,{fullWidth:e.innerWidth<500,open:!0,onClose:(t,s)=>{"backdropClick"!==s&&"escapeKeyDown"!==s&&e.onClose()},children:[(0,h.jsx)(d.DialogTitle,{style:{...e.styles.dialogTitle,padding:12},children:e.t("User parameters")}),(0,h.jsx)(d.DialogContent,{sx:{"&.MuiDialogContent-root":{...e.innerWidth<500?e.styles.narrowContent:void 0,...b}},children:(0,h.jsxs)(d.Grid2,{container:!0,spacing:e.innerWidth<500?1:4,style:e.styles.dialog,children:[(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.K,{label:"Name",t:e.t,value:g,onChange:t=>{const s=i.Utils.clone(e.user);e.user.common.dontDelete||u(s.common.name)!==s._id.split(".").pop()||(s._id=p(s._id,u(t))),s.common.name=t,e.onChange(s)},autoComplete:"new-password",icon:c.TextFields,styles:e.styles})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.K,{label:"ID edit",t:e.t,disabled:e.user.common.dontDelete,value:e.user._id.split(".")[e.user._id.split(".").length-1],onChange:t=>{const s=i.Utils.clone(e.user);s._id=p(s._id,u(t)),e.onChange(s)},icon:c.LocalOffer,styles:e.styles})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.K,{label:"ID preview",t:e.t,disabled:!0,value:e.user._id,icon:c.Pageview,styles:e.styles})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.K,{label:"Description",t:e.t,value:m,onChange:t=>{const s=i.Utils.clone(e.user);s.common.desc=t,e.onChange(s)},icon:c.Description,styles:e.styles})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.K,{label:"Password",t:e.t,value:e.user.common.password,error:x?e.t(x):void 0,onChange:t=>{const s=i.Utils.clone(e.user);s.common.password=t,e.onChange(s)},type:"password",autoComplete:"new-password",icon:c.VpnKey,styles:e.styles})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.K,{label:"Password repeat",t:e.t,value:r,error:y?e.t(y):void 0,onChange:e=>n(e),type:"password",autoComplete:"new-password",icon:c.VpnKey,styles:e.styles})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(i.IconPicker,{icons:f,label:"Icon",value:e.user.common.icon,onChange:t=>{const s=i.Utils.clone(e.user);s.common.icon=t,e.onChange(s)},previewStyle:e.styles.iconPreview,icon:c.Image})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.S,{label:"Color",t:e.t,value:e.user.common.color,previewStyle:e.styles.iconPreview,onChange:t=>{const s=i.Utils.clone(e.user);s.common.color=t,e.onChange(s)},icon:c.ColorLens,style:e.styles.colorPicker,styles:e.styles})})]})}),(0,h.jsxs)(d.DialogActions,{style:e.styles.dialogActions,children:[(0,h.jsx)(d.Button,{variant:"contained",color:"primary",autoFocus:!0,onClick:()=>e.saveData(e.isNew?null:t),disabled:!v,startIcon:(0,h.jsx)(c.Check,{}),children:e.t("Save")}),(0,h.jsx)(d.Button,{variant:"contained",color:"grey",onClick:e.onClose,startIcon:(0,h.jsx)(c.Close,{}),children:e.t("Cancel")})]})]})};const w=[s.p+"static/media/group1.e4d9dfc6de58d318b9f8659b7bdf92c8.svg",s.p+"static/media/group2.005a7b0a473ee5c6b4afa0f5a4bd399e.svg",s.p+"static/media/group3.ee5e28d28f498bd44d945842ecc32110.svg",s.p+"static/media/group4.d6b392ffee69d8a8efee376434f5cfba.svg",s.p+"static/media/group5.68fdb9e99d289e9c014cc8ee4e9ae4bb.svg",s.p+"static/media/group6.c7f286d197fb918b0d2b34944ec9ef6a.svg",s.p+"static/media/group7.066f78d64741ca336b2137f9caf72133.svg",s.p+"static/media/group8.25d573e553e37968d4e6babd06b36746.svg",s.p+"static/media/group9.b7aae7b7185e989f91b749ff1758d49d.svg",s.p+"static/media/group10.250fd49c0c4d348815c639620bef3467.svg"];function _(e){const t=(e,t)=>Object.values(e).map(((s,o)=>{const i=Object.keys(e)[o];return t(s,i)}));let s=e.group.common.acl;return s=s||{},s.object=s.object||{read:!0,list:!0,write:!0,delete:!1,create:void 0},s.object={read:!0,list:!0,write:!0,delete:!1,...s.object},s.state=s.state||{read:!0,list:!0,write:!0,delete:!1,create:void 0},s.state={read:!0,list:!0,write:!0,delete:!1,...s.state},s.users=s.users||{write:!1,delete:!1,create:!1,list:void 0,read:void 0},s.users={write:!1,delete:!1,create:!1,...s.users},s.other=s.other||{http:!1,execute:!1,sendto:!0},s.other={http:!1,execute:!1,sendto:!0,...s.other},s.file=s.file||{read:!0,list:!0,write:!1,delete:!1,create:!1},s.file={read:!0,list:!0,write:!1,delete:!1,create:!1,...s.file},(0,h.jsx)(d.Grid2,{container:!0,spacing:e.innerWidth<500?1:4,style:e.styles.dialog,children:t(e.group.common.acl||{},((s,o)=>(0,h.jsxs)(d.Grid2,{size:{xs:12,md:12},children:[(0,h.jsx)(d.Box,{component:"h2",sx:e.styles.permHeaders,children:e.t(`group_acl_${o}`)}),t(s,((t,s)=>(0,h.jsx)(d.FormControlLabel,{control:(0,h.jsx)(d.Checkbox,{disabled:"system.group.administrator"===e.group._id,checked:t,onChange:t=>{const r=i.Utils.clone(e.group);r.common.acl[o][s]=t.target.checked,e.onChange(r)}}),label:e.t(`group_acl_${s}`),labelPlacement:"top"},s)))]},o)))},"PermissionsTab")}const k={padding:"16px 24px"},G=e=>{const[t,s]=(0,o.useState)(0),[r,n]=(0,o.useState)(null);(0,o.useEffect)((()=>{if(n(e.group._id),e.isNew){const t=w[Math.round(Math.random()*(w.length-1))];t&&i.Utils.getSvg(t).then((t=>{const s=i.Utils.clone(e.group);s.common.icon=t,e.onChange(s)}))}}),[e.onChange,e.group,e.isNew]);const l=e.groups.find((t=>t._id===e.group._id)),a=e.group._id!==r;let u="system.group."!==e.group._id&&e.group.common.password===e.group.common.passwordRepeat;const p=e=>e.replace(i.Utils.FORBIDDEN_CHARS,"_").replace(/\s/g,"_").replace(/\./g,"_").toLowerCase(),m=(e,t)=>{const s=e.split(".");return s[s.length-1]=t,s.join(".")};e.isNew?l&&(u=!1):l&&a&&(u=!1);const g=e.getText(e.group.common.desc),x=e.getText(e.group.common.name),y=[(0,h.jsxs)(d.Grid2,{container:!0,spacing:e.innerWidth<500?1:4,style:e.styles.dialog,children:[(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.K,{label:"Name",t:e.t,value:x,onChange:t=>{const s=i.Utils.clone(e.group);e.group.common.dontDelete||p(s.common.name)!==s._id.split(".").pop()||(s._id=m(s._id,p(t))),s.common.name=t,e.onChange(s)},autoComplete:"off",icon:c.TextFields,styles:e.styles})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.K,{label:"ID edit",t:e.t,disabled:e.group.common.dontDelete,value:e.group._id.split(".")[e.group._id.split(".").length-1],onChange:t=>{const s=i.Utils.clone(e.group);s._id=m(s._id,p(t)),e.onChange(s)},icon:c.LocalOffer,styles:e.styles})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.K,{label:"ID preview",t:e.t,disabled:!0,value:e.group._id,icon:c.Pageview,styles:e.styles})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.K,{label:"Description",t:e.t,value:g,onChange:t=>{const s=i.Utils.clone(e.group);s.common.desc=t,e.onChange(s)},icon:c.Description,styles:e.styles})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(i.IconPicker,{label:"Icon",icons:w,value:e.group.common.icon,onChange:t=>{const s=i.Utils.clone(e.group);s.common.icon=t,e.onChange(s)},previewStyle:e.styles.iconPreview,icon:c.Image})}),(0,h.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,h.jsx)(C.S,{label:"Color",t:e.t,value:e.group.common.color,previewStyle:e.styles.iconPreview,onChange:t=>{const s=i.Utils.clone(e.group);s.common.color=t,e.onChange(s)},icon:c.ColorLens,style:e.styles.colorPicker,styles:e.styles})})]}),_(e)][t];return(0,h.jsxs)(d.Dialog,{open:!0,onClose:(t,s)=>{"backdropClick"!==s&&"escapeKeyDown"!==s&&e.onClose()},fullWidth:e.innerWidth<500,children:[(0,h.jsx)(d.DialogTitle,{style:e.styles.dialogTitle,children:(0,h.jsxs)(d.Tabs,{variant:"fullWidth",value:t,onChange:(e,t)=>s(t),children:[(0,h.jsx)(d.Tab,{label:e.t("Main"),value:0}),(0,h.jsx)(d.Tab,{label:e.t("Permissions"),value:1})]})}),(0,h.jsx)(d.DialogContent,{sx:{"&.MuiDialogContent-root":{...e.innerWidth<500?e.styles.narrowContent:void 0,...k}},children:y}),(0,h.jsxs)(d.DialogActions,{style:e.styles.dialogActions,children:[(0,h.jsx)(d.Button,{variant:"contained",color:"primary",autoFocus:!0,onClick:()=>e.saveData(e.isNew?null:r),disabled:!u,startIcon:(0,h.jsx)(c.Check,{}),children:e.t("Save")}),(0,h.jsx)(d.Button,{variant:"contained",color:"grey",onClick:e.onClose,startIcon:(0,h.jsx)(c.Close,{}),children:e.t("Cancel")})]})]})};function U(e){return(0,h.jsxs)(d.Dialog,{open:!0,onClose:e.onClose,children:[(0,h.jsx)(d.DialogTitle,{children:e.t("Please confirm")}),(0,h.jsx)(d.DialogContent,{children:(0,h.jsx)(d.DialogContentText,{children:e.t("Do you want to delete user %s?",e.user.common.name)})}),(0,h.jsxs)(d.DialogActions,{children:[(0,h.jsx)(d.Button,{variant:"contained",color:"primary",onClick:()=>e.deleteUser(e.user._id),startIcon:(0,h.jsx)(c.Delete,{}),children:e.t("Delete")}),(0,h.jsx)(d.Button,{variant:"contained",color:"grey",autoFocus:!0,onClick:e.onClose,startIcon:(0,h.jsx)(c.Close,{}),children:e.t("Cancel")})]})]})}function T(e){return(0,h.jsxs)(d.Dialog,{open:!0,onClose:e.onClose,children:[(0,h.jsx)(d.DialogTitle,{children:e.t("Please confirm")}),(0,h.jsx)(d.DialogContent,{children:(0,h.jsx)(d.DialogContentText,{children:e.t("Do you want to delete group %s?",e.group.common.name)})}),(0,h.jsxs)(d.DialogActions,{style:e.styles.dialogActions,children:[(0,h.jsx)(d.Button,{variant:"contained",color:"primary",onClick:()=>e.deleteGroup(e.group._id),startIcon:(0,h.jsx)(c.Delete,{}),children:e.t("Delete")}),(0,h.jsx)(d.Button,{variant:"contained",color:"grey",autoFocus:!0,onClick:e.onClose,startIcon:(0,h.jsx)(c.Close,{}),children:e.t("Cancel")})]})]})}const I="***********",E={mainGridCont:{height:"calc(100% - 55px)",overflowY:"auto"},childGridCont:{display:"flex",flexDirection:"column"},childGridContWide:{height:"100%"},canDrop:e=>({backgroundColor:e.palette.background.default}),headContainer:{margin:10},blocksContainer:{overflowY:"auto",overflowX:"hidden"},userGroupCard2:e=>({border:"1px solid #FFF",borderColor:e.palette.divider,m:"10px",minHeight:150,backgroundColor:e.palette.background.default,color:e.palette.text.primary,transition:"all 200ms ease-out",opacity:1,overflow:"hidden","&:hover":{overflowY:"auto",boxShadow:"0 1px 1px 0 rgba(0, 0, 0, .4),0 6px 6px 0 rgba(0, 0, 0, .2)"}}),userGroupCardSecondary:e=>({color:e.palette.text.primary,backgroundColor:e.palette.success.light}),permHeaders:e=>({backgroundColor:"dark"===e.palette.mode?e.palette.background.default:e.palette.primary.main,p:"4px",borderRadius:"2px",color:"#EEE"}),userCardContent:{height:"100%",opacity:1},userGroupTitle:{display:"inline-flex",alignItems:"center"},userGroupUserName:{fontWeight:900,padding:5},userGroupUserID:{opacity:.7,padding:5},description:{fontSize:10,fontStyle:"italic",marginLeft:5,opacity:.7},userGroupMember:e=>({display:"inline-flex",m:"4px",p:"4px",backgroundColor:"#00000010",border:"1px solid #FFF",borderColor:e.palette.text.primary,color:e.palette.text.primary,alignItems:"center"}),icon:{height:32,width:32,marginRight:5,backgroundSize:"cover",backgroundPosition:"center"},right:{float:"right"},left:{float:"left",marginRight:10},dialog:{},flex:{display:"flex"},formControl:{display:"flex",padding:24,flexGrow:1e3},formContainer:{display:"flex",justifyContent:"center",alignItems:"center"},formIcon:{margin:10,opacity:.6},descriptionPanel:e=>({width:"100%",backgroundColor:"transparent",mb:"20px",mt:"20px",ml:"20px",opacity:.75,border:"none",display:"flex",alignItems:"center","& a":{pl:"3px",color:"dark"===e.palette.mode?"#EEE":"#111"}}),dialogTitle:{borderBottom:"1px solid #00000020",padding:0,width:"100%"},dialogActions:{borderTop:"1px solid #00000020",width:"100%"},dialogPaper:{overflowY:"initial",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",width:"calc(100% - 100px)",height:"calc(100% - 100px)",maxWidth:800,maxHeight:"100%"},dialogPaperMini:{maxHeight:300},colorPicker:{},iconPreview:{height:40,width:40},mainDescription:{fontSize:"200%"},deleteDialog:{padding:20},narrowContent:{padding:"8px 8px 8px 8px"}},S=()=>{const e=(0,a.gx)();return e.display?(0,h.jsx)("div",{style:e.style,children:e.item.preview}):null},P={_id:"system.user.",type:"user",common:{name:"",password:"",enabled:!0,color:"",desc:""},native:{},enums:{}},F={_id:void 0,native:{},type:"group",common:{name:"",desc:"",members:[],dontDelete:void 0,acl:{object:{list:!1,read:!1,write:!1,delete:!1,create:void 0},state:{list:!1,read:!1,write:!1,create:!1,delete:!1},users:{list:!1,read:!1,write:!1,create:!1,delete:!1},other:{execute:!1,http:!1,sendto:!1},file:{list:!1,read:!1,write:!1,create:!1,delete:!1}},icon:"",color:""}};class O extends o.Component{constructor(e){super(e),this.getText=e=>e&&("object"===typeof e?e[this.props.lang]||e.en||"":e||"")||"",this.showUserEditDialog=(e,t)=>{(e=i.Utils.clone(e)).common.password=e.common.password?I:"",this.setState({userEditDialog:e,userEditDialogNew:t})},this.showGroupEditDialog=(e,t)=>{e=i.Utils.clone(e),this.setState({groupEditDialog:e,groupEditDialogNew:t})},this.updateData=()=>{let e;return this.props.socket.getForeignObjects("system.user.*","user").then((t=>(e=Object.values(t).sort(((e,t)=>e._id>t._id?1:-1)),e.forEach((e=>{e.common&&e.common.description&&(e.common.desc||(e.common.desc=e.common.description),delete e.common.description)})),this.props.socket.getForeignObjects("system.group.*","group")))).then((t=>{const s=Object.values(t).sort(((e,t)=>e._id>t._id?1:-1));s.forEach((e=>{e.common&&e.common.description&&(e.common.desc||(e.common.desc=e.common.description),delete e.common.description)})),this.setState({groups:s,users:e})}))},this.changeUserFormData=e=>this.setState({userEditDialog:e}),this.changeGroupFormData=e=>this.setState({groupEditDialog:e}),this.saveUser=async e=>{const t=i.Utils.clone(this.state.userEditDialog),s=this.state.users.find((e=>e._id===t._id)),o=t.common.password&&t.common.password!==I?t.common.password:"";if(t.common.password=s?s.common.password:"",await this.props.socket.setObject(t._id,t),"object"===typeof this.state.userEditDialog&&e&&e!==this.state.userEditDialog._id)try{await this.props.socket.delObject(e);for(let s=0;s<this.state.groups.length;s++){const o=this.state.groups[s];if(o.common.members.includes(e)){const s=i.Utils.clone(o);s.common.members[s.common.members.indexOf(e)]=t._id,await this.props.socket.setObject(s._id,s)}}}catch(r){window.alert(`Cannot delete user: ${r}`)}if(o)try{await this.props.socket.changePassword(t._id,o)}catch(r){window.alert(`Cannot change password: ${r}`)}this.setState({userEditDialog:!1},(()=>this.updateData()))},this.saveGroup=async e=>{if("object"===typeof this.state.groupEditDialog){if(await this.props.socket.setObject(this.state.groupEditDialog._id,this.state.groupEditDialog),e&&e!==this.state.groupEditDialog._id)try{await this.props.socket.delObject(e)}catch(t){window.alert(`Cannot delete user: ${t}`)}this.setState({groupEditDialog:!1},(()=>this.updateData()))}},this.showUserDeleteDialog=e=>this.setState({userDeleteDialog:e}),this.showGroupDeleteDialog=e=>this.setState({groupDeleteDialog:e}),this.deleteUser=e=>{this.props.socket.delObject(e).then((()=>Promise.all(this.state.groups.map((t=>{if(t.common.members.includes(e)){const s=i.Utils.clone(t);return s.common.members.splice(s.common.members.indexOf(e),1),this.props.socket.setObject(s._id,s)}return Promise.resolve(null)}))))).catch((e=>window.alert(`Cannot delete user: ${e}`))).then((()=>{this.setState({userDeleteDialog:!1},(()=>this.updateData()))}))},this.deleteGroup=e=>this.props.socket.delObject(e).then((()=>this.setState({groupDeleteDialog:!1},(()=>this.updateData())))).catch((e=>window.alert(`Cannot delete user: ${e}`))),this.addUserToGroup=(e,t)=>{const s=this.state.groups.find((e=>e._id===t)),o=s.common.members;o.includes(e)||(o.push(e),this.props.socket.setObject(s._id,s).then((()=>this.updateData())).catch((e=>window.alert(`Cannot delete user: ${e}`))))},this.removeUserFromGroup=(e,t)=>{const s=this.state.groups.find((e=>e._id===t)),o=s.common.members;o.includes(e)&&(o.splice(o.indexOf(e),1),this.props.socket.setObject(s._id,s).then((()=>this.updateData())))},this.state={users:null,groups:null,userEditDialog:!1,userEditDialogNew:null,groupEditDialog:!1,groupEditDialogNew:null,userDeleteDialog:!1,groupDeleteDialog:!1,innerWidth:0}}componentDidMount(){this.setState({innerWidth:window.innerWidth},(()=>this.updateData()))}componentDidUpdate(){window.innerWidth!==this.state.innerWidth&&setTimeout((()=>this.setState({innerWidth:window.innerWidth})),100)}static _isUniqueName(e,t,s){return!e.find((e=>e._id===`system.user.${t.toLowerCase()}_${s}`||e.common.name===`${t} ${s}`))}static findNewUniqueName(e,t,s){let o=1;for(;!O._isUniqueName(t,s,o);)o++;return{_id:`system.${e?"group":"user"}.${s.toLowerCase()}_${o}`,name:`${s} ${o}`}}render(){return this.state.users&&this.state.groups?(0,h.jsxs)(r.Q,{backend:(0,u.CN)()?l.qi:n.t2,children:[(0,h.jsx)(S,{}),(0,h.jsx)(d.Box,{component:"div",sx:E.descriptionPanel,children:this.props.t("You can drag users to groups.")}),(0,h.jsxs)(d.Grid2,{container:!0,spacing:2,style:E.mainGridCont,children:[(0,h.jsxs)(d.Grid2,{size:{xs:12,md:6},style:{...E.childGridCont,...this.state.innerWidth>600?E.childGridContWide:void 0},children:[(0,h.jsxs)("div",{style:E.headContainer,children:[(0,h.jsx)(d.Fab,{size:"small",style:E.right,onClick:()=>{const{_id:e,name:t}=O.findNewUniqueName(!0,this.state.groups,this.props.t("Group")),s=i.Utils.clone(F);s._id=e,s.common.name=t,this.showGroupEditDialog(s,!0)},children:(0,h.jsx)(c.GroupAdd,{})}),(0,h.jsx)(d.Typography,{gutterBottom:!0,variant:"h4",component:"h4",children:this.props.t("Groups")})]}),(0,h.jsx)("div",{style:E.blocksContainer,children:this.state.groups.sort(((e,t)=>{var s,o;const i=(this.getText(null===e||void 0===e||null===(s=e.common)||void 0===s?void 0:s.name)||e._id).toLowerCase(),r=(this.getText(null===t||void 0===t||null===(o=t.common)||void 0===o?void 0:o.name)||t._id).toLowerCase();return i>r?1:i<r?-1:0})).map((e=>(0,h.jsx)(v,{themeType:this.props.themeType,group:e,users:this.state.users,showGroupEditDialog:this.showGroupEditDialog,showGroupDeleteDialog:this.showGroupDeleteDialog,removeUserFromGroup:this.removeUserFromGroup,getText:this.getText,styles:E,...this.props},e._id)))})]}),(0,h.jsxs)(d.Grid2,{size:{xs:12,md:6},style:{...E.childGridCont,...this.state.innerWidth>600?E.childGridContWide:void 0},children:[(0,h.jsxs)("div",{style:E.headContainer,children:[(0,h.jsx)(d.Fab,{size:"small",style:E.right,onClick:()=>{const{_id:e,name:t}=O.findNewUniqueName(!1,this.state.users,this.props.t("User")),s=i.Utils.clone(P);s._id=e,s.common.name=t,this.showUserEditDialog(s,!0)},children:(0,h.jsx)(c.PersonAdd,{})}),(0,h.jsx)(d.Typography,{gutterBottom:!0,variant:"h4",component:"h4",children:this.props.t("Users")})]}),(0,h.jsx)("div",{style:E.blocksContainer,children:this.state.users.sort(((e,t)=>{var s,o;const i=(this.getText(null===e||void 0===e||null===(s=e.common)||void 0===s?void 0:s.name)||e._id).toLowerCase(),r=(this.getText(null===t||void 0===t||null===(o=t.common)||void 0===o?void 0:o.name)||t._id).toLowerCase();return i>r?1:i<r?-1:0})).map((e=>(0,h.jsx)(x,{themeType:this.props.themeType,user:e,groups:this.state.groups,showUserEditDialog:this.showUserEditDialog,showUserDeleteDialog:this.showUserDeleteDialog,updateData:this.updateData,addUserToGroup:this.addUserToGroup,removeUserFromGroup:this.removeUserFromGroup,getText:this.getText,styles:E,...this.props},e._id)))})]})]}),this.state.userEditDialog?(0,h.jsx)(D,{onClose:()=>this.setState({userEditDialog:!1}),users:this.state.users,user:this.state.userEditDialog,isNew:this.state.userEditDialogNew,t:this.props.t,getText:this.getText,styles:E,onChange:this.changeUserFormData,saveData:this.saveUser,innerWidth:this.state.innerWidth}):null,this.state.groupEditDialog?(0,h.jsx)(G,{onClose:()=>this.setState({groupEditDialog:!1}),groups:this.state.groups,group:this.state.groupEditDialog,isNew:this.state.groupEditDialogNew,t:this.props.t,getText:this.getText,styles:E,onChange:this.changeGroupFormData,innerWidth:this.state.innerWidth,saveData:this.saveGroup}):null,this.state.userDeleteDialog?(0,h.jsx)(U,{onClose:()=>this.setState({userDeleteDialog:!1}),user:this.state.userDeleteDialog,t:this.props.t,deleteUser:this.deleteUser}):null,this.state.groupDeleteDialog?(0,h.jsx)(T,{onClose:()=>this.setState({groupDeleteDialog:!1}),group:this.state.groupDeleteDialog,t:this.props.t,styles:E,deleteGroup:this.deleteGroup}):null]}):(0,h.jsx)(d.LinearProgress,{})}}const N=O;function W(e){return(0,h.jsx)(i.TabContainer,{children:(0,h.jsx)(i.TabContent,{style:{display:"flex",flexDirection:"column",overflow:"auto"},children:(0,h.jsx)(N,{t:e.t,lang:e.lang,socket:e.socket,ready:e.ready,expertMode:e.expertMode,themeType:e.themeType,theme:e.theme})})})}},69175:(e,t,s)=>{s.d(t,{gx:()=>a});var o=s(29183),i=s(79645),r=(e,t)=>({x:e.x-t.x,y:e.y-t.y}),n=(e,t)=>{let s=e.getClientOffset();if(null===s)return null;if(!t.current||!t.current.getBoundingClientRect)return r(s,(e=>{let t=e.getInitialClientOffset(),s=e.getInitialSourceClientOffset();return null===t||null===s?{x:0,y:0}:r(t,s)})(e));let o=t.current.getBoundingClientRect(),i={x:o.width/2,y:o.height/2};return r(s,i)},l=e=>{let t=`translate(${e.x.toFixed(1)}px, ${e.y.toFixed(1)}px)`;return{pointerEvents:"none",position:"fixed",top:0,left:0,transform:t,WebkitTransform:t}},a=()=>{let e=(0,o.useRef)(null),t=(0,i.V)((t=>({currentOffset:n(t,e),isDragging:t.isDragging(),itemType:t.getItemType(),item:t.getItem(),monitor:t})));return t.isDragging&&null!==t.currentOffset?{display:!0,itemType:t.itemType,item:t.item,style:l(t.currentOffset),monitor:t.monitor,ref:e}:{display:!1}};(0,o.createContext)(void 0)}}]);
2
+ //# sourceMappingURL=4579.014de1f1.chunk.js.map