2
0

external-user-group.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { HasObjectId, IUserGroupRelation, Ref } from '@growi/core';
  2. import { IUserGroup } from '../../../interfaces/user';
  3. export const ExternalGroupProviderType = { ldap: 'ldap' } as const;
  4. export type ExternalGroupProviderType = typeof ExternalGroupProviderType[keyof typeof ExternalGroupProviderType];
  5. export interface IExternalUserGroup extends Omit<IUserGroup, 'parent'> {
  6. parent?: Ref<IExternalUserGroup>
  7. externalId: string // identifier used in external app/server
  8. provider: ExternalGroupProviderType
  9. }
  10. export type IExternalUserGroupHasId = IExternalUserGroup & HasObjectId;
  11. export interface IExternalUserGroupRelation extends Omit<IUserGroupRelation, 'relatedGroup'> {
  12. relatedGroup: Ref<IExternalUserGroup>
  13. }
  14. export const LdapGroupMembershipAttributeType = { dn: 'DN', uid: 'UID' } as const;
  15. type LdapGroupMembershipAttributeType = typeof LdapGroupMembershipAttributeType[keyof typeof LdapGroupMembershipAttributeType];
  16. export interface LdapGroupSyncSettings {
  17. ldapGroupSearchBase: string
  18. ldapGroupMembershipAttribute: string
  19. ldapGroupMembershipAttributeType: LdapGroupMembershipAttributeType
  20. ldapGroupChildGroupAttribute: string
  21. autoGenerateUserOnLdapGroupSync: boolean
  22. preserveDeletedLdapGroups: boolean
  23. ldapGroupNameAttribute: string
  24. ldapGroupDescriptionAttribute?: string
  25. }
  26. export type ExternalUserInfo = {
  27. id: string, // external user id
  28. username: string,
  29. name?: string,
  30. email?: string,
  31. }
  32. // Data structure to express the tree structure of external groups, before converting to ExternalUserGroup model
  33. export interface ExternalUserGroupTreeNode {
  34. id: string // external group id
  35. userInfos: ExternalUserInfo[]
  36. childGroupNodes: ExternalUserGroupTreeNode[]
  37. name: string
  38. description?: string
  39. }