@loomcore/common 0.0.29 → 0.0.32
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.
- package/dist/models/index.d.ts +1 -1
- package/dist/models/index.js +1 -1
- package/dist/models/login-response.model.d.ts +2 -1
- package/dist/models/organization.model.d.ts +1 -0
- package/dist/models/organization.model.js +3 -0
- package/dist/models/user-context-authorization.model.d.ts +12 -0
- package/dist/models/user-context-authorization.model.js +8 -0
- package/dist/models/user-context.model.d.ts +9 -4
- package/dist/models/user-context.model.js +19 -18
- package/dist/models/user.model.d.ts +1 -8
- package/dist/models/user.model.js +1 -19
- package/package.json +1 -1
- package/dist/models/authorization.model.d.ts +0 -12
- package/dist/models/authorization.model.js +0 -8
package/dist/models/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './user.model.js';
|
|
2
|
-
export * from './authorization.model.js';
|
|
3
2
|
export * from './organization.model.js';
|
|
4
3
|
export * from './user-context.model.js';
|
|
4
|
+
export * from './user-context-authorization.model.js';
|
|
5
5
|
export * from './entity.model.js';
|
|
6
6
|
export * from './login-response.model.js';
|
|
7
7
|
export * from './token-response.model.js';
|
package/dist/models/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './user.model.js';
|
|
2
|
-
export * from './authorization.model.js';
|
|
3
2
|
export * from './organization.model.js';
|
|
4
3
|
export * from './user-context.model.js';
|
|
4
|
+
export * from './user-context-authorization.model.js';
|
|
5
5
|
export * from './entity.model.js';
|
|
6
6
|
export * from './login-response.model.js';
|
|
7
7
|
export * from './token-response.model.js';
|
|
@@ -12,7 +12,8 @@ export declare const LoginResponseSchema: import("@sinclair/typebox").TObject<{
|
|
|
12
12
|
}>;
|
|
13
13
|
userContext: import("@sinclair/typebox").TObject<{
|
|
14
14
|
user: import("@sinclair/typebox").TSchema;
|
|
15
|
-
|
|
15
|
+
authorizations: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TSchema>;
|
|
16
|
+
organization: import("@sinclair/typebox").TSchema;
|
|
16
17
|
}>;
|
|
17
18
|
}>;
|
|
18
19
|
export declare const LoginResponseSpec: import("./model-spec.interface.js").IModelSpec<import("@sinclair/typebox").TSchema>;
|
|
@@ -9,6 +9,7 @@ export interface IOrganization extends IAuditable {
|
|
|
9
9
|
authToken?: string;
|
|
10
10
|
}
|
|
11
11
|
export declare const OrganizationSchema: import("@sinclair/typebox").TObject<{
|
|
12
|
+
_id: import("@sinclair/typebox").TString;
|
|
12
13
|
name: import("@sinclair/typebox").TString;
|
|
13
14
|
code: import("@sinclair/typebox").TString;
|
|
14
15
|
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IEntity } from "./entity.model.js";
|
|
2
|
+
export interface IUserContextAuthorization extends IEntity {
|
|
3
|
+
role: string;
|
|
4
|
+
feature: string;
|
|
5
|
+
config?: any;
|
|
6
|
+
}
|
|
7
|
+
export declare const UserContextAuthorizationSchema: import("@sinclair/typebox").TObject<{
|
|
8
|
+
role: import("@sinclair/typebox").TString;
|
|
9
|
+
feature: import("@sinclair/typebox").TString;
|
|
10
|
+
config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const UserContextAuthorizationSpec: import("./model-spec.interface.js").IModelSpec<import("@sinclair/typebox").TSchema>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Type } from "@sinclair/typebox";
|
|
2
|
+
import { entityUtils } from "../utils/entity.utils.js";
|
|
3
|
+
export const UserContextAuthorizationSchema = Type.Object({
|
|
4
|
+
role: Type.String(),
|
|
5
|
+
feature: Type.String(),
|
|
6
|
+
config: Type.Optional(Type.Any())
|
|
7
|
+
});
|
|
8
|
+
export const UserContextAuthorizationSpec = entityUtils.getModelSpec(UserContextAuthorizationSchema);
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { IUser } from './user.model.js';
|
|
2
|
+
import { IOrganization } from './organization.model.js';
|
|
3
|
+
import { IUserContextAuthorization } from './user-context-authorization.model.js';
|
|
2
4
|
export interface IUserContext {
|
|
3
5
|
user: IUser;
|
|
4
|
-
|
|
6
|
+
authorizations: IUserContextAuthorization[];
|
|
7
|
+
organization?: IOrganization;
|
|
5
8
|
}
|
|
6
9
|
export declare const EmptyUserContext: IUserContext;
|
|
7
10
|
export declare const UserContextSchema: import("@sinclair/typebox").TObject<{
|
|
8
11
|
user: import("@sinclair/typebox").TSchema;
|
|
9
|
-
|
|
12
|
+
authorizations: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TSchema>;
|
|
13
|
+
organization: import("@sinclair/typebox").TSchema;
|
|
10
14
|
}>;
|
|
11
15
|
export declare const UserContextSpec: import("./model-spec.interface.js").IModelSpec<import("@sinclair/typebox").TSchema>;
|
|
12
16
|
export declare const PublicUserContextSchema: import("@sinclair/typebox").TObject<{
|
|
13
17
|
user: import("@sinclair/typebox").TSchema;
|
|
14
|
-
|
|
18
|
+
authorizations: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TSchema>;
|
|
19
|
+
organization: import("@sinclair/typebox").TSchema;
|
|
15
20
|
}>;
|
|
16
21
|
export declare const PublicUserContextSpec: import("./model-spec.interface.js").IModelSpec<import("@sinclair/typebox").TSchema>;
|
|
17
|
-
export declare function initializeSystemUserContext(systemEmail: string,
|
|
22
|
+
export declare function initializeSystemUserContext(systemEmail: string, metaOrg: IOrganization | undefined): IUserContext;
|
|
18
23
|
export declare function getSystemUserContext(): IUserContext;
|
|
19
24
|
export declare function isSystemUserContextInitialized(): boolean;
|
|
20
25
|
export declare function resetSystemUserContext(): void;
|
|
@@ -1,47 +1,48 @@
|
|
|
1
1
|
import { PublicUserSpec, UserSpec } from './user.model.js';
|
|
2
2
|
import { Type } from '@sinclair/typebox';
|
|
3
3
|
import { entityUtils } from '../utils/entity.utils.js';
|
|
4
|
+
import { OrganizationSpec } from './organization.model.js';
|
|
5
|
+
import { UserContextAuthorizationSpec } from './user-context-authorization.model.js';
|
|
4
6
|
export const EmptyUserContext = {
|
|
5
7
|
user: {},
|
|
6
|
-
|
|
8
|
+
authorizations: [],
|
|
9
|
+
organization: undefined
|
|
7
10
|
};
|
|
8
11
|
let _systemUserContext = null;
|
|
9
12
|
export const UserContextSchema = Type.Object({
|
|
10
13
|
user: UserSpec.fullSchema,
|
|
11
|
-
|
|
14
|
+
authorizations: Type.Array(UserContextAuthorizationSpec.fullSchema),
|
|
15
|
+
organization: OrganizationSpec.fullSchema
|
|
12
16
|
});
|
|
13
17
|
export const UserContextSpec = entityUtils.getModelSpec(UserContextSchema);
|
|
14
18
|
export const PublicUserContextSchema = Type.Object({
|
|
15
19
|
user: PublicUserSpec.fullSchema,
|
|
16
|
-
|
|
20
|
+
authorizations: Type.Array(UserContextAuthorizationSpec.fullSchema),
|
|
21
|
+
organization: OrganizationSpec.fullSchema
|
|
17
22
|
});
|
|
18
23
|
export const PublicUserContextSpec = entityUtils.getModelSpec(PublicUserContextSchema);
|
|
19
|
-
export function initializeSystemUserContext(systemEmail,
|
|
24
|
+
export function initializeSystemUserContext(systemEmail, metaOrg) {
|
|
20
25
|
_systemUserContext = {
|
|
21
26
|
user: {
|
|
22
27
|
_id: 'system',
|
|
23
|
-
_orgId:
|
|
28
|
+
_orgId: metaOrg?._id,
|
|
29
|
+
email: systemEmail,
|
|
24
30
|
firstName: 'System',
|
|
25
31
|
lastName: 'User',
|
|
26
32
|
displayName: 'System User',
|
|
27
|
-
|
|
28
|
-
password: '',
|
|
29
|
-
authorizations: [{
|
|
30
|
-
_id: 'system-authorization',
|
|
31
|
-
_orgId: metaOrgId,
|
|
32
|
-
role: 'system',
|
|
33
|
-
feature: 'system',
|
|
34
|
-
_created: new Date(),
|
|
35
|
-
_createdBy: 'system',
|
|
36
|
-
_updated: new Date(),
|
|
37
|
-
_updatedBy: 'system',
|
|
38
|
-
}],
|
|
33
|
+
password: 'systemPassword',
|
|
39
34
|
_created: new Date(),
|
|
40
35
|
_createdBy: 'system',
|
|
41
36
|
_updated: new Date(),
|
|
42
37
|
_updatedBy: 'system',
|
|
43
38
|
},
|
|
44
|
-
|
|
39
|
+
authorizations: [{
|
|
40
|
+
_id: 'system-authorization',
|
|
41
|
+
_orgId: metaOrg?._id,
|
|
42
|
+
role: 'system',
|
|
43
|
+
feature: 'system'
|
|
44
|
+
}],
|
|
45
|
+
organization: metaOrg
|
|
45
46
|
};
|
|
46
47
|
return _systemUserContext;
|
|
47
48
|
}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { IAuditable } from './auditable.model.js';
|
|
2
2
|
import { IEntity } from './entity.model.js';
|
|
3
|
-
|
|
4
|
-
export interface IUser extends IAuditable, IEntity {
|
|
3
|
+
export interface IUser extends IEntity, IAuditable {
|
|
5
4
|
email: string;
|
|
6
5
|
firstName?: string;
|
|
7
6
|
lastName?: string;
|
|
8
7
|
displayName?: string;
|
|
9
8
|
password: string;
|
|
10
|
-
authorizations?: IAuthorization[];
|
|
11
9
|
_lastLoggedIn?: Date;
|
|
12
10
|
_lastPasswordChange?: Date;
|
|
13
11
|
}
|
|
@@ -32,11 +30,6 @@ export declare const PublicUserSchema: import("@sinclair/typebox").TObject<{
|
|
|
32
30
|
firstName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
33
31
|
lastName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
34
32
|
displayName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
35
|
-
authorizations: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
36
|
-
role: import("@sinclair/typebox").TString;
|
|
37
|
-
feature: import("@sinclair/typebox").TString;
|
|
38
|
-
config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
|
|
39
|
-
}>>>;
|
|
40
33
|
_lastLoggedIn: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TString, Date>>;
|
|
41
34
|
_lastPasswordChange: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TString, Date>>;
|
|
42
35
|
}>;
|
|
@@ -2,7 +2,6 @@ import { TypeboxIsoDate } from '../validation/typebox-extensions.js';
|
|
|
2
2
|
import { Type } from '@sinclair/typebox';
|
|
3
3
|
import { entityUtils } from '../utils/entity.utils.js';
|
|
4
4
|
import { TypeCompiler } from '@sinclair/typebox/compiler';
|
|
5
|
-
import { AuthorizationSchema } from './authorization.model.js';
|
|
6
5
|
export const UserPasswordSchema = Type.Object({
|
|
7
6
|
password: Type.String({
|
|
8
7
|
title: 'Password',
|
|
@@ -30,22 +29,5 @@ export const UserSchema = Type.Object({
|
|
|
30
29
|
_lastPasswordChange: Type.Optional(TypeboxIsoDate({ title: 'Last Password Change Date' })),
|
|
31
30
|
});
|
|
32
31
|
export const UserSpec = entityUtils.getModelSpec(UserSchema, { isAuditable: true });
|
|
33
|
-
export const PublicUserSchema = Type.
|
|
34
|
-
email: Type.String({
|
|
35
|
-
title: 'Email',
|
|
36
|
-
format: 'email'
|
|
37
|
-
}),
|
|
38
|
-
firstName: Type.Optional(Type.String({
|
|
39
|
-
title: 'First Name'
|
|
40
|
-
})),
|
|
41
|
-
lastName: Type.Optional(Type.String({
|
|
42
|
-
title: 'Last Name'
|
|
43
|
-
})),
|
|
44
|
-
displayName: Type.Optional(Type.String({
|
|
45
|
-
title: 'Display Name'
|
|
46
|
-
})),
|
|
47
|
-
authorizations: Type.Optional(Type.Array(AuthorizationSchema)),
|
|
48
|
-
_lastLoggedIn: Type.Optional(TypeboxIsoDate({ title: 'Last Login Date' })),
|
|
49
|
-
_lastPasswordChange: Type.Optional(TypeboxIsoDate({ title: 'Last Password Change Date' })),
|
|
50
|
-
});
|
|
32
|
+
export const PublicUserSchema = Type.Omit(UserSchema, ['password']);
|
|
51
33
|
export const PublicUserSpec = entityUtils.getModelSpec(PublicUserSchema, { isAuditable: true });
|
package/package.json
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { IAuditable, IEntity } from "./index.js";
|
|
2
|
-
export interface IAuthorization extends IEntity, IAuditable {
|
|
3
|
-
role: string;
|
|
4
|
-
feature: string;
|
|
5
|
-
config?: any;
|
|
6
|
-
}
|
|
7
|
-
export declare const AuthorizationSchema: import("@sinclair/typebox").TObject<{
|
|
8
|
-
role: import("@sinclair/typebox").TString;
|
|
9
|
-
feature: import("@sinclair/typebox").TString;
|
|
10
|
-
config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
|
|
11
|
-
}>;
|
|
12
|
-
export declare const AuthorizationModelSpec: import("./model-spec.interface.js").IModelSpec<import("@sinclair/typebox").TSchema>;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Type } from "@sinclair/typebox";
|
|
2
|
-
import { entityUtils } from "../utils/index.js";
|
|
3
|
-
export const AuthorizationSchema = Type.Object({
|
|
4
|
-
role: Type.String({ minLength: 1 }),
|
|
5
|
-
feature: Type.String({ minLength: 1 }),
|
|
6
|
-
config: Type.Optional(Type.Any())
|
|
7
|
-
});
|
|
8
|
-
export const AuthorizationModelSpec = entityUtils.getModelSpec(AuthorizationSchema, { isAuditable: true });
|