keystone-6-oauth
Version:
Keystone6 Plugin that enables social logins such as Google, Twitter, Github, Facebook and others.
36 lines (33 loc) • 893 B
text/typescript
import type { BaseItem } from '@keystone-6/core/types';
import { graphql } from '@keystone-6/core';
export function getBaseAuthSchema({
listKey,
base,
}: {
listKey: string;
base: graphql.BaseSchemaMeta;
}) {
const extension = {
query: {
authenticatedItem: graphql.field({
type: graphql.union({
name: 'AuthenticatedItem',
types: [base.object(listKey) as graphql.ObjectType<BaseItem>],
resolveType: (root, context) => context.session?.listKey,
}),
resolve(root, args, { session, db }) {
if (
typeof session?.itemId === 'string' &&
typeof session.listKey === 'string'
) {
return db[session.listKey].findOne({
where: { id: session.itemId },
});
}
return null;
},
}),
},
};
return { extension };
}