This GraphQL server checks if the user is logged in by looking for a valid token in the request headers. If the token is missing or invalid, it throws an authentication error when trying to get the secret message.
const { ApolloServer, gql, AuthenticationError } = require('apollo-server');
const typeDefs = gql`
type Query {
secretMessage: String
}
`;
const resolvers = {
Query: {
secretMessage(parent, args, context) {
if (!context.user) {
throw new AuthenticationError('You must be logged in to see this message');
}
return 'This is a secret message';
}
}
};
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => {
// Simulate user authentication
const token = req.headers.authorization || '';
if (token === 'valid-token') {
return { user: { id: 1, name: 'Alice' } };
}
return {};
}
});
server.listen().then(({ url }) => {
console.log(`Server ready at ${url}`);
});