将getUserIdsByActions移到了domain中
This commit is contained in:
parent
a271f43d21
commit
6f3e01bffa
|
|
@ -102,3 +102,14 @@ export declare class RelationAuth<ED extends EntityDict & BaseEntityDict> {
|
||||||
*/
|
*/
|
||||||
private checkActions2;
|
private checkActions2;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 获取有对entity进行actions操作权限的用户Id(不包含root)
|
||||||
|
* @param params
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
|
export declare function getUserIdsByActions<ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>>(params: {
|
||||||
|
entity: T;
|
||||||
|
entityId: string;
|
||||||
|
actions: ED[T]['Action'][];
|
||||||
|
overlap?: boolean;
|
||||||
|
}, context: Cxt): Promise<string[]>;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.RelationAuth = void 0;
|
exports.getUserIdsByActions = exports.RelationAuth = void 0;
|
||||||
var tslib_1 = require("tslib");
|
var tslib_1 = require("tslib");
|
||||||
var assert_1 = tslib_1.__importDefault(require("assert"));
|
var assert_1 = tslib_1.__importDefault(require("assert"));
|
||||||
var types_1 = require("../types");
|
var types_1 = require("../types");
|
||||||
|
|
@ -2059,3 +2059,62 @@ var RelationAuth = /** @class */ (function () {
|
||||||
return RelationAuth;
|
return RelationAuth;
|
||||||
}());
|
}());
|
||||||
exports.RelationAuth = RelationAuth;
|
exports.RelationAuth = RelationAuth;
|
||||||
|
;
|
||||||
|
/**
|
||||||
|
* 获取有对entity进行actions操作权限的用户Id(不包含root)
|
||||||
|
* @param params
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
|
function getUserIdsByActions(params, context) {
|
||||||
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
||||||
|
var entity, entityId, actions, overlap, filter, actionAuths, userRelations;
|
||||||
|
return tslib_1.__generator(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0:
|
||||||
|
entity = params.entity, entityId = params.entityId, actions = params.actions, overlap = params.overlap;
|
||||||
|
filter = {
|
||||||
|
destEntity: entity,
|
||||||
|
relation: {
|
||||||
|
entity: entity,
|
||||||
|
entityId: entityId,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
if (overlap) {
|
||||||
|
Object.assign(filter, {
|
||||||
|
deActions: {
|
||||||
|
$overlaps: actions,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Object.assign(filter, {
|
||||||
|
deActions: {
|
||||||
|
$contains: actions,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return [4 /*yield*/, context.select('actionAuth', {
|
||||||
|
data: {
|
||||||
|
id: 1,
|
||||||
|
relation: {
|
||||||
|
id: 1,
|
||||||
|
userRelation$relation: {
|
||||||
|
$entity: 'userRelation',
|
||||||
|
data: {
|
||||||
|
id: 1,
|
||||||
|
userId: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filter: filter,
|
||||||
|
}, { dontCollect: true })];
|
||||||
|
case 1:
|
||||||
|
actionAuths = _a.sent();
|
||||||
|
userRelations = actionAuths.map(function (ele) { return ele.relation.userRelation$relation; });
|
||||||
|
return [2 /*return*/, (0, lodash_1.uniq)(Array.prototype.concat.apply([], userRelations).map(function (ele) { return ele.userId; }))];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
exports.getUserIdsByActions = getUserIdsByActions;
|
||||||
|
|
|
||||||
|
|
@ -2493,4 +2493,58 @@ export class RelationAuth<ED extends EntityDict & BaseEntityDict>{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取有对entity进行actions操作权限的用户Id(不包含root)
|
||||||
|
* @param params
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
|
export async function getUserIdsByActions<ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>>(params: {
|
||||||
|
entity: T;
|
||||||
|
entityId: string;
|
||||||
|
actions: ED[T]['Action'][];
|
||||||
|
overlap?: boolean;
|
||||||
|
}, context: Cxt) {
|
||||||
|
const { entity, entityId, actions, overlap } = params;
|
||||||
|
const filter = {
|
||||||
|
destEntity: entity as string,
|
||||||
|
relation: {
|
||||||
|
entity: entity as string,
|
||||||
|
entityId,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
if (overlap) {
|
||||||
|
Object.assign(filter, {
|
||||||
|
deActions: {
|
||||||
|
$overlaps: actions,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Object.assign(filter, {
|
||||||
|
deActions: {
|
||||||
|
$contains: actions,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const actionAuths = await context.select('actionAuth', {
|
||||||
|
data: {
|
||||||
|
id: 1,
|
||||||
|
relation: {
|
||||||
|
id: 1,
|
||||||
|
userRelation$relation: {
|
||||||
|
$entity: 'userRelation',
|
||||||
|
data: {
|
||||||
|
id: 1,
|
||||||
|
userId: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filter,
|
||||||
|
}, { dontCollect: true });
|
||||||
|
|
||||||
|
const userRelations = actionAuths.map(ele => ele.relation!.userRelation$relation!);
|
||||||
|
return uniq(Array.prototype.concat.apply([], userRelations).map(ele => ele.userId)) as string[];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue