interface IUserContext { user: User_user; } export function onlyAuth(context: IUserContext) { return Boolean(context.user); } export function onlyAdAgent({ user }: IUserContext) { if (user && user.roles) { return user.roles.includes(RolesNames.adAgent); } return false; } export function onlyManager({ user }: IUserContext) { if (user && user.roles) { return user.roles.includes(RolesNames.manager); } return false; } export function anyRole(roles: Array<(context: IUserContext) => boolean>) { return (context: IUserContext) => { return roles.some(role => role(context)); }; } export function allRoles(roles: Array<(context: IUserContext) => boolean>) { return (context: IUserContext) => { return roles.every(role => role(context)); }; } export function hasRole(role: string) { return ({ user }: IUserContext) => { if (user && user.roles) { return user.roles.includes(role); } return false; }; } export function exceptRoles(roles: Array<(context: IUserContext) => boolean>) { return (context: IUserContext) => { return roles.every(role => !role(context)); }; }