@auth/core
Version:
Authentication for the Web.
30 lines (29 loc) • 919 B
JavaScript
/**
* Returns the currently logged in user, if any.
*/
export async function getLoggedInUser(options, sessionStore) {
const { adapter, jwt, session: { strategy: sessionStrategy }, } = options;
const sessionToken = sessionStore.value;
if (!sessionToken)
return null;
// Try to decode JWT
if (sessionStrategy === "jwt") {
const salt = options.cookies.sessionToken.name;
const payload = await jwt.decode({ ...jwt, token: sessionToken, salt });
if (payload && payload.sub) {
return {
id: payload.sub,
name: payload.name,
email: payload.email,
image: payload.picture,
};
}
}
else {
const userAndSession = await adapter?.getSessionAndUser(sessionToken);
if (userAndSession) {
return userAndSession.user;
}
}
return null;
}