增加了user变成root的触发器

This commit is contained in:
Xu Chang 2022-05-01 16:48:30 +08:00
parent ac7797ecce
commit 8191cdf5b3
13 changed files with 133 additions and 17 deletions

View File

@ -72,7 +72,7 @@ async function loginWechatMp({ code, env }, context) {
entityId: wechatUser2.id,
},
}, context);
if (token && (0, lodash_1.eq)(token.env, env)) {
if (token && (0, lodash_1.isEqual)(token.env, env)) {
await rowStore.operate('token', {
action: 'update',
data: {

1
lib/data/index.d.ts vendored
View File

@ -1,5 +1,4 @@
declare const _default: {
userRole: import("oak-app-domain/UserRole/Schema").CreateOperationData[];
user: import("oak-app-domain/User/Schema").CreateOperationData[];
role: import("oak-app-domain/Role/Schema").CreateOperationData[];
area: ({

View File

@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
const userRole_1 = require("./userRole");
const area_1 = require("./area");
exports.default = {
userRole: userRole_1.userRoles,
user: userRole_1.users,
role: userRole_1.roles,
area: area_1.area,

View File

@ -1,6 +1,4 @@
import { CreateOperationData as UserCreate } from 'oak-app-domain/User/Schema';
import { CreateOperationData as RoleCreate } from 'oak-app-domain/Role/Schema';
import { CreateOperationData as UserRoleCreate } from 'oak-app-domain/UserRole/Schema';
export declare const users: Array<UserCreate>;
export declare const roles: Array<RoleCreate>;
export declare const userRoles: Array<UserRoleCreate>;

View File

@ -1,6 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.userRoles = exports.roles = exports.users = void 0;
exports.roles = exports.users = void 0;
const constants_1 = require("../constants");
exports.users = [
{
@ -15,11 +15,12 @@ exports.roles = [
id: constants_1.ROOT_ROLE_ID,
}
];
exports.userRoles = [
// 由触发器默认创建
/* export const userRoles: Array<UserRoleCreate> = [
{
userId: constants_1.ROOT_USER_ID,
roleId: constants_1.ROOT_ROLE_ID,
userId: ROOT_USER_ID,
roleId: ROOT_ROLE_ID,
relation: 'owner',
id: 'root_user_role',
}
];
]; */

View File

@ -1,4 +1,4 @@
import { EntityDict as BaseEntityDict } from 'oak-app-domain/EntityDict';
import { Trigger } from 'oak-domain/lib/types';
declare const _default: Trigger<BaseEntityDict, "address", import("..").GeneralRuntimeContext<BaseEntityDict>>[];
declare const _default: (Trigger<BaseEntityDict, "address", import("..").GeneralRuntimeContext<BaseEntityDict>> | Trigger<BaseEntityDict, "user", import("..").GeneralRuntimeContext<BaseEntityDict>>)[];
export default _default;

View File

@ -4,4 +4,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
const address_1 = __importDefault(require("./address"));
exports.default = [...address_1.default];
const user_1 = __importDefault(require("./user"));
exports.default = [...address_1.default, ...user_1.default];

5
lib/triggers/user.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
import { Trigger } from 'oak-domain/lib/types/Trigger';
import { EntityDict } from 'oak-app-domain/EntityDict';
import { GeneralRuntimeContext } from '../RuntimeContext';
declare const triggers: Trigger<EntityDict, 'user', GeneralRuntimeContext<EntityDict>>[];
export default triggers;

53
lib/triggers/user.js Normal file
View File

@ -0,0 +1,53 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../constants");
let NO_ANY_USER = true;
const triggers = [
{
name: '系统生成的第一个用户默认注册为root',
entity: 'user',
action: 'create',
when: 'before',
fn: async ({ operation }, context) => {
if (NO_ANY_USER) {
const { rowStore } = context;
const { result } = await rowStore.select('user', {
data: {
id: 1,
},
filter: {
id: {
$ne: constants_1.ROOT_USER_ID,
},
},
indexFrom: 0,
count: 1,
}, context);
if (result.length === 0) {
const { data } = operation;
const userData = data instanceof Array ? data[0] : data;
const userRoleData = {
id: await generateNewId(),
userId: userData.id,
roleId: constants_1.ROOT_ROLE_ID,
relation: 'owner',
};
Object.assign(userData, {
userRole$user: [
{
action: 'create',
data: userRoleData,
}
]
});
return 1;
}
else {
NO_ANY_USER = false;
}
}
return 0;
}
}
];
exports.default = triggers;

View File

@ -1,8 +1,7 @@
import { userRoles, users, roles } from './userRole';
import { users, roles } from './userRole';
import { area } from './area';
export default {
userRole: userRoles,
user: users,
role: roles,
area,

View File

@ -17,11 +17,12 @@ export const roles: Array<RoleCreate> = [
}
];
export const userRoles: Array<UserRoleCreate> = [
// 由触发器默认创建
/* export const userRoles: Array<UserRoleCreate> = [
{
userId: ROOT_USER_ID,
roleId: ROOT_ROLE_ID,
relation: 'owner',
id: 'root_user_role',
}
];
]; */

View File

@ -2,5 +2,6 @@ import { EntityDict } from 'oak-domain/lib/types/Entity';
import { EntityDict as BaseEntityDict } from 'oak-app-domain/EntityDict';
import { Trigger } from 'oak-domain/lib/types';
import addressTriggers from './address';
import userTriggers from './user';
export default [...addressTriggers];
export default [...addressTriggers, ...userTriggers];

59
src/triggers/user.ts Normal file
View File

@ -0,0 +1,59 @@
import { CreateTriggerInTxn, Trigger } from 'oak-domain/lib/types/Trigger';
import { EntityDict } from 'oak-app-domain/EntityDict';
import { GeneralRuntimeContext } from '../RuntimeContext';
import { CreateOperationData as UserRole } from 'oak-app-domain/UserRole/Schema';
import assert from 'assert';
import { ROOT_ROLE_ID, ROOT_USER_ID } from '../constants';
import { DeduceCreateOperationData } from 'oak-domain/lib/types';
let NO_ANY_USER = true;
const triggers: Trigger<EntityDict, 'user', GeneralRuntimeContext<EntityDict>>[] = [
{
name: '系统生成的第一个用户默认注册为root',
entity: 'user',
action: 'create',
when: 'before',
fn: async ({ operation }, context) => {
if (NO_ANY_USER) {
const { rowStore } = context;
const { result } = await rowStore.select('user', {
data: {
id: 1,
},
filter: {
id: {
$ne: ROOT_USER_ID,
},
},
indexFrom: 0,
count: 1,
}, context);
if (result.length === 0) {
const { data } = operation;
const userData = data instanceof Array ? data[0] : data;
const userRoleData: UserRole = {
id: await generateNewId(),
userId: userData.id,
roleId: ROOT_ROLE_ID,
relation: 'owner',
};
Object.assign(userData, {
userRole$user: [
{
action: 'create',
data: userRoleData,
}
]
});
return 1;
}
else {
NO_ANY_USER = false;
}
}
return 0;
}
}
];
export default triggers;