ldap-rest 0.17.1 → 0.18.0

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 (67) hide show
  1. package/dist/abstract/ldapFlat.js +1 -1
  2. package/dist/config/schema.js +1 -1
  3. package/dist/lib/ldapActions.js +1 -1
  4. package/dist/plugins/ldap/enterpriseRules.js +1 -1
  5. package/dist/plugins/ldap/groups.js +1 -1
  6. package/dist/plugins/ldap/organizations.js +1 -1
  7. package/dist/plugins/twake/james.js +1 -1
  8. package/dist/src/abstract/ldapFlat.d.ts +9 -11
  9. package/dist/src/browser/ldap-group-editor/types.d.ts +2 -1
  10. package/dist/src/browser/ldap-resource-editor/types.d.ts +3 -2
  11. package/dist/src/browser/ldap-unit-editor/types.d.ts +2 -1
  12. package/dist/src/browser/ldap-user-editor/types.d.ts +3 -2
  13. package/dist/src/browser/shared/types/index.d.ts +7 -1
  14. package/dist/src/browser/shared/utils/schema.d.ts +20 -1
  15. package/dist/src/config/schema.d.ts +27 -4
  16. package/dist/src/plugins/ldap/organizations.d.ts +0 -8
  17. package/dist/src/plugins/twake/james.d.ts +11 -74
  18. package/docs/client-development/api/reference.md +1 -1
  19. package/docs/client-development/api/rest-api.md +11 -1
  20. package/docs/client-development/schemas/README.md +18 -13
  21. package/docs/plugin-development/dependencies.md +1 -3
  22. package/docs/presentations/en.md +0 -28
  23. package/docs/presentations/fr.md +0 -28
  24. package/docs/usage/configuration.md +12 -12
  25. package/docs/usage/plugins/integrations/james-mail.md +25 -119
  26. package/docs/usage/plugins/integrations/james-mailboxes.md +58 -78
  27. package/docs/usage/plugins/ldap/flat-generic.md +23 -5
  28. package/docs/usage/plugins/utilities/weblogs.md +1 -1
  29. package/docs/usage/upgrading.md +30 -0
  30. package/package.json +1 -1
  31. package/static/browser/ldap-resource-editor/api/ResourceApiClient.js +2 -1
  32. package/static/browser/ldap-resource-editor/api/ResourceApiClient.js.map +1 -1
  33. package/static/browser/ldap-user-editor/api/UserApiClient.js +2 -1
  34. package/static/browser/ldap-user-editor/api/UserApiClient.js.map +1 -1
  35. package/static/browser/ldap-user-editor/components/UserEditor.js +11 -8
  36. package/static/browser/ldap-user-editor/components/UserEditor.js.map +1 -1
  37. package/static/browser/ldap-user-editor/components/UserList.js +3 -1
  38. package/static/browser/ldap-user-editor/components/UserList.js.map +1 -1
  39. package/static/browser/ldap-user-editor.esm.js +52 -10
  40. package/static/browser/ldap-user-editor.esm.js.map +1 -1
  41. package/static/browser/ldap-user-editor.js +52 -10
  42. package/static/browser/ldap-user-editor.js.map +1 -1
  43. package/static/browser/ldap-user-editor.min.js +1 -1
  44. package/static/browser/ldap-user-editor.min.js.map +1 -1
  45. package/static/browser/shared/index.js +1 -1
  46. package/static/browser/shared/types/index.js.map +1 -1
  47. package/static/browser/shared/utils/form.js +2 -1
  48. package/static/browser/shared/utils/form.js.map +1 -1
  49. package/static/browser/shared/utils/schema.js +33 -1
  50. package/static/browser/shared/utils/schema.js.map +1 -1
  51. package/static/browser/shared.esm.js +153 -121
  52. package/static/browser/shared.esm.js.map +1 -1
  53. package/static/browser/shared.js +154 -120
  54. package/static/browser/shared.js.map +1 -1
  55. package/static/browser/shared.min.js +1 -1
  56. package/static/browser/shared.min.js.map +1 -1
  57. package/static/schemas/standard/groups.json +1 -1
  58. package/static/schemas/twake/groups.json +25 -7
  59. package/static/schemas/twake/nomenclature/twakeAccountStatus.json +10 -2
  60. package/static/schemas/twake/nomenclature/twakeDeliveryMode.json +10 -2
  61. package/static/schemas/twake/nomenclature/twakeDomain.json +9 -3
  62. package/static/schemas/twake/nomenclature/twakeListType.json +10 -2
  63. package/static/schemas/twake/nomenclature/twakeMailboxType.json +10 -2
  64. package/static/schemas/twake/nomenclature/twakeTitle.json +10 -2
  65. package/static/schemas/twake/organizations.json +4 -1
  66. package/static/schemas/twake/positions.json +4 -1
  67. package/static/schemas/twake/users.json +36 -9
@@ -125,6 +125,46 @@
125
125
  }
126
126
  }
127
127
 
128
+ /**
129
+ * Schema utility functions
130
+ * @module browser/shared/utils/schema
131
+ */
132
+ /**
133
+ * Cache for pointer options to avoid repeated API calls
134
+ */
135
+ /**
136
+ * Tell whether an attribute carries a role: a schema names one, or several.
137
+ *
138
+ * @param attr attribute definition
139
+ * @param role role to look for
140
+ * @returns true when the attribute declares that role
141
+ */
142
+ function hasRole(attr, role) {
143
+ const roles = attr?.role;
144
+ return Array.isArray(roles) ? roles.includes(role) : roles === role;
145
+ }
146
+ /**
147
+ * Pick the text of a {@link LocalizedText} for a language: the exact tag,
148
+ * then its primary language, then English, then whatever the map holds.
149
+ *
150
+ * The editors are written in English, so English is the default.
151
+ *
152
+ * @param text plain string or map keyed by language tag
153
+ * @param language tag to look for
154
+ * @returns the text, or undefined when there is none
155
+ */
156
+ function localizedText(text, language = 'en') {
157
+ if (text === undefined || text === null)
158
+ return undefined;
159
+ if (typeof text === 'string')
160
+ return text || undefined;
161
+ const primary = language.split('-')[0].toLowerCase();
162
+ for (const key of [language, primary, 'en'])
163
+ if (text[key])
164
+ return text[key];
165
+ return Object.values(text).find(Boolean);
166
+ }
167
+
128
168
  /**
129
169
  * LDAP User Editor - API Client
130
170
  */
@@ -274,7 +314,7 @@
274
314
  try {
275
315
  const schema = await this.getSchema(resource.schemaUrl);
276
316
  // Find field with displayName role
277
- const displayField = Object.entries(schema.attributes).find(([, attr]) => attr.role === 'displayName');
317
+ const displayField = Object.entries(schema.attributes).find(([, attr]) => hasRole(attr, 'displayName'));
278
318
  if (displayField) {
279
319
  displayNameField = displayField[0];
280
320
  }
@@ -1099,7 +1139,7 @@
1099
1139
  getFieldByRole(role) {
1100
1140
  if (!this.schema || !this.user)
1101
1141
  return '';
1102
- const field = Object.entries(this.schema.attributes).find(([, attr]) => attr.role === role);
1142
+ const field = Object.entries(this.schema.attributes).find(([, attr]) => hasRole(attr, role));
1103
1143
  if (!field)
1104
1144
  return '';
1105
1145
  const [fieldName] = field;
@@ -1156,11 +1196,12 @@
1156
1196
  // Skip objectClass (it's fixed)
1157
1197
  if (fieldName === 'objectClass')
1158
1198
  continue;
1159
- if (attr.group) {
1160
- if (!groupedFields[attr.group]) {
1161
- groupedFields[attr.group] = [];
1199
+ const group = localizedText(attr.group);
1200
+ if (group) {
1201
+ if (!groupedFields[group]) {
1202
+ groupedFields[group] = [];
1162
1203
  }
1163
- groupedFields[attr.group].push(fieldName);
1204
+ groupedFields[group].push(fieldName);
1164
1205
  }
1165
1206
  else {
1166
1207
  ungroupedFields.push(fieldName);
@@ -1205,11 +1246,12 @@
1205
1246
  return '';
1206
1247
  }
1207
1248
  // Hide organizationLink and organizationPath fields - use Move button instead
1208
- if (attr.role === 'organizationLink' || attr.role === 'organizationPath') {
1249
+ if (hasRole(attr, 'organizationLink') ||
1250
+ hasRole(attr, 'organizationPath')) {
1209
1251
  return '';
1210
1252
  }
1211
1253
  // Show identifier fields as disabled
1212
- if (attr.role === 'identifier') {
1254
+ if (hasRole(attr, 'identifier')) {
1213
1255
  return this.renderIdentifierField(fieldName);
1214
1256
  }
1215
1257
  // Pointer fields
@@ -1492,7 +1534,7 @@
1492
1534
  if (!this.user || !this.schema)
1493
1535
  return;
1494
1536
  // Find the organizationLink field to get current organization
1495
- const orgLinkField = Object.entries(this.schema.attributes).find(([, attr]) => attr.role === 'organizationLink');
1537
+ const orgLinkField = Object.entries(this.schema.attributes).find(([, attr]) => hasRole(attr, 'organizationLink'));
1496
1538
  if (!orgLinkField) {
1497
1539
  alert('This user type does not support moving between organizations');
1498
1540
  return;
@@ -1704,7 +1746,7 @@
1704
1746
  getFieldNameByRole(role) {
1705
1747
  if (!this.schema)
1706
1748
  return null;
1707
- const field = Object.entries(this.schema.attributes).find(([, attr]) => attr.role === role);
1749
+ const field = Object.entries(this.schema.attributes).find(([, attr]) => hasRole(attr, role));
1708
1750
  return field ? field[0] : null;
1709
1751
  }
1710
1752
  getFieldValueByRole(user, role) {
@@ -1 +1 @@
1
- {"version":3,"file":"ldap-user-editor.js","sources":["../../../../src/browser/ldap-user-editor/cache/CacheManager.ts","../../../../src/browser/ldap-user-editor/api/UserApiClient.ts","../../../../src/browser/shared/components/DisposableComponent.ts","../../../../src/browser/ldap-user-editor/components/UserTree.ts","../../../../src/browser/ldap-user-editor/components/PointerField.ts","../../../../src/browser/ldap-user-editor/components/MoveUserModal.ts","../../../../src/browser/ldap-user-editor/components/UserEditor.ts","../../../../src/browser/ldap-user-editor/components/UserList.ts","../../../../src/browser/ldap-user-editor/LdapUserEditor.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ldap-user-editor.js","sources":["../../../../src/browser/ldap-user-editor/cache/CacheManager.ts","../../../../src/browser/shared/utils/schema.ts","../../../../src/browser/ldap-user-editor/api/UserApiClient.ts","../../../../src/browser/shared/components/DisposableComponent.ts","../../../../src/browser/ldap-user-editor/components/UserTree.ts","../../../../src/browser/ldap-user-editor/components/PointerField.ts","../../../../src/browser/ldap-user-editor/components/MoveUserModal.ts","../../../../src/browser/ldap-user-editor/components/UserEditor.ts","../../../../src/browser/ldap-user-editor/components/UserList.ts","../../../../src/browser/ldap-user-editor/LdapUserEditor.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).LdapUserEditor={})}(this,function(e){"use strict";class t{constructor(e={}){this.cache=new Map,this.ttl=e.ttl??3e5,this.maxEntries=e.maxEntries??200}get(e){const t=this.cache.get(e);return t?Date.now()-t.timestamp>=this.ttl?(this.cache.delete(e),null):(t.accessCount++,t.timestamp=Date.now(),t.data):null}set(e,t){this.cache.size>=this.maxEntries&&!this.cache.has(e)&&this.evictLRU(),this.cache.set(e,{data:t,timestamp:Date.now(),accessCount:0})}has(e){return null!==this.get(e)}invalidate(e){this.cache.delete(e)}invalidatePattern(e){const t=new RegExp("^"+e.replace(/\*/g,".*").replace(/\?/g,".")+"$");for(const e of this.cache.keys())t.test(e)&&this.cache.delete(e)}clear(){this.cache.clear()}getStats(){return{size:this.cache.size,maxSize:this.maxEntries,ttl:this.ttl,keys:Array.from(this.cache.keys())}}evictLRU(){let e=null,t=1/0,n=1/0;for(const[s,r]of this.cache.entries())(r.accessCount<n||r.accessCount===n&&r.timestamp<t)&&(e=s,t=r.timestamp,n=r.accessCount);e&&this.cache.delete(e)}cleanExpired(){const e=Date.now();let t=0;for(const[n,s]of this.cache.entries())e-s.timestamp>=this.ttl&&(this.cache.delete(n),t++);return t}}class n{constructor(e="",n){this.baseUrl=e||("undefined"!=typeof window?window.location.origin:""),this.cache=new t(n),"undefined"!=typeof window&&window.setInterval(()=>this.cache.cleanExpired(),3e5)}getApiBase(){return`${this.baseUrl}/api/v1`}getFirstValue(e){return e?Array.isArray(e)?e[0]||"":String(e):""}async cachedFetch(e,t){const n=t?.method||"GET";if("GET"===n){const t=this.cache.get(e);if(null!==t)return t}const s=await fetch(e,t);if(!s.ok)throw new Error(`HTTP ${s.status}: ${s.statusText}`);const r=await s.json();return"GET"===n&&this.cache.set(e,r),r}async getConfig(){return this.cachedFetch(`${this.getApiBase()}/config`)}async getSchema(e){const t=e.startsWith("http")?e:`${this.baseUrl}${e}`;return this.cachedFetch(t)}async getUsers(e=""){const t=e?`${this.getApiBase()}/ldap/users?match=${encodeURIComponent(e)}&attribute=uid`:`${this.getApiBase()}/ldap/users`,n=await this.cachedFetch(t);return Array.isArray(n)?n:Object.values(n)}async getUser(e){const t=`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`;return this.cachedFetch(t)}async updateUser(e,t){const n=await fetch(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){const e=await n.text();throw new Error(e||"Failed to update user")}const s=await n.json();return this.cache.invalidate(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`),this.cache.invalidatePattern(`${this.getApiBase()}/ldap/users*`),s}async createUser(e){const t=await fetch(`${this.getApiBase()}/ldap/users`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const e=await t.text();throw new Error(e||"Failed to create user")}const n=await t.json();return this.cache.invalidatePattern(`${this.getApiBase()}/ldap/users*`),n}async deleteUser(e){const t=await fetch(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`,{method:"DELETE"});if(!t.ok){const e=await t.text();throw new Error(e||"Failed to delete user")}this.cache.invalidate(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`),this.cache.invalidatePattern(`${this.getApiBase()}/ldap/users*`)}async moveUser(e,t){const n=await fetch(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}/move`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({targetOrgDn:t})});if(!n.ok){const e=await n.text();throw new Error(e||"Failed to move user")}const s=await n.json();return this.cache.invalidate(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`),this.cache.invalidatePattern(`${this.getApiBase()}/ldap/users*`),s}async getPointerOptions(e){try{const t=await this.getConfig(),n=t.features?.ldapFlatGeneric?.flatResources?.find(t=>e===t.base||e.startsWith(t.base));if(n&&n.endpoints?.list){const e=`${this.baseUrl}${n.endpoints.list}`,t=await this.cachedFetch(e),s=Array.isArray(t)?t:Object.values(t);let r="cn";const i=n.mainAttribute;if(n.schemaUrl)try{const e=await this.getSchema(n.schemaUrl),t=Object.entries(e.attributes).find(([,e])=>"displayName"===e.role);t&&(r=t[0])}catch(e){}return s.map(e=>{const t=this.getFirstValue(e[r]),n=this.getFirstValue(e[i]);return{dn:e.dn,label:t||n||e.dn}})}throw new Error(`No flatResource found in config for branch: ${e}`)}catch(t){return console.error("Failed to load pointer options for branch:",e,t),[]}}clearCache(){this.cache.clear()}invalidateCache(e){this.cache.invalidatePattern(e)}getCacheStats(){return this.cache.getStats()}getCache(){return this.cache}}class s{constructor(){this._eventListeners=[],this._intervals=[],this._isDestroyed=!1}addManagedEventListener(e,t,n,s){this._isDestroyed||(e.addEventListener(t,n,s),this._eventListeners.push({target:e,type:t,listener:n,options:s}))}addManagedInterval(e,t){const n=setInterval(e,t);return this._intervals.push(n),n}get isDestroyed(){return this._isDestroyed}destroy(){if(!this._isDestroyed){this._isDestroyed=!0;for(const{target:e,type:t,listener:n,options:s}of this._eventListeners)e.removeEventListener(t,n,s);this._eventListeners=[];for(const e of this._intervals)clearInterval(e);this._intervals=[]}}}class r extends s{constructor(e,n,s){super(),this.expandedNodes=new Set,this.selectedDn=null,this.rootDn=null,this.container=e,this.baseUrl=n,this.onSelectOrg=s,this.cache=new t,this.addManagedInterval(()=>this.cache.cleanExpired(),3e5)}async cachedFetch(e){const t=this.cache.get(e);if(null!==t)return t;const n=await fetch(e);if(!n.ok)throw new Error(`HTTP ${n.status}: ${n.statusText}`);const s=await n.json();return this.cache.set(e,s),s}async init(){this.container.innerHTML='\n <div class="sidebar">\n <div class="sidebar-header">\n <h2>\n <span class="material-icons">account_tree</span>\n Organizations\n </h2>\n </div>\n <div id="org-tree-viewer" class="user-tree">\n <div class="loading"><div class="spinner"></div></div>\n </div>\n </div>\n ';try{const e=await this.cachedFetch(`${this.baseUrl}/api/v1/ldap/organizations/top`);this.rootDn=e.dn,await this.renderTree()}catch(e){console.error("Failed to init tree:",e);const t=this.container.querySelector("#org-tree-viewer");t&&(t.innerHTML='<div class="empty-state"><span class="material-icons">error</span><p>Failed to load organization tree</p></div>')}}async renderTree(){const e=this.container.querySelector("#org-tree-viewer");if(e&&this.rootDn)try{const t=await this.renderNode(this.rootDn,0);e.innerHTML=t,this.attachEventListeners()}catch(t){console.error("Failed to render tree:",t),e.innerHTML='<div class="empty-state"><span class="material-icons">error</span><p>Error rendering tree</p></div>'}}async renderNode(e,t){const n=this.expandedNodes.has(e),s=this.selectedDn===e,r=20*t,i=await this.cachedFetch(`${this.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);let a=e;i.ou?a=Array.isArray(i.ou)?i.ou[0]:i.ou:i.cn&&(a=Array.isArray(i.cn)?i.cn[0]:i.cn);let o=`\n <div class="tree-node ${s?"active":""}" style="padding-left: ${r}px">\n <span class="material-icons tree-node-toggle" data-dn="${e}">\n ${n?"expand_more":"chevron_right"}\n </span>\n <span class="material-icons">business</span>\n <span class="tree-node-label" data-dn="${e}">${a}</span>\n </div>\n `;if(n)try{const n=(await this.cachedFetch(`${this.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}/subnodes`)).filter(e=>{const t=Array.isArray(e.objectClass)?e.objectClass:e.objectClass?[e.objectClass]:[];return t.includes("organizationalUnit")||t.includes("organization")});for(const e of n)o+=await this.renderNode(e.dn,t+1)}catch(t){console.error("Failed to load subnodes for",e,t)}return o}attachEventListeners(){this.container.querySelectorAll(".tree-node-toggle").forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.expandedNodes.has(n)?this.expandedNodes.delete(n):this.expandedNodes.add(n),await this.renderTree())})}),this.container.querySelectorAll(".tree-node-label").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.selectedDn=n,this.renderTree(),this.onSelectOrg(n))})})}async refresh(){await this.renderTree()}destroy(){this.container.innerHTML="",super.destroy()}}class i{constructor(e,t,n,s,r){this.options=[],this.api=e,this.fieldName=t,this.attribute=n,this.value=s,this.onChange=r}async init(){await this.loadOptions()}async loadOptions(){try{const e="array"===this.attribute.type?this.attribute.items?.branch?.[0]:this.attribute.branch?.[0];if(!e)return void(this.options=[]);this.options=await this.api.getPointerOptions(e)}catch(e){console.error("Failed to load pointer options:",e),this.options=[]}}render(){const e="array"===this.attribute.type,t=this.attribute.required||!1;return e?this.renderArray(t):this.renderSingle(t)}renderSingle(e){const t=Array.isArray(this.value)?this.value[0]||"":this.value||"";return`\n <div class="form-group">\n <label class="form-label">\n ${this.fieldName}\n ${e?'<span class="required">*</span>':""}\n </label>\n <select\n class="form-select pointer-field-select"\n data-field="${this.fieldName}"\n ${e?"required":""}\n >\n <option value="">Select...</option>\n ${this.options.map(e=>`\n <option value="${e.dn}" ${t===e.dn?"selected":""}>\n ${e.label}\n </option>\n `).join("")}\n </select>\n </div>\n `}renderArray(e){const t=Array.isArray(this.value)?this.value:[];return`\n <div class="form-group">\n <label class="form-label">\n ${this.fieldName}\n ${e?'<span class="required">*</span>':""}\n </label>\n <div class="array-field" data-field="${this.fieldName}">\n ${t.map((e,t)=>`\n <div class="array-item" data-index="${t}">\n <select class="form-select pointer-array-item">\n <option value="">Select...</option>\n ${this.options.map(t=>`\n <option value="${t.dn}" ${e===t.dn?"selected":""}>\n ${t.label}\n </option>\n `).join("")}\n </select>\n <button type="button" class="btn btn-secondary btn-icon remove-array-item">\n <span class="material-icons">remove</span>\n </button>\n </div>\n `).join("")}\n <button type="button" class="btn btn-secondary add-array-item">\n <span class="material-icons">add</span>\n Add ${this.fieldName}\n </button>\n </div>\n </div>\n `}attachHandlers(e){"array"===this.attribute.type?this.attachArrayHandlers(e):this.attachSingleHandlers(e)}attachSingleHandlers(e){const t=e.querySelector(`select[data-field="${this.fieldName}"]`);t?.addEventListener("change",()=>{this.onChange(t.value)})}attachArrayHandlers(e){const t=e.querySelector(`.array-field[data-field="${this.fieldName}"]`);if(!t)return;t.querySelectorAll(".pointer-array-item").forEach((e,t)=>{e.addEventListener("change",()=>{const n=Array.isArray(this.value)?[...this.value]:[];n[t]=e.value,this.onChange(n)})}),t.querySelectorAll(".remove-array-item").forEach((e,t)=>{e.addEventListener("click",()=>{const e=Array.isArray(this.value)?[...this.value]:[];e.splice(t,1),this.onChange(e)})});const n=t.querySelector(".add-array-item");n?.addEventListener("click",()=>{const e=Array.isArray(this.value)?[...this.value]:[];e.push(""),this.onChange(e)})}}class a{constructor(e,t,n){this.modal=null,this.selectedOrgDn=null,this.expandedNodes=new Set,this.rootDn=null,this.api=e,this.currentOrgDn=t,this.onMove=n}static escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}async show(){this.modal=document.createElement("div"),this.modal.className="modal-overlay active",this.modal.innerHTML='\n <div class="modal-container" style="max-width: 600px;">\n <div class="modal-header">\n <h3 style="margin: 0; display: flex; align-items: center; gap: 0.5rem;">\n <span class="material-icons">folder_open</span>\n Move User to Organization\n </h3>\n <button class="modal-close" id="modal-close-btn">\n <span class="material-icons">close</span>\n </button>\n </div>\n <div class="modal-body">\n <div id="move-modal-alert"></div>\n <div style="margin-bottom: 1rem; color: #666; font-size: 0.9rem;">\n Select the target organization where you want to move this user.\n </div>\n <div id="organization-tree-container" style="max-height: 400px; overflow-y: auto; border: 1px solid #ddd; border-radius: 4px; padding: 0.5rem;">\n <div class="loading">\n <div class="spinner"></div>\n <p style="margin-top: 1rem">Loading organizations...</p>\n </div>\n </div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-secondary" id="modal-cancel-btn">\n Cancel\n </button>\n <button type="button" class="btn btn-primary" id="modal-move-btn" disabled>\n <span class="material-icons">drive_file_move</span>\n Move User\n </button>\n </div>\n </div>\n ',document.body.appendChild(this.modal),this.attachHandlers(),await this.loadOrganizationTree()}attachHandlers(){if(!this.modal)return;const e=this.modal.querySelector("#modal-close-btn");e?.addEventListener("click",()=>this.close());const t=this.modal.querySelector("#modal-cancel-btn");t?.addEventListener("click",()=>this.close());const n=this.modal.querySelector("#modal-move-btn");n?.addEventListener("click",()=>this.handleMove()),this.modal.addEventListener("click",e=>{e.target===this.modal&&this.close()});const s=e=>{"Escape"===e.key&&(this.close(),document.removeEventListener("keydown",s))};document.addEventListener("keydown",s)}async loadOrganizationTree(){console.log("loadOrganizationTree called");const e=this.modal?.querySelector("#organization-tree-container");if(e)try{console.log("Fetching top organization...");const e=await this.api.cachedFetch(`${this.api.baseUrl||window.location.origin}/api/v1/ldap/organizations/top`);console.log("Top org:",e),this.rootDn=e.dn,this.expandedNodes.add(this.rootDn),console.log("Calling renderTree..."),await this.renderTree(),console.log("renderTree completed")}catch(t){console.error("Error in loadOrganizationTree:",t),e.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>Failed to load organizations: ${a.escapeHtml(t.message)}</div>\n </div>\n `}else console.log("Container not found")}async renderTree(){console.log("renderTree called");const e=this.modal?.querySelector("#organization-tree-container");if(e&&this.rootDn)try{console.log("renderTree: calling renderNode for",this.rootDn);const t=await this.renderNode(this.rootDn,0);console.log("renderTree: got html, length:",t.length),e.innerHTML=t,console.log("renderTree: html set, attaching handlers"),this.attachTreeHandlers(),console.log("renderTree: handlers attached")}catch(t){console.error("Error in renderTree:",t),e.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>Error rendering tree: ${a.escapeHtml(t.message)}</div>\n </div>\n `}else console.log("renderTree: no container or rootDn",{container:e,rootDn:this.rootDn})}async renderNode(e,t){console.log("renderNode called for",e,"level",t);const n=this.expandedNodes.has(e),s=e===this.currentOrgDn,r=e===this.selectedOrgDn,i=20*t,o=this.api.baseUrl||window.location.origin;console.log("Fetching node details from:",`${o}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);const c=await this.api.cachedFetch(`${o}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);console.log("Got node:",c);const l=Array.isArray(c.ou)?c.ou[0]:c.ou,d=(c.twakeDepartmentPath?Array.isArray(c.twakeDepartmentPath)?c.twakeDepartmentPath[0]:c.twakeDepartmentPath:void 0)||l||e;let h=`\n <div\n class="org-node ${s?"org-current":""} ${r?"org-selected":""}"\n data-org-dn="${a.escapeHtml(e)}"\n style="\n padding: 0.5rem;\n padding-left: ${i+8}px;\n cursor: ${s?"not-allowed":"pointer"};\n background: ${s?"#f5f5f5":r?"#e3f2fd":"white"};\n opacity: ${s?"0.6":"1"};\n display: flex;\n align-items: center;\n gap: 0.5rem;\n border-left: 2px solid ${r?"#2196f3":"transparent"};\n "\n >\n <span class="material-icons tree-toggle" data-dn="${a.escapeHtml(e)}" style="cursor: pointer; font-size: 1.2rem;">\n ${n?"expand_more":"chevron_right"}\n </span>\n <span class="material-icons" style="font-size: 1.2rem; color: ${s?"#999":"#2196f3"};">\n ${s?"business":"folder"}\n </span>\n <span style="flex: 1; font-weight: ${r?"600":"500"};">\n ${a.escapeHtml(d)}\n ${s?'<span style="font-size: 0.85rem; color: #666; margin-left: 0.5rem;">(current)</span>':""}\n </span>\n ${r?'<span class="material-icons" style="color: #2196f3;">check_circle</span>':""}\n </div>\n `;if(n)try{const n=await this.api.cachedFetch(`${o}/api/v1/ldap/organizations/${encodeURIComponent(e)}/subnodes?objectClass=organizationalUnit`);for(const e of n)h+=await this.renderNode(e.dn,t+1)}catch{}return h}attachTreeHandlers(){const e=this.modal?.querySelectorAll(".tree-toggle");e?.forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.expandedNodes.has(n)?this.expandedNodes.delete(n):this.expandedNodes.add(n),await this.renderTree())})});const t=this.modal?.querySelectorAll(".org-node");t?.forEach(e=>{const t=e.getAttribute("data-org-dn");t&&t!==this.currentOrgDn&&e.addEventListener("click",()=>{this.selectOrganization(t)})})}async selectOrganization(e){this.selectedOrgDn=e,await this.renderTree();const t=this.modal?.querySelector("#modal-move-btn");t&&(t.disabled=!1)}async handleMove(){if(!this.selectedOrgDn)return;const e=this.modal?.querySelector("#modal-move-btn"),t=this.modal?.querySelector("#move-modal-alert");e&&(e.disabled=!0,e.innerHTML='\n <span class="spinner" style="width: 1rem; height: 1rem; border-width: 2px;"></span>\n Moving...\n ');try{this.onMove(this.selectedOrgDn),this.close()}catch(n){t&&(t.innerHTML=`\n <div class="alert alert-error" style="margin-bottom: 1rem;">\n <span class="material-icons">error</span>\n <div>Move failed: ${a.escapeHtml(n.message)}</div>\n </div>\n `),e&&(e.disabled=!1,e.innerHTML='\n <span class="material-icons">drive_file_move</span>\n Move User\n ')}}close(){this.modal&&(this.modal.remove(),this.modal=null)}}class o{static escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}constructor(e,t,n,s,r){this.user=null,this.schema=null,this.formData={},this.pointerFields=new Map,this.ldapBase="",this.container=e,this.api=t,this.userDn=n,this.onSaved=s,this.onDeleted=r}async init(){try{this.showLoading(),await this.loadUserAndSchema(),this.render(),await this.initPointerFields(),this.attachHandlers()}catch(e){this.showError(e.message)}}showLoading(){this.container.innerHTML='\n <div class="loading">\n <div class="spinner"></div>\n <p style="margin-top: 1rem">Loading user data...</p>\n </div>\n '}showError(e){this.container.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>${o.escapeHtml(e)}</div>\n </div>\n `}async loadUserAndSchema(){const e=await this.api.getConfig();this.ldapBase=e.ldapBase;const t=e.features?.ldapFlatGeneric?.flatResources?.find(e=>"users"===e.pluralName||"users"===e.name),n=t?.schemaUrl;if(!n)throw new Error("Users schema not configured");[this.schema,this.user]=await Promise.all([this.api.getSchema(n),this.api.getUser(this.userDn)]),this.schema&&this.replacePlaceholders(this.schema),this.formData={...this.user}}replacePlaceholders(e){for(const t of Object.values(e.attributes))t.branch&&(t.branch=t.branch.map(e=>e.replace(/__LDAP_BASE__/g,this.ldapBase))),t.items?.branch&&(t.items.branch=t.items.branch.map(e=>e.replace(/__LDAP_BASE__/g,this.ldapBase)))}getFirstValue(e){return e?Array.isArray(e)?e[0]||"":String(e):""}getFieldByRole(e){if(!this.schema||!this.user)return"";const t=Object.entries(this.schema.attributes).find(([,t])=>t.role===e);if(!t)return"";const[n]=t;return this.getFirstValue(this.user[n])}render(){if(!this.user||!this.schema)return;const e=this.getFieldByRole("displayName"),t=this.getFirstValue(this.user[this.schema.entity.mainAttribute]),n=e||t||"User";this.container.innerHTML=`\n <div class="editor-container">\n <div class="editor-header">\n <span class="material-icons">person</span>\n <div class="editor-title">\n <h3>${o.escapeHtml(n)}</h3>\n <div class="dn">${o.escapeHtml(this.userDn)}</div>\n </div>\n </div>\n\n <div id="alert-container"></div>\n\n <form id="user-edit-form" class="editor-form">\n ${this.renderFormSections()}\n\n <div class="editor-actions" style="margin-top: 2rem; display: flex; justify-content: space-between; align-items: center;">\n <div style="display: flex; gap: 0.5rem;">\n <button type="button" class="btn btn-secondary" id="move-user-btn">\n <span class="material-icons">drive_file_move</span>\n Move User\n </button>\n <button type="button" class="btn btn-secondary" id="delete-user-btn" style="background: #d32f2f; color: white;">\n <span class="material-icons">person_remove</span>\n Delete User\n </button>\n </div>\n <button type="submit" class="btn btn-primary">\n <span class="material-icons">save</span>\n Save Changes\n </button>\n </div>\n </form>\n </div>\n `}renderFormSections(){if(!this.schema)return"";const e={},t=[];for(const[n,s]of Object.entries(this.schema.attributes))"objectClass"!==n&&(s.group?(e[s.group]||(e[s.group]=[]),e[s.group].push(n)):t.push(n));let n=Object.entries(e).map(([e,t])=>`\n <div class="form-section">\n <div class="form-section-title">${o.escapeHtml(e)}</div>\n <div class="form-row">\n ${t.map(e=>this.renderField(e)).filter(e=>e).join("")}\n </div>\n </div>\n `).join("");return t.length>0&&(n+=`\n <div class="form-section">\n <div class="form-section-title">Other Fields</div>\n <div class="form-row">\n ${t.map(e=>this.renderField(e)).filter(e=>e).join("")}\n </div>\n </div>\n `),n}renderField(e){const t=this.schema?.attributes[e];return t?t.fixed||"organizationLink"===t.role||"organizationPath"===t.role?"":"identifier"===t.role?this.renderIdentifierField(e):"pointer"===t.type||"pointer"===t.items?.type?`<div id="pointer-${o.escapeHtml(e)}"></div>`:"array"===t.type?this.renderArrayField(e,t):"number"===t.type||"integer"===t.type?this.renderNumberField(e,t):this.renderStringField(e,t):""}renderIdentifierField(e){const t=this.formData[e],n=Array.isArray(t)?t[0]:t||"";return`\n <div class="form-group">\n <label class="form-label">${o.escapeHtml(e)}</label>\n <input\n type="text"\n class="form-input"\n value="${o.escapeHtml(n)}"\n disabled\n />\n </div>\n `}renderStringField(e,t){const n=this.formData[e]||"",s=t.test?.includes("@")?"email":"userPassword"===e?"password":"text";return`\n <div class="form-group">\n <label class="form-label">\n ${o.escapeHtml(e)}\n ${t.required?'<span class="required">*</span>':""}\n </label>\n <input\n type="${o.escapeHtml(s)}"\n class="form-input"\n name="${o.escapeHtml(e)}"\n value="${o.escapeHtml(n)}"\n ${t.required?"required":""}\n />\n </div>\n `}renderNumberField(e,t){const n=this.formData[e]||"";return`\n <div class="form-group">\n <label class="form-label">\n ${o.escapeHtml(e)}\n ${t.required?'<span class="required">*</span>':""}\n </label>\n <input\n type="number"\n class="form-input"\n name="${o.escapeHtml(e)}"\n value="${o.escapeHtml(n)}"\n ${t.required?"required":""}\n />\n </div>\n `}renderArrayField(e,t){const n=Array.isArray(this.formData[e])?this.formData[e]:[],s="string"===t.items?.type&&t.items?.test?.includes("@")?"email":"text";return`\n <div class="form-group">\n <label class="form-label">\n ${o.escapeHtml(e)}\n ${t.required?'<span class="required">*</span>':""}\n </label>\n <div class="array-field" data-field="${o.escapeHtml(e)}">\n ${n.map((e,t)=>`\n <div class="array-item" data-index="${t}">\n <input\n type="${o.escapeHtml(s)}"\n class="form-input array-string-item"\n value="${o.escapeHtml(e)}"\n />\n <button type="button" class="btn btn-secondary btn-icon remove-array-item">\n <span class="material-icons">remove</span>\n </button>\n </div>\n `).join("")}\n <button type="button" class="btn btn-secondary add-array-item" data-field="${o.escapeHtml(e)}">\n <span class="material-icons">add</span>\n Add ${o.escapeHtml(e)}\n </button>\n </div>\n </div>\n `}async initPointerFields(){if(!this.schema)return;const e=Object.entries(this.schema.attributes).filter(([,e])=>("pointer"===e.type||"pointer"===e.items?.type)&&!e.fixed).map(([e])=>e);for(const t of e){const e=this.schema.attributes[t],n=this.formData[t],s=new i(this.api,t,e,n,e=>{this.formData[t]=e,this.rerenderPointerField(t)});await s.init(),this.pointerFields.set(t,s);const r=this.container.querySelector(`#pointer-${t}`);r&&(r.innerHTML=s.render(),s.attachHandlers(r))}}rerenderPointerField(e){const t=this.pointerFields.get(e);if(!t)return;const n=this.container.querySelector(`#pointer-${e}`);n&&(n.innerHTML=t.render(),t.attachHandlers(n))}attachHandlers(){const e=this.container.querySelector("#user-edit-form");e?.addEventListener("submit",e=>this.handleSubmit(e));const t=this.container.querySelector("#move-user-btn");t?.addEventListener("click",()=>this.handleMove());const n=this.container.querySelector("#delete-user-btn");n?.addEventListener("click",()=>this.handleDelete()),this.container.querySelectorAll("input[name]").forEach(e=>{e.addEventListener("input",()=>{const t=e.name,n=this.schema?.attributes[t];this.formData[t]="number"===n?.type||"integer"===n?.type?e.value?parseInt(e.value,10):"":e.value})}),this.attachArrayFieldHandlers()}attachArrayFieldHandlers(){this.container.querySelectorAll(".array-field").forEach(e=>{const t=e.getAttribute("data-field");t&&(e.querySelectorAll(".array-string-item").forEach((e,n)=>{e.addEventListener("input",()=>{const s=Array.isArray(this.formData[t])?[...this.formData[t]]:[];s[n]=e.value,this.formData[t]=s})}),e.querySelectorAll(".remove-array-item").forEach((e,n)=>{e.addEventListener("click",()=>{const e=Array.isArray(this.formData[t])?[...this.formData[t]]:[];e.splice(n,1),this.formData[t]=e,this.rerenderArrayField(t)})}))}),this.container.querySelectorAll(".add-array-item").forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-field");if(!t)return;const n=Array.isArray(this.formData[t])?[...this.formData[t]]:[];n.push(""),this.formData[t]=n,this.rerenderArrayField(t)})})}rerenderArrayField(e){const t=this.schema?.attributes[e];if(!t)return;const n=this.container.querySelector(`.array-field[data-field="${e}"]`)?.parentElement;if(n){const s="pointer"===t.type||"pointer"===t.items?.type?this.pointerFields.get(e)?.render()||"":this.renderArrayField(e,t);if(n.outerHTML=s,"pointer"===t.type||"pointer"===t.items?.type){const t=this.container.querySelector(`#pointer-${e}`);if(t){const n=this.pointerFields.get(e);n?.attachHandlers(t)}}else this.attachArrayFieldHandlers()}}async handleSubmit(e){e.preventDefault();const t=this.container.querySelector("#alert-container"),n=this.container.querySelector('button[type="submit"]');t&&(t.innerHTML=""),n&&(n.disabled=!0);try{await this.api.updateUser(this.userDn,this.formData),t&&(t.innerHTML='\n <div class="alert alert-success">\n <span class="material-icons">check_circle</span>\n <div>User updated successfully!</div>\n </div>\n '),this.onSaved&&this.onSaved()}catch(e){t&&(t.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>${o.escapeHtml(e.message)}</div>\n </div>\n `)}finally{n&&(n.disabled=!1)}}async handleMove(){if(!this.user||!this.schema)return;const e=Object.entries(this.schema.attributes).find(([,e])=>"organizationLink"===e.role);if(!e)return void alert("This user type does not support moving between organizations");const[t]=e,n=Array.isArray(this.user[t])?String(this.user[t][0]):String(this.user[t]||"");if(!n)return void alert("User does not have an organization link");const s=new a(this.api,n,async e=>{await this.performMove(e)});await s.show()}async performMove(e){const t=this.container.querySelector("#alert-container"),n=this.container.querySelector("#move-user-btn");t&&(t.innerHTML=""),n&&(n.disabled=!0,n.innerHTML='\n <span class="spinner" style="width: 1rem; height: 1rem; border-width: 2px;"></span>\n Moving...\n ');try{const n=await this.api.moveUser(this.userDn,e);t&&(t.innerHTML='\n <div class="alert alert-success">\n <span class="material-icons">check_circle</span>\n <div>User moved successfully!</div>\n </div>\n '),n.newDn&&(this.userDn=n.newDn),await this.init(),this.onSaved&&this.onSaved()}catch(e){throw t&&(t.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>${o.escapeHtml(e.message)}</div>\n </div>\n `),n&&(n.disabled=!1,n.innerHTML='\n <span class="material-icons">drive_file_move</span>\n Move User\n '),e}}async handleDelete(){if(!confirm(`Are you sure you want to delete this user?\n\n${this.userDn}`))return;const e=this.container.querySelector("#alert-container"),t=this.container.querySelector("#delete-user-btn");e&&(e.innerHTML=""),t&&(t.disabled=!0);try{await this.api.deleteUser(this.userDn),e&&(e.innerHTML='\n <div class="alert alert-success">\n <span class="material-icons">check_circle</span>\n <div>User deleted successfully!</div>\n </div>\n '),this.onDeleted&&this.onDeleted()}catch(n){e&&(e.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>${o.escapeHtml(n.message)}</div>\n </div>\n `),t&&(t.disabled=!1)}}async refresh(){await this.init()}}class c{constructor(e,t,n,s){this.users=[],this.searchQuery="",this.schema=null,this.config=null,this.container=e,this.api=t,this.orgDn=n,this.onSelectUser=s}async init(){this.config=await this.api.getConfig();const e=this.config.features?.ldapFlatGeneric?.flatResources?.find(e=>"users"===e.pluralName||"users"===e.name);e?.schemaUrl&&(this.schema=await this.api.getSchema(e.schemaUrl)),this.render(),await this.loadUsers()}render(){this.container.innerHTML='\n <div class="user-list-container">\n <div class="user-list-header">\n <h2>\n <span class="material-icons">people</span>\n Users\n </h2>\n <div class="search-box">\n <span class="material-icons">search</span>\n <input\n type="text"\n placeholder="Search users in this organization..."\n id="user-list-search-input"\n />\n </div>\n </div>\n <div class="user-list" id="user-list-items">\n <div class="loading">\n <div class="spinner"></div>\n </div>\n </div>\n </div>\n ';const e=this.container.querySelector("#user-list-search-input");e?.addEventListener("input",e=>{this.searchQuery=e.target.value,this.renderUserList()})}async loadUsers(){const e=this.container.querySelector("#user-list-items");if(e)try{e.innerHTML='<div class="loading"><div class="spinner"></div></div>';const t=this.api.baseUrl||window.location.origin,n=this.schema?.entity?.objectClass?.[1]||"twakeAccount",s=await fetch(`${t}/api/v1/ldap/organizations/${encodeURIComponent(this.orgDn)}/subnodes?objectClass=${encodeURIComponent(n)}`);if(!s.ok)throw new Error("Failed to fetch organization users");const r=await s.json(),i=this.schema?.entity?.objectClass||[],a=this.schema?.entity?.mainAttribute||"";this.users=r.filter(e=>{const t=Array.isArray(e.objectClass)?e.objectClass:[e.objectClass];return!!e[a]&&i.every(e=>t.includes(e))}),this.renderUserList()}catch(t){console.error("Failed to load users:",t),e.innerHTML='<div class="empty-state"><span class="material-icons">error</span><p>Failed to load users</p></div>'}}getFirstValue(e){return e?Array.isArray(e)?e[0]||"":String(e):""}getFieldNameByRole(e){if(!this.schema)return null;const t=Object.entries(this.schema.attributes).find(([,t])=>t.role===e);return t?t[0]:null}getFieldValueByRole(e,t){const n=this.getFieldNameByRole(t);return n?this.getFirstValue(e[n]):""}renderUserList(){const e=this.container.querySelector("#user-list-items");if(!e)return;const t=this.getFieldNameByRole("displayName"),n=this.schema?.entity?.mainAttribute||"",s=this.getFieldNameByRole("primaryEmail"),r=this.searchQuery?this.users.filter(e=>{const r=t?this.getFirstValue(e[t]).toLowerCase():"",i=this.getFirstValue(e[n]).toLowerCase(),a=s?this.getFirstValue(e[s]).toLowerCase():"",o=this.searchQuery.toLowerCase();return r.includes(o)||i.includes(o)||a.includes(o)}):this.users;0!==r.length?(e.innerHTML=r.map(e=>{const r=t?this.getFirstValue(e[t]):"",i=this.getFirstValue(e[n]),a=s?this.getFirstValue(e[s]):"",o=r||i||"Unknown";return`\n <div\n class="tree-node"\n data-dn="${e.dn}"\n >\n <span class="material-icons">person</span>\n <div class="tree-node-content">\n <div class="tree-node-name">\n ${o}\n </div>\n ${a?`<div class="tree-node-email">${a}</div>`:""}\n </div>\n </div>\n `}).join(""),e.querySelectorAll(".tree-node").forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-dn");t&&this.onSelectUser(t)})})):e.innerHTML='<div class="empty-state"><span class="material-icons">person_search</span><p>No users found</p></div>'}async refresh(){await this.loadUsers()}}e.LdapUserEditor=class{constructor(e){this.container=null,this.userTree=null,this.userEditor=null,this.userList=null,this.currentUserDn=null,this.currentOrgDn=null,this.config=null,this.options={apiBaseUrl:"undefined"!=typeof window?window.location.origin:"",...e},this.api=new n(this.options.apiBaseUrl)}async init(){if(this.container=document.getElementById(this.options.containerId),!this.container)throw new Error(`Container #${this.options.containerId} not found`);this.config=await this.api.getConfig(),this.render(),await this.initComponents()}render(){this.container&&(this.container.innerHTML='\n <div class="ldap-user-editor">\n <div class="editor-layout">\n <div id="user-tree-container" class="demo-panel"></div>\n <div id="user-editor-container" class="demo-panel">\n <div class="empty-state">\n <span class="material-icons">person_search</span>\n <p>Select a user from the list to edit</p>\n </div>\n </div>\n </div>\n </div>\n ')}async initComponents(){const e=document.getElementById("user-tree-container");if(e){this.userTree=new r(e,this.options.apiBaseUrl||window.location.origin,e=>this.onOrganizationSelected(e));try{await this.userTree.init()}catch(e){this.handleError(e)}}}async onOrganizationSelected(e){const t=document.getElementById("user-editor-container");if(t){this.currentOrgDn=e,this.currentUserDn=null;try{this.userList=new c(t,this.api,e,e=>this.onUserSelected(e)),await this.userList.init()}catch(e){this.handleError(e),t.innerHTML='\n <div class="empty-state">\n <span class="material-icons">error</span>\n <p>Failed to load users for this organization</p>\n </div>\n '}}}async onUserSelected(e){this.currentUserDn=e;const t=document.getElementById("user-editor-container");if(t){this.userEditor=new o(t,this.api,e,()=>{this.options.onUserSaved&&this.options.onUserSaved(e),this.currentOrgDn&&this.userList&&this.userList.refresh()},()=>{this.deleteUser(e)});try{await this.userEditor.init()}catch(e){this.handleError(e)}}}handleError(e){console.error("LDAP User Editor error:",e),this.options.onError&&this.options.onError(e)}async refresh(){await(this.userTree?.refresh()),this.currentUserDn&&await(this.userEditor?.refresh())}destroy(){this.container&&(this.container.innerHTML=""),this.userTree=null,this.userEditor=null,this.currentUserDn=null}async createUser(e){try{const t=await this.api.createUser(e);return this.userList&&await this.userList.refresh(),t}catch(e){throw this.handleError(e),e}}async deleteUser(e){try{if(await this.api.deleteUser(e),this.currentUserDn===e){this.currentUserDn=null;const e=document.getElementById("user-editor-container");e&&(e.innerHTML='\n <div class="empty-state">\n <span class="material-icons">person_search</span>\n <p>Select a user from the list to edit</p>\n </div>\n ')}this.userList&&await this.userList.refresh()}catch(e){throw this.handleError(e),e}}getConfig(){return this.config}getApi(){return this.api}getCurrentOrgDn(){return this.currentOrgDn}getCurrentUserDn(){return this.currentUserDn}}});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).LdapUserEditor={})}(this,function(e){"use strict";class t{constructor(e={}){this.cache=new Map,this.ttl=e.ttl??3e5,this.maxEntries=e.maxEntries??200}get(e){const t=this.cache.get(e);return t?Date.now()-t.timestamp>=this.ttl?(this.cache.delete(e),null):(t.accessCount++,t.timestamp=Date.now(),t.data):null}set(e,t){this.cache.size>=this.maxEntries&&!this.cache.has(e)&&this.evictLRU(),this.cache.set(e,{data:t,timestamp:Date.now(),accessCount:0})}has(e){return null!==this.get(e)}invalidate(e){this.cache.delete(e)}invalidatePattern(e){const t=new RegExp("^"+e.replace(/\*/g,".*").replace(/\?/g,".")+"$");for(const e of this.cache.keys())t.test(e)&&this.cache.delete(e)}clear(){this.cache.clear()}getStats(){return{size:this.cache.size,maxSize:this.maxEntries,ttl:this.ttl,keys:Array.from(this.cache.keys())}}evictLRU(){let e=null,t=1/0,n=1/0;for(const[s,i]of this.cache.entries())(i.accessCount<n||i.accessCount===n&&i.timestamp<t)&&(e=s,t=i.timestamp,n=i.accessCount);e&&this.cache.delete(e)}cleanExpired(){const e=Date.now();let t=0;for(const[n,s]of this.cache.entries())e-s.timestamp>=this.ttl&&(this.cache.delete(n),t++);return t}}function n(e,t){const n=e?.role;return Array.isArray(n)?n.includes(t):n===t}function s(e,t="en"){if(null==e)return;if("string"==typeof e)return e||void 0;const n=t.split("-")[0].toLowerCase();for(const s of[t,n,"en"])if(e[s])return e[s];return Object.values(e).find(Boolean)}class i{constructor(e="",n){this.baseUrl=e||("undefined"!=typeof window?window.location.origin:""),this.cache=new t(n),"undefined"!=typeof window&&window.setInterval(()=>this.cache.cleanExpired(),3e5)}getApiBase(){return`${this.baseUrl}/api/v1`}getFirstValue(e){return e?Array.isArray(e)?e[0]||"":String(e):""}async cachedFetch(e,t){const n=t?.method||"GET";if("GET"===n){const t=this.cache.get(e);if(null!==t)return t}const s=await fetch(e,t);if(!s.ok)throw new Error(`HTTP ${s.status}: ${s.statusText}`);const i=await s.json();return"GET"===n&&this.cache.set(e,i),i}async getConfig(){return this.cachedFetch(`${this.getApiBase()}/config`)}async getSchema(e){const t=e.startsWith("http")?e:`${this.baseUrl}${e}`;return this.cachedFetch(t)}async getUsers(e=""){const t=e?`${this.getApiBase()}/ldap/users?match=${encodeURIComponent(e)}&attribute=uid`:`${this.getApiBase()}/ldap/users`,n=await this.cachedFetch(t);return Array.isArray(n)?n:Object.values(n)}async getUser(e){const t=`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`;return this.cachedFetch(t)}async updateUser(e,t){const n=await fetch(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){const e=await n.text();throw new Error(e||"Failed to update user")}const s=await n.json();return this.cache.invalidate(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`),this.cache.invalidatePattern(`${this.getApiBase()}/ldap/users*`),s}async createUser(e){const t=await fetch(`${this.getApiBase()}/ldap/users`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const e=await t.text();throw new Error(e||"Failed to create user")}const n=await t.json();return this.cache.invalidatePattern(`${this.getApiBase()}/ldap/users*`),n}async deleteUser(e){const t=await fetch(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`,{method:"DELETE"});if(!t.ok){const e=await t.text();throw new Error(e||"Failed to delete user")}this.cache.invalidate(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`),this.cache.invalidatePattern(`${this.getApiBase()}/ldap/users*`)}async moveUser(e,t){const n=await fetch(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}/move`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({targetOrgDn:t})});if(!n.ok){const e=await n.text();throw new Error(e||"Failed to move user")}const s=await n.json();return this.cache.invalidate(`${this.getApiBase()}/ldap/users/${encodeURIComponent(e)}`),this.cache.invalidatePattern(`${this.getApiBase()}/ldap/users*`),s}async getPointerOptions(e){try{const t=await this.getConfig(),s=t.features?.ldapFlatGeneric?.flatResources?.find(t=>e===t.base||e.startsWith(t.base));if(s&&s.endpoints?.list){const e=`${this.baseUrl}${s.endpoints.list}`,t=await this.cachedFetch(e),i=Array.isArray(t)?t:Object.values(t);let r="cn";const a=s.mainAttribute;if(s.schemaUrl)try{const e=await this.getSchema(s.schemaUrl),t=Object.entries(e.attributes).find(([,e])=>n(e,"displayName"));t&&(r=t[0])}catch(e){}return i.map(e=>{const t=this.getFirstValue(e[r]),n=this.getFirstValue(e[a]);return{dn:e.dn,label:t||n||e.dn}})}throw new Error(`No flatResource found in config for branch: ${e}`)}catch(t){return console.error("Failed to load pointer options for branch:",e,t),[]}}clearCache(){this.cache.clear()}invalidateCache(e){this.cache.invalidatePattern(e)}getCacheStats(){return this.cache.getStats()}getCache(){return this.cache}}class r{constructor(){this._eventListeners=[],this._intervals=[],this._isDestroyed=!1}addManagedEventListener(e,t,n,s){this._isDestroyed||(e.addEventListener(t,n,s),this._eventListeners.push({target:e,type:t,listener:n,options:s}))}addManagedInterval(e,t){const n=setInterval(e,t);return this._intervals.push(n),n}get isDestroyed(){return this._isDestroyed}destroy(){if(!this._isDestroyed){this._isDestroyed=!0;for(const{target:e,type:t,listener:n,options:s}of this._eventListeners)e.removeEventListener(t,n,s);this._eventListeners=[];for(const e of this._intervals)clearInterval(e);this._intervals=[]}}}class a extends r{constructor(e,n,s){super(),this.expandedNodes=new Set,this.selectedDn=null,this.rootDn=null,this.container=e,this.baseUrl=n,this.onSelectOrg=s,this.cache=new t,this.addManagedInterval(()=>this.cache.cleanExpired(),3e5)}async cachedFetch(e){const t=this.cache.get(e);if(null!==t)return t;const n=await fetch(e);if(!n.ok)throw new Error(`HTTP ${n.status}: ${n.statusText}`);const s=await n.json();return this.cache.set(e,s),s}async init(){this.container.innerHTML='\n <div class="sidebar">\n <div class="sidebar-header">\n <h2>\n <span class="material-icons">account_tree</span>\n Organizations\n </h2>\n </div>\n <div id="org-tree-viewer" class="user-tree">\n <div class="loading"><div class="spinner"></div></div>\n </div>\n </div>\n ';try{const e=await this.cachedFetch(`${this.baseUrl}/api/v1/ldap/organizations/top`);this.rootDn=e.dn,await this.renderTree()}catch(e){console.error("Failed to init tree:",e);const t=this.container.querySelector("#org-tree-viewer");t&&(t.innerHTML='<div class="empty-state"><span class="material-icons">error</span><p>Failed to load organization tree</p></div>')}}async renderTree(){const e=this.container.querySelector("#org-tree-viewer");if(e&&this.rootDn)try{const t=await this.renderNode(this.rootDn,0);e.innerHTML=t,this.attachEventListeners()}catch(t){console.error("Failed to render tree:",t),e.innerHTML='<div class="empty-state"><span class="material-icons">error</span><p>Error rendering tree</p></div>'}}async renderNode(e,t){const n=this.expandedNodes.has(e),s=this.selectedDn===e,i=20*t,r=await this.cachedFetch(`${this.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);let a=e;r.ou?a=Array.isArray(r.ou)?r.ou[0]:r.ou:r.cn&&(a=Array.isArray(r.cn)?r.cn[0]:r.cn);let o=`\n <div class="tree-node ${s?"active":""}" style="padding-left: ${i}px">\n <span class="material-icons tree-node-toggle" data-dn="${e}">\n ${n?"expand_more":"chevron_right"}\n </span>\n <span class="material-icons">business</span>\n <span class="tree-node-label" data-dn="${e}">${a}</span>\n </div>\n `;if(n)try{const n=(await this.cachedFetch(`${this.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}/subnodes`)).filter(e=>{const t=Array.isArray(e.objectClass)?e.objectClass:e.objectClass?[e.objectClass]:[];return t.includes("organizationalUnit")||t.includes("organization")});for(const e of n)o+=await this.renderNode(e.dn,t+1)}catch(t){console.error("Failed to load subnodes for",e,t)}return o}attachEventListeners(){this.container.querySelectorAll(".tree-node-toggle").forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.expandedNodes.has(n)?this.expandedNodes.delete(n):this.expandedNodes.add(n),await this.renderTree())})}),this.container.querySelectorAll(".tree-node-label").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.selectedDn=n,this.renderTree(),this.onSelectOrg(n))})})}async refresh(){await this.renderTree()}destroy(){this.container.innerHTML="",super.destroy()}}class o{constructor(e,t,n,s,i){this.options=[],this.api=e,this.fieldName=t,this.attribute=n,this.value=s,this.onChange=i}async init(){await this.loadOptions()}async loadOptions(){try{const e="array"===this.attribute.type?this.attribute.items?.branch?.[0]:this.attribute.branch?.[0];if(!e)return void(this.options=[]);this.options=await this.api.getPointerOptions(e)}catch(e){console.error("Failed to load pointer options:",e),this.options=[]}}render(){const e="array"===this.attribute.type,t=this.attribute.required||!1;return e?this.renderArray(t):this.renderSingle(t)}renderSingle(e){const t=Array.isArray(this.value)?this.value[0]||"":this.value||"";return`\n <div class="form-group">\n <label class="form-label">\n ${this.fieldName}\n ${e?'<span class="required">*</span>':""}\n </label>\n <select\n class="form-select pointer-field-select"\n data-field="${this.fieldName}"\n ${e?"required":""}\n >\n <option value="">Select...</option>\n ${this.options.map(e=>`\n <option value="${e.dn}" ${t===e.dn?"selected":""}>\n ${e.label}\n </option>\n `).join("")}\n </select>\n </div>\n `}renderArray(e){const t=Array.isArray(this.value)?this.value:[];return`\n <div class="form-group">\n <label class="form-label">\n ${this.fieldName}\n ${e?'<span class="required">*</span>':""}\n </label>\n <div class="array-field" data-field="${this.fieldName}">\n ${t.map((e,t)=>`\n <div class="array-item" data-index="${t}">\n <select class="form-select pointer-array-item">\n <option value="">Select...</option>\n ${this.options.map(t=>`\n <option value="${t.dn}" ${e===t.dn?"selected":""}>\n ${t.label}\n </option>\n `).join("")}\n </select>\n <button type="button" class="btn btn-secondary btn-icon remove-array-item">\n <span class="material-icons">remove</span>\n </button>\n </div>\n `).join("")}\n <button type="button" class="btn btn-secondary add-array-item">\n <span class="material-icons">add</span>\n Add ${this.fieldName}\n </button>\n </div>\n </div>\n `}attachHandlers(e){"array"===this.attribute.type?this.attachArrayHandlers(e):this.attachSingleHandlers(e)}attachSingleHandlers(e){const t=e.querySelector(`select[data-field="${this.fieldName}"]`);t?.addEventListener("change",()=>{this.onChange(t.value)})}attachArrayHandlers(e){const t=e.querySelector(`.array-field[data-field="${this.fieldName}"]`);if(!t)return;t.querySelectorAll(".pointer-array-item").forEach((e,t)=>{e.addEventListener("change",()=>{const n=Array.isArray(this.value)?[...this.value]:[];n[t]=e.value,this.onChange(n)})}),t.querySelectorAll(".remove-array-item").forEach((e,t)=>{e.addEventListener("click",()=>{const e=Array.isArray(this.value)?[...this.value]:[];e.splice(t,1),this.onChange(e)})});const n=t.querySelector(".add-array-item");n?.addEventListener("click",()=>{const e=Array.isArray(this.value)?[...this.value]:[];e.push(""),this.onChange(e)})}}class c{constructor(e,t,n){this.modal=null,this.selectedOrgDn=null,this.expandedNodes=new Set,this.rootDn=null,this.api=e,this.currentOrgDn=t,this.onMove=n}static escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}async show(){this.modal=document.createElement("div"),this.modal.className="modal-overlay active",this.modal.innerHTML='\n <div class="modal-container" style="max-width: 600px;">\n <div class="modal-header">\n <h3 style="margin: 0; display: flex; align-items: center; gap: 0.5rem;">\n <span class="material-icons">folder_open</span>\n Move User to Organization\n </h3>\n <button class="modal-close" id="modal-close-btn">\n <span class="material-icons">close</span>\n </button>\n </div>\n <div class="modal-body">\n <div id="move-modal-alert"></div>\n <div style="margin-bottom: 1rem; color: #666; font-size: 0.9rem;">\n Select the target organization where you want to move this user.\n </div>\n <div id="organization-tree-container" style="max-height: 400px; overflow-y: auto; border: 1px solid #ddd; border-radius: 4px; padding: 0.5rem;">\n <div class="loading">\n <div class="spinner"></div>\n <p style="margin-top: 1rem">Loading organizations...</p>\n </div>\n </div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-secondary" id="modal-cancel-btn">\n Cancel\n </button>\n <button type="button" class="btn btn-primary" id="modal-move-btn" disabled>\n <span class="material-icons">drive_file_move</span>\n Move User\n </button>\n </div>\n </div>\n ',document.body.appendChild(this.modal),this.attachHandlers(),await this.loadOrganizationTree()}attachHandlers(){if(!this.modal)return;const e=this.modal.querySelector("#modal-close-btn");e?.addEventListener("click",()=>this.close());const t=this.modal.querySelector("#modal-cancel-btn");t?.addEventListener("click",()=>this.close());const n=this.modal.querySelector("#modal-move-btn");n?.addEventListener("click",()=>this.handleMove()),this.modal.addEventListener("click",e=>{e.target===this.modal&&this.close()});const s=e=>{"Escape"===e.key&&(this.close(),document.removeEventListener("keydown",s))};document.addEventListener("keydown",s)}async loadOrganizationTree(){console.log("loadOrganizationTree called");const e=this.modal?.querySelector("#organization-tree-container");if(e)try{console.log("Fetching top organization...");const e=await this.api.cachedFetch(`${this.api.baseUrl||window.location.origin}/api/v1/ldap/organizations/top`);console.log("Top org:",e),this.rootDn=e.dn,this.expandedNodes.add(this.rootDn),console.log("Calling renderTree..."),await this.renderTree(),console.log("renderTree completed")}catch(t){console.error("Error in loadOrganizationTree:",t),e.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>Failed to load organizations: ${c.escapeHtml(t.message)}</div>\n </div>\n `}else console.log("Container not found")}async renderTree(){console.log("renderTree called");const e=this.modal?.querySelector("#organization-tree-container");if(e&&this.rootDn)try{console.log("renderTree: calling renderNode for",this.rootDn);const t=await this.renderNode(this.rootDn,0);console.log("renderTree: got html, length:",t.length),e.innerHTML=t,console.log("renderTree: html set, attaching handlers"),this.attachTreeHandlers(),console.log("renderTree: handlers attached")}catch(t){console.error("Error in renderTree:",t),e.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>Error rendering tree: ${c.escapeHtml(t.message)}</div>\n </div>\n `}else console.log("renderTree: no container or rootDn",{container:e,rootDn:this.rootDn})}async renderNode(e,t){console.log("renderNode called for",e,"level",t);const n=this.expandedNodes.has(e),s=e===this.currentOrgDn,i=e===this.selectedOrgDn,r=20*t,a=this.api.baseUrl||window.location.origin;console.log("Fetching node details from:",`${a}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);const o=await this.api.cachedFetch(`${a}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);console.log("Got node:",o);const l=Array.isArray(o.ou)?o.ou[0]:o.ou,d=(o.twakeDepartmentPath?Array.isArray(o.twakeDepartmentPath)?o.twakeDepartmentPath[0]:o.twakeDepartmentPath:void 0)||l||e;let h=`\n <div\n class="org-node ${s?"org-current":""} ${i?"org-selected":""}"\n data-org-dn="${c.escapeHtml(e)}"\n style="\n padding: 0.5rem;\n padding-left: ${r+8}px;\n cursor: ${s?"not-allowed":"pointer"};\n background: ${s?"#f5f5f5":i?"#e3f2fd":"white"};\n opacity: ${s?"0.6":"1"};\n display: flex;\n align-items: center;\n gap: 0.5rem;\n border-left: 2px solid ${i?"#2196f3":"transparent"};\n "\n >\n <span class="material-icons tree-toggle" data-dn="${c.escapeHtml(e)}" style="cursor: pointer; font-size: 1.2rem;">\n ${n?"expand_more":"chevron_right"}\n </span>\n <span class="material-icons" style="font-size: 1.2rem; color: ${s?"#999":"#2196f3"};">\n ${s?"business":"folder"}\n </span>\n <span style="flex: 1; font-weight: ${i?"600":"500"};">\n ${c.escapeHtml(d)}\n ${s?'<span style="font-size: 0.85rem; color: #666; margin-left: 0.5rem;">(current)</span>':""}\n </span>\n ${i?'<span class="material-icons" style="color: #2196f3;">check_circle</span>':""}\n </div>\n `;if(n)try{const n=await this.api.cachedFetch(`${a}/api/v1/ldap/organizations/${encodeURIComponent(e)}/subnodes?objectClass=organizationalUnit`);for(const e of n)h+=await this.renderNode(e.dn,t+1)}catch{}return h}attachTreeHandlers(){const e=this.modal?.querySelectorAll(".tree-toggle");e?.forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.expandedNodes.has(n)?this.expandedNodes.delete(n):this.expandedNodes.add(n),await this.renderTree())})});const t=this.modal?.querySelectorAll(".org-node");t?.forEach(e=>{const t=e.getAttribute("data-org-dn");t&&t!==this.currentOrgDn&&e.addEventListener("click",()=>{this.selectOrganization(t)})})}async selectOrganization(e){this.selectedOrgDn=e,await this.renderTree();const t=this.modal?.querySelector("#modal-move-btn");t&&(t.disabled=!1)}async handleMove(){if(!this.selectedOrgDn)return;const e=this.modal?.querySelector("#modal-move-btn"),t=this.modal?.querySelector("#move-modal-alert");e&&(e.disabled=!0,e.innerHTML='\n <span class="spinner" style="width: 1rem; height: 1rem; border-width: 2px;"></span>\n Moving...\n ');try{this.onMove(this.selectedOrgDn),this.close()}catch(n){t&&(t.innerHTML=`\n <div class="alert alert-error" style="margin-bottom: 1rem;">\n <span class="material-icons">error</span>\n <div>Move failed: ${c.escapeHtml(n.message)}</div>\n </div>\n `),e&&(e.disabled=!1,e.innerHTML='\n <span class="material-icons">drive_file_move</span>\n Move User\n ')}}close(){this.modal&&(this.modal.remove(),this.modal=null)}}class l{static escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}constructor(e,t,n,s,i){this.user=null,this.schema=null,this.formData={},this.pointerFields=new Map,this.ldapBase="",this.container=e,this.api=t,this.userDn=n,this.onSaved=s,this.onDeleted=i}async init(){try{this.showLoading(),await this.loadUserAndSchema(),this.render(),await this.initPointerFields(),this.attachHandlers()}catch(e){this.showError(e.message)}}showLoading(){this.container.innerHTML='\n <div class="loading">\n <div class="spinner"></div>\n <p style="margin-top: 1rem">Loading user data...</p>\n </div>\n '}showError(e){this.container.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>${l.escapeHtml(e)}</div>\n </div>\n `}async loadUserAndSchema(){const e=await this.api.getConfig();this.ldapBase=e.ldapBase;const t=e.features?.ldapFlatGeneric?.flatResources?.find(e=>"users"===e.pluralName||"users"===e.name),n=t?.schemaUrl;if(!n)throw new Error("Users schema not configured");[this.schema,this.user]=await Promise.all([this.api.getSchema(n),this.api.getUser(this.userDn)]),this.schema&&this.replacePlaceholders(this.schema),this.formData={...this.user}}replacePlaceholders(e){for(const t of Object.values(e.attributes))t.branch&&(t.branch=t.branch.map(e=>e.replace(/__LDAP_BASE__/g,this.ldapBase))),t.items?.branch&&(t.items.branch=t.items.branch.map(e=>e.replace(/__LDAP_BASE__/g,this.ldapBase)))}getFirstValue(e){return e?Array.isArray(e)?e[0]||"":String(e):""}getFieldByRole(e){if(!this.schema||!this.user)return"";const t=Object.entries(this.schema.attributes).find(([,t])=>n(t,e));if(!t)return"";const[s]=t;return this.getFirstValue(this.user[s])}render(){if(!this.user||!this.schema)return;const e=this.getFieldByRole("displayName"),t=this.getFirstValue(this.user[this.schema.entity.mainAttribute]),n=e||t||"User";this.container.innerHTML=`\n <div class="editor-container">\n <div class="editor-header">\n <span class="material-icons">person</span>\n <div class="editor-title">\n <h3>${l.escapeHtml(n)}</h3>\n <div class="dn">${l.escapeHtml(this.userDn)}</div>\n </div>\n </div>\n\n <div id="alert-container"></div>\n\n <form id="user-edit-form" class="editor-form">\n ${this.renderFormSections()}\n\n <div class="editor-actions" style="margin-top: 2rem; display: flex; justify-content: space-between; align-items: center;">\n <div style="display: flex; gap: 0.5rem;">\n <button type="button" class="btn btn-secondary" id="move-user-btn">\n <span class="material-icons">drive_file_move</span>\n Move User\n </button>\n <button type="button" class="btn btn-secondary" id="delete-user-btn" style="background: #d32f2f; color: white;">\n <span class="material-icons">person_remove</span>\n Delete User\n </button>\n </div>\n <button type="submit" class="btn btn-primary">\n <span class="material-icons">save</span>\n Save Changes\n </button>\n </div>\n </form>\n </div>\n `}renderFormSections(){if(!this.schema)return"";const e={},t=[];for(const[n,i]of Object.entries(this.schema.attributes)){if("objectClass"===n)continue;const r=s(i.group);r?(e[r]||(e[r]=[]),e[r].push(n)):t.push(n)}let n=Object.entries(e).map(([e,t])=>`\n <div class="form-section">\n <div class="form-section-title">${l.escapeHtml(e)}</div>\n <div class="form-row">\n ${t.map(e=>this.renderField(e)).filter(e=>e).join("")}\n </div>\n </div>\n `).join("");return t.length>0&&(n+=`\n <div class="form-section">\n <div class="form-section-title">Other Fields</div>\n <div class="form-row">\n ${t.map(e=>this.renderField(e)).filter(e=>e).join("")}\n </div>\n </div>\n `),n}renderField(e){const t=this.schema?.attributes[e];return t?t.fixed||n(t,"organizationLink")||n(t,"organizationPath")?"":n(t,"identifier")?this.renderIdentifierField(e):"pointer"===t.type||"pointer"===t.items?.type?`<div id="pointer-${l.escapeHtml(e)}"></div>`:"array"===t.type?this.renderArrayField(e,t):"number"===t.type||"integer"===t.type?this.renderNumberField(e,t):this.renderStringField(e,t):""}renderIdentifierField(e){const t=this.formData[e],n=Array.isArray(t)?t[0]:t||"";return`\n <div class="form-group">\n <label class="form-label">${l.escapeHtml(e)}</label>\n <input\n type="text"\n class="form-input"\n value="${l.escapeHtml(n)}"\n disabled\n />\n </div>\n `}renderStringField(e,t){const n=this.formData[e]||"",s=t.test?.includes("@")?"email":"userPassword"===e?"password":"text";return`\n <div class="form-group">\n <label class="form-label">\n ${l.escapeHtml(e)}\n ${t.required?'<span class="required">*</span>':""}\n </label>\n <input\n type="${l.escapeHtml(s)}"\n class="form-input"\n name="${l.escapeHtml(e)}"\n value="${l.escapeHtml(n)}"\n ${t.required?"required":""}\n />\n </div>\n `}renderNumberField(e,t){const n=this.formData[e]||"";return`\n <div class="form-group">\n <label class="form-label">\n ${l.escapeHtml(e)}\n ${t.required?'<span class="required">*</span>':""}\n </label>\n <input\n type="number"\n class="form-input"\n name="${l.escapeHtml(e)}"\n value="${l.escapeHtml(n)}"\n ${t.required?"required":""}\n />\n </div>\n `}renderArrayField(e,t){const n=Array.isArray(this.formData[e])?this.formData[e]:[],s="string"===t.items?.type&&t.items?.test?.includes("@")?"email":"text";return`\n <div class="form-group">\n <label class="form-label">\n ${l.escapeHtml(e)}\n ${t.required?'<span class="required">*</span>':""}\n </label>\n <div class="array-field" data-field="${l.escapeHtml(e)}">\n ${n.map((e,t)=>`\n <div class="array-item" data-index="${t}">\n <input\n type="${l.escapeHtml(s)}"\n class="form-input array-string-item"\n value="${l.escapeHtml(e)}"\n />\n <button type="button" class="btn btn-secondary btn-icon remove-array-item">\n <span class="material-icons">remove</span>\n </button>\n </div>\n `).join("")}\n <button type="button" class="btn btn-secondary add-array-item" data-field="${l.escapeHtml(e)}">\n <span class="material-icons">add</span>\n Add ${l.escapeHtml(e)}\n </button>\n </div>\n </div>\n `}async initPointerFields(){if(!this.schema)return;const e=Object.entries(this.schema.attributes).filter(([,e])=>("pointer"===e.type||"pointer"===e.items?.type)&&!e.fixed).map(([e])=>e);for(const t of e){const e=this.schema.attributes[t],n=this.formData[t],s=new o(this.api,t,e,n,e=>{this.formData[t]=e,this.rerenderPointerField(t)});await s.init(),this.pointerFields.set(t,s);const i=this.container.querySelector(`#pointer-${t}`);i&&(i.innerHTML=s.render(),s.attachHandlers(i))}}rerenderPointerField(e){const t=this.pointerFields.get(e);if(!t)return;const n=this.container.querySelector(`#pointer-${e}`);n&&(n.innerHTML=t.render(),t.attachHandlers(n))}attachHandlers(){const e=this.container.querySelector("#user-edit-form");e?.addEventListener("submit",e=>this.handleSubmit(e));const t=this.container.querySelector("#move-user-btn");t?.addEventListener("click",()=>this.handleMove());const n=this.container.querySelector("#delete-user-btn");n?.addEventListener("click",()=>this.handleDelete()),this.container.querySelectorAll("input[name]").forEach(e=>{e.addEventListener("input",()=>{const t=e.name,n=this.schema?.attributes[t];this.formData[t]="number"===n?.type||"integer"===n?.type?e.value?parseInt(e.value,10):"":e.value})}),this.attachArrayFieldHandlers()}attachArrayFieldHandlers(){this.container.querySelectorAll(".array-field").forEach(e=>{const t=e.getAttribute("data-field");t&&(e.querySelectorAll(".array-string-item").forEach((e,n)=>{e.addEventListener("input",()=>{const s=Array.isArray(this.formData[t])?[...this.formData[t]]:[];s[n]=e.value,this.formData[t]=s})}),e.querySelectorAll(".remove-array-item").forEach((e,n)=>{e.addEventListener("click",()=>{const e=Array.isArray(this.formData[t])?[...this.formData[t]]:[];e.splice(n,1),this.formData[t]=e,this.rerenderArrayField(t)})}))}),this.container.querySelectorAll(".add-array-item").forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-field");if(!t)return;const n=Array.isArray(this.formData[t])?[...this.formData[t]]:[];n.push(""),this.formData[t]=n,this.rerenderArrayField(t)})})}rerenderArrayField(e){const t=this.schema?.attributes[e];if(!t)return;const n=this.container.querySelector(`.array-field[data-field="${e}"]`)?.parentElement;if(n){const s="pointer"===t.type||"pointer"===t.items?.type?this.pointerFields.get(e)?.render()||"":this.renderArrayField(e,t);if(n.outerHTML=s,"pointer"===t.type||"pointer"===t.items?.type){const t=this.container.querySelector(`#pointer-${e}`);if(t){const n=this.pointerFields.get(e);n?.attachHandlers(t)}}else this.attachArrayFieldHandlers()}}async handleSubmit(e){e.preventDefault();const t=this.container.querySelector("#alert-container"),n=this.container.querySelector('button[type="submit"]');t&&(t.innerHTML=""),n&&(n.disabled=!0);try{await this.api.updateUser(this.userDn,this.formData),t&&(t.innerHTML='\n <div class="alert alert-success">\n <span class="material-icons">check_circle</span>\n <div>User updated successfully!</div>\n </div>\n '),this.onSaved&&this.onSaved()}catch(e){t&&(t.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>${l.escapeHtml(e.message)}</div>\n </div>\n `)}finally{n&&(n.disabled=!1)}}async handleMove(){if(!this.user||!this.schema)return;const e=Object.entries(this.schema.attributes).find(([,e])=>n(e,"organizationLink"));if(!e)return void alert("This user type does not support moving between organizations");const[t]=e,s=Array.isArray(this.user[t])?String(this.user[t][0]):String(this.user[t]||"");if(!s)return void alert("User does not have an organization link");const i=new c(this.api,s,async e=>{await this.performMove(e)});await i.show()}async performMove(e){const t=this.container.querySelector("#alert-container"),n=this.container.querySelector("#move-user-btn");t&&(t.innerHTML=""),n&&(n.disabled=!0,n.innerHTML='\n <span class="spinner" style="width: 1rem; height: 1rem; border-width: 2px;"></span>\n Moving...\n ');try{const n=await this.api.moveUser(this.userDn,e);t&&(t.innerHTML='\n <div class="alert alert-success">\n <span class="material-icons">check_circle</span>\n <div>User moved successfully!</div>\n </div>\n '),n.newDn&&(this.userDn=n.newDn),await this.init(),this.onSaved&&this.onSaved()}catch(e){throw t&&(t.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>${l.escapeHtml(e.message)}</div>\n </div>\n `),n&&(n.disabled=!1,n.innerHTML='\n <span class="material-icons">drive_file_move</span>\n Move User\n '),e}}async handleDelete(){if(!confirm(`Are you sure you want to delete this user?\n\n${this.userDn}`))return;const e=this.container.querySelector("#alert-container"),t=this.container.querySelector("#delete-user-btn");e&&(e.innerHTML=""),t&&(t.disabled=!0);try{await this.api.deleteUser(this.userDn),e&&(e.innerHTML='\n <div class="alert alert-success">\n <span class="material-icons">check_circle</span>\n <div>User deleted successfully!</div>\n </div>\n '),this.onDeleted&&this.onDeleted()}catch(n){e&&(e.innerHTML=`\n <div class="alert alert-error">\n <span class="material-icons">error</span>\n <div>${l.escapeHtml(n.message)}</div>\n </div>\n `),t&&(t.disabled=!1)}}async refresh(){await this.init()}}class d{constructor(e,t,n,s){this.users=[],this.searchQuery="",this.schema=null,this.config=null,this.container=e,this.api=t,this.orgDn=n,this.onSelectUser=s}async init(){this.config=await this.api.getConfig();const e=this.config.features?.ldapFlatGeneric?.flatResources?.find(e=>"users"===e.pluralName||"users"===e.name);e?.schemaUrl&&(this.schema=await this.api.getSchema(e.schemaUrl)),this.render(),await this.loadUsers()}render(){this.container.innerHTML='\n <div class="user-list-container">\n <div class="user-list-header">\n <h2>\n <span class="material-icons">people</span>\n Users\n </h2>\n <div class="search-box">\n <span class="material-icons">search</span>\n <input\n type="text"\n placeholder="Search users in this organization..."\n id="user-list-search-input"\n />\n </div>\n </div>\n <div class="user-list" id="user-list-items">\n <div class="loading">\n <div class="spinner"></div>\n </div>\n </div>\n </div>\n ';const e=this.container.querySelector("#user-list-search-input");e?.addEventListener("input",e=>{this.searchQuery=e.target.value,this.renderUserList()})}async loadUsers(){const e=this.container.querySelector("#user-list-items");if(e)try{e.innerHTML='<div class="loading"><div class="spinner"></div></div>';const t=this.api.baseUrl||window.location.origin,n=this.schema?.entity?.objectClass?.[1]||"twakeAccount",s=await fetch(`${t}/api/v1/ldap/organizations/${encodeURIComponent(this.orgDn)}/subnodes?objectClass=${encodeURIComponent(n)}`);if(!s.ok)throw new Error("Failed to fetch organization users");const i=await s.json(),r=this.schema?.entity?.objectClass||[],a=this.schema?.entity?.mainAttribute||"";this.users=i.filter(e=>{const t=Array.isArray(e.objectClass)?e.objectClass:[e.objectClass];return!!e[a]&&r.every(e=>t.includes(e))}),this.renderUserList()}catch(t){console.error("Failed to load users:",t),e.innerHTML='<div class="empty-state"><span class="material-icons">error</span><p>Failed to load users</p></div>'}}getFirstValue(e){return e?Array.isArray(e)?e[0]||"":String(e):""}getFieldNameByRole(e){if(!this.schema)return null;const t=Object.entries(this.schema.attributes).find(([,t])=>n(t,e));return t?t[0]:null}getFieldValueByRole(e,t){const n=this.getFieldNameByRole(t);return n?this.getFirstValue(e[n]):""}renderUserList(){const e=this.container.querySelector("#user-list-items");if(!e)return;const t=this.getFieldNameByRole("displayName"),n=this.schema?.entity?.mainAttribute||"",s=this.getFieldNameByRole("primaryEmail"),i=this.searchQuery?this.users.filter(e=>{const i=t?this.getFirstValue(e[t]).toLowerCase():"",r=this.getFirstValue(e[n]).toLowerCase(),a=s?this.getFirstValue(e[s]).toLowerCase():"",o=this.searchQuery.toLowerCase();return i.includes(o)||r.includes(o)||a.includes(o)}):this.users;0!==i.length?(e.innerHTML=i.map(e=>{const i=t?this.getFirstValue(e[t]):"",r=this.getFirstValue(e[n]),a=s?this.getFirstValue(e[s]):"",o=i||r||"Unknown";return`\n <div\n class="tree-node"\n data-dn="${e.dn}"\n >\n <span class="material-icons">person</span>\n <div class="tree-node-content">\n <div class="tree-node-name">\n ${o}\n </div>\n ${a?`<div class="tree-node-email">${a}</div>`:""}\n </div>\n </div>\n `}).join(""),e.querySelectorAll(".tree-node").forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-dn");t&&this.onSelectUser(t)})})):e.innerHTML='<div class="empty-state"><span class="material-icons">person_search</span><p>No users found</p></div>'}async refresh(){await this.loadUsers()}}e.LdapUserEditor=class{constructor(e){this.container=null,this.userTree=null,this.userEditor=null,this.userList=null,this.currentUserDn=null,this.currentOrgDn=null,this.config=null,this.options={apiBaseUrl:"undefined"!=typeof window?window.location.origin:"",...e},this.api=new i(this.options.apiBaseUrl)}async init(){if(this.container=document.getElementById(this.options.containerId),!this.container)throw new Error(`Container #${this.options.containerId} not found`);this.config=await this.api.getConfig(),this.render(),await this.initComponents()}render(){this.container&&(this.container.innerHTML='\n <div class="ldap-user-editor">\n <div class="editor-layout">\n <div id="user-tree-container" class="demo-panel"></div>\n <div id="user-editor-container" class="demo-panel">\n <div class="empty-state">\n <span class="material-icons">person_search</span>\n <p>Select a user from the list to edit</p>\n </div>\n </div>\n </div>\n </div>\n ')}async initComponents(){const e=document.getElementById("user-tree-container");if(e){this.userTree=new a(e,this.options.apiBaseUrl||window.location.origin,e=>this.onOrganizationSelected(e));try{await this.userTree.init()}catch(e){this.handleError(e)}}}async onOrganizationSelected(e){const t=document.getElementById("user-editor-container");if(t){this.currentOrgDn=e,this.currentUserDn=null;try{this.userList=new d(t,this.api,e,e=>this.onUserSelected(e)),await this.userList.init()}catch(e){this.handleError(e),t.innerHTML='\n <div class="empty-state">\n <span class="material-icons">error</span>\n <p>Failed to load users for this organization</p>\n </div>\n '}}}async onUserSelected(e){this.currentUserDn=e;const t=document.getElementById("user-editor-container");if(t){this.userEditor=new l(t,this.api,e,()=>{this.options.onUserSaved&&this.options.onUserSaved(e),this.currentOrgDn&&this.userList&&this.userList.refresh()},()=>{this.deleteUser(e)});try{await this.userEditor.init()}catch(e){this.handleError(e)}}}handleError(e){console.error("LDAP User Editor error:",e),this.options.onError&&this.options.onError(e)}async refresh(){await(this.userTree?.refresh()),this.currentUserDn&&await(this.userEditor?.refresh())}destroy(){this.container&&(this.container.innerHTML=""),this.userTree=null,this.userEditor=null,this.currentUserDn=null}async createUser(e){try{const t=await this.api.createUser(e);return this.userList&&await this.userList.refresh(),t}catch(e){throw this.handleError(e),e}}async deleteUser(e){try{if(await this.api.deleteUser(e),this.currentUserDn===e){this.currentUserDn=null;const e=document.getElementById("user-editor-container");e&&(e.innerHTML='\n <div class="empty-state">\n <span class="material-icons">person_search</span>\n <p>Select a user from the list to edit</p>\n </div>\n ')}this.userList&&await this.userList.refresh()}catch(e){throw this.handleError(e),e}}getConfig(){return this.config}getApi(){return this.api}getCurrentOrgDn(){return this.currentOrgDn}getCurrentUserDn(){return this.currentUserDn}}});
2
2
  //# sourceMappingURL=ldap-user-editor.min.js.map