external-user-group.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { HasObjectId, IUserGroupRelation, Ref } from '@growi/core';
  2. import { IUserGroup } from './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> | null
  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 interface LdapGroupSyncSettings {
  15. ldapGroupSearchBase: string
  16. ldapGroupMembershipAttribute: string
  17. ldapGroupMembershipAttributeType: 'DN' | 'UID'
  18. ldapGroupChildGroupAttribute: string
  19. autoGenerateUserOnLdapGroupSync: boolean
  20. preserveDeletedLdapGroups: boolean
  21. ldapGroupNameAttribute: string
  22. ldapGroupDescriptionAttribute?: string
  23. }
  24. export type ExternalUserInfo = {
  25. id: string, // external user id
  26. username: string,
  27. name: string,
  28. email?: string,
  29. }
  30. // Data structure to express the tree structure of external groups, before converting to ExternalUserGroup model
  31. export interface ExternalUserGroupTreeNode {
  32. id: string
  33. userInfos: ExternalUserInfo[]
  34. childGroupNodes: ExternalUserGroupTreeNode[]
  35. name: string
  36. description?: string
  37. }