I am building a web app where on authentication the user is taken to a protected route, then user specific data is queried from a DB and displayed.
I am using withPageAuthRequired to secure the page. I want to access the user’s data inside the getServerSideProps function so that I can query relevant data.
My code
export const getServerSideProps = withPageAuthRequired({
async getServerSideProps(context) {
//Querying data from DB
// I want to be able to access the user's info here
const { db } = await connectToDatabase()
const data = await db.collection("users").find({}).project({ first_name: 1 }).toArray()
return {
props: { properties: data},
}
}
});
SDK: nextjs-auth0 v1.4.0
Node v16.0
NextJS v10.0
Previous message deleted due to SPAM reasons.
I have figure out how to get the user’s data in the new nextjs sdk
You need to import getSession
and pass that the context request, and it will return a user object.
// import getSession to access user data on the server
import { withPageAuthRequired, getSession } from '@auth0/nextjs-auth0'
export const getServerSideProps = withPageAuthRequired({
async getServerSideProps(context) {
// Getting user data from Auth0
const user = getSession(context.req).user
//returns an object like this one: {name: 'Bob', email: 'bob@email.com', email_verified: true}
//Querying data from DB
const { db } = await connectToDatabase()
const data = await db.collection("users").find({email: user.email}).project({ first_name: 1 }).toArray()
return {
props: { properties: data},
}
}
});
2 Likes
Glad to hear that and thanks for sharing it with the rest of community!