Skip to content

Instantly share code, notes, and snippets.

@chrisoverstreet
Last active March 4, 2025 19:22
Show Gist options
  • Save chrisoverstreet/5ab48af22d60340a9ed84a5efae503da to your computer and use it in GitHub Desktop.
Save chrisoverstreet/5ab48af22d60340a9ed84a5efae503da to your computer and use it in GitHub Desktop.
import { AppSyncResolverEvent } from 'aws-lambda';
import { Handler } from 'sst/context/handler.js';
import { useCookie, useCookies, useHeaders } from 'sst/node/api';
import { initUser } from '@/functions/graphql/graphql';
import { logger } from '@/lib/logger';
export const RealTimeHandler = <T, K>(cb: (e: AppSyncResolverEvent<T> & K) => Promise<unknown> | unknown) => {
// @ts-expect-error - AppSync is not a valid Handler type in our version of sst.
return Handler('appSync', cb);
};
export const useSession = async () => {
const headers = useHeaders();
let cookieToken: string | undefined;
try {
cookieToken = useCookie('auth-token');
} catch (e) {
console.error(e);
}
const clerkToken = headers['x-clerk-auth-token'];
const authToken = headers['authorization']?.split(' ')[1];
const token = cookieToken || clerkToken || authToken;
if (token) {
try {
const user = await initUser(token);
return { User: user };
} catch (e) {
logger.error({ error: e }, '[useSession] Error verifying token');
}
}
return { User: undefined };
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment