oak-general-business/es/checkers/parasite.js

59 lines
1.9 KiB
JavaScript

import { OakRowInconsistencyException } from 'oak-domain/lib/types';
import { assert } from 'oak-domain/lib/utils/assert';
import { checkAttributesNotNull } from 'oak-domain/lib/utils/validator';
const checkers = [
{
type: 'data',
action: 'create',
entity: 'parasite',
checker: (data, context) => {
// const { data } = operation as EntityDict['parasite']['Create'];
assert(!(data instanceof Array));
checkAttributesNotNull('parasite', data, ['expiresAt', 'tokenLifeLength']);
if (data.userId) {
const users2 = context.select('user', {
data: {
id: 1,
userState: 1,
},
filter: {
id: data.userId,
},
}, { dontCollect: true });
const checkUser = (users) => {
const [user] = users;
if (user.userState !== 'shadow') {
const e = new OakRowInconsistencyException();
e.addData('user', [user], context.getSchema());
throw e;
}
};
if (users2 instanceof Promise) {
return users2.then((u) => checkUser(u));
}
return checkUser(users2);
}
assert(data.user && data.user.action === 'create');
},
},
{
type: 'row',
entity: 'parasite',
action: ['cancel'],
errMsg: '您没有设置失效的权限',
filter: {
expired: false,
},
},
{
type: 'row',
entity: 'parasite',
action: ['qrcode'],
errMsg: '您没有查看二维码的权限',
filter: {
expired: false,
},
},
];
export default checkers;