@pulzar/core
Version:
Next-generation Node.js framework for ultra-fast web applications with zero-reflection DI, GraphQL, WebSockets, events, and edge runtime support
78 lines • 2.91 kB
JavaScript
/**
* Build auth context with role and permission helpers
*/
export function buildAuthContext(input) {
const { user, token, session, payload, isAuthenticated } = input;
return {
user,
token,
session,
isAuthenticated,
hasRole: (role) => {
if (payload?.roles) {
return payload.roles.includes(role);
}
if (session?.data.roles && Array.isArray(session.data.roles)) {
return session.data.roles.includes(role);
}
return user.roles.includes(role);
},
hasPermission: (permission) => {
if (payload?.permissions) {
return payload.permissions.includes(permission);
}
if (session?.data.permissions &&
Array.isArray(session.data.permissions)) {
return session.data.permissions.includes(permission);
}
return user.permissions.includes(permission);
},
hasAnyRole: (roles) => {
return roles.some((role) => {
if (payload?.roles) {
return payload.roles.includes(role);
}
if (session?.data.roles && Array.isArray(session.data.roles)) {
return session.data.roles.includes(role);
}
return user.roles.includes(role);
});
},
hasAllRoles: (roles) => {
return roles.every((role) => {
if (payload?.roles) {
return payload.roles.includes(role);
}
if (session?.data.roles && Array.isArray(session.data.roles)) {
return session.data.roles.includes(role);
}
return user.roles.includes(role);
});
},
hasAnyPermission: (permissions) => {
return permissions.some((perm) => {
if (payload?.permissions) {
return payload.permissions.includes(perm);
}
if (session?.data.permissions &&
Array.isArray(session.data.permissions)) {
return session.data.permissions.includes(perm);
}
return user.permissions.includes(perm);
});
},
hasAllPermissions: (permissions) => {
return permissions.every((perm) => {
if (payload?.permissions) {
return payload.permissions.includes(perm);
}
if (session?.data.permissions &&
Array.isArray(session.data.permissions)) {
return session.data.permissions.includes(perm);
}
return user.permissions.includes(perm);
});
},
};
}
//# sourceMappingURL=auth-context.js.map