Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import { IUserAggregate } from '@INTERFACE/user/domain';
const permissionLevel: { [key in IUserAggregate.Permission]: number } = {
Admin: 0,
Manager: 1,
Normal: 2,
};
export const UserAggregate: IUserAggregate = {
get(args) {
const now = new Date();
const {
username,
email,
role = 'Normal',
id,
created_at = now,
updated_at = now,
} = args;
return { id, created_at, updated_at, username, email, role };
},
getPublic(args) {
const { id, email, username, role } = args;
return { id, email, username, role };
},
setRole(agg, role) {
(agg as any).role = role;
return agg;
},
checkPermission({ user, target }) {
const ulevel = permissionLevel[user];
const tlevel = permissionLevel[target];
return ulevel <= tlevel;
},
};
|