Explorar o código

refs 124384: add external user group related models

Futa Arai %!s(int64=2) %!d(string=hai) anos
pai
achega
fc83dd77a4

+ 13 - 0
apps/app/src/interfaces/external-user-group.ts

@@ -1,3 +1,16 @@
+import { IUserGroupRelation, Ref } from '@growi/core';
+
+import { IUserGroup } from './user';
+
+export interface IExternalUserGroup extends Omit<IUserGroup, 'parent'> {
+  parent: Ref<IExternalUserGroup> | null
+  externalID: string // identifier used in external app/server
+}
+
+export interface IExternalUserGroupRelation extends Omit<IUserGroupRelation, 'relatedGroup'> {
+  relatedGroup: Ref<IExternalUserGroup>
+}
+
 export interface LdapGroupSyncSettings {
   ldapGroupSearchBase: string
   ldapGroupMembershipAttribute: string

+ 19 - 0
apps/app/src/server/models/external-user-group-relation.ts

@@ -0,0 +1,19 @@
+import { Schema, Model, Document } from 'mongoose';
+
+import { IExternalUserGroupRelation } from '~/interfaces/external-user-group';
+
+import { getOrCreateModel } from '../util/mongoose-utils';
+
+
+export interface ExternalUserGroupRelationDocument extends IExternalUserGroupRelation, Document {}
+
+export type ExternalUserGroupRelationModel = Model<ExternalUserGroupRelationDocument>
+
+const schema = new Schema<ExternalUserGroupRelationDocument, ExternalUserGroupRelationModel>({
+  relatedGroup: { type: Schema.Types.ObjectId, ref: 'ExternalUserGroup', required: true },
+  relatedUser: { type: Schema.Types.ObjectId, ref: 'User', required: true },
+}, {
+  timestamps: { createdAt: true, updatedAt: false },
+});
+
+export default getOrCreateModel<ExternalUserGroupRelationDocument, ExternalUserGroupRelationModel>('ExternalUserGroupRelation', schema);

+ 21 - 0
apps/app/src/server/models/external-user-group.ts

@@ -0,0 +1,21 @@
+import { Schema, Model, Document } from 'mongoose';
+
+import { IExternalUserGroup } from '~/interfaces/external-user-group';
+
+import { getOrCreateModel } from '../util/mongoose-utils';
+
+
+export interface ExternalUserGroupDocument extends IExternalUserGroup, Document {}
+
+export type ExternalUserGroupModel = Model<ExternalUserGroupDocument>
+
+const schema = new Schema<ExternalUserGroupDocument, ExternalUserGroupModel>({
+  name: { type: String, required: true, unique: true },
+  parent: { type: Schema.Types.ObjectId, ref: 'ExternalUserGroup', index: true },
+  description: { type: String, default: '' },
+  externalID: { type: String, default: '' },
+}, {
+  timestamps: true,
+});
+
+export default getOrCreateModel<ExternalUserGroupDocument, ExternalUserGroupModel>('ExternalUserGroup', schema);