BRBT
10/25/2022, 7:27 AMjs
import { useEffect } from 'react';
import Link from 'next/link'
import { EmailPasswordAuth } from 'supertokens-auth-react/recipe/emailpassword';
import Session from 'supertokens-auth-react/recipe/session';
import EmailPassword from "supertokens-node/recipe/emailpassword";
import supertokens from 'supertokens-node'
import { backendConfig } from '../config/backendConfig'
supertokens.init(backendConfig())
export default function Navbar() {
useEffect( () => {
Session.getUserId().then(userID =>
EmailPassword.getUserById(userID).then( user =>
console.log(user.email)
)
)
}, [])
rp
10/25/2022, 7:28 AMEmailPassword.getUserById
function is from the backend SDK. So you might wanna create an API that does session verification first and gets the user ID from there, and then calls this function.
Then from the frontend, you simply call this API to get the emailBRBT
10/25/2022, 7:38 AMjs
import EmailPassword from "supertokens-node/recipe/emailpassword";
import { superTokensNextWrapper } from 'supertokens-node/nextjs'
import { verifySession } from "supertokens-node/recipe/session/framework/express";
import { SessionRequest } from "supertokens-node/framework/express";
export default async function likeComment(req: SessionRequest, res: any) {
await superTokensNextWrapper(
async (next) => {
await verifySession()(req, res, next);
},
req,
res
)
let userId = req.session!.getUserId();
// You can learn more about the `User` object over here https://github.com/supertokens/core-driver-interface/wiki
let userInfo = await EmailPassword.getUserById(userId);
//....
}
But i don't understand what is the function of SessionRequest and how i can use itrp
10/25/2022, 7:38 AMreq.session
BRBT
10/25/2022, 7:40 AMrp
10/25/2022, 7:43 AMBRBT
10/25/2022, 7:48 AMjs
import EmailPassword from "supertokens-node/recipe/emailpassword";
import { superTokensNextWrapper } from 'supertokens-node/nextjs'
import { verifySession } from "supertokens-node/recipe/session/framework/express";
import { SessionRequest } from "supertokens-node/framework/express";
export default async function getEmail(req, res) {
await superTokensNextWrapper(
async (next) => {
await verifySession()(req, res, next);
},
req,
res
)
let userId = req.session!.getUserId();
let userInfo = await EmailPassword.getUserById(userId);
return userInfo
}
rp
10/25/2022, 7:49 AMBRBT
10/25/2022, 7:50 AMrp
10/25/2022, 7:50 AMaccessTokenPayload
to contain the user's email or whatever else you wantBRBT
10/25/2022, 7:53 AMrp
10/25/2022, 7:53 AMBRBT
10/25/2022, 7:56 AMrp
10/25/2022, 7:56 AMBRBT
10/25/2022, 7:57 AMrp
10/25/2022, 8:13 AMgetEmail
functionBRBT
10/25/2022, 8:21 AMimport supertokens from 'supertokens-node'
js
import EmailPassword from "supertokens-node/recipe/emailpassword";
import { superTokensNextWrapper } from 'supertokens-node/nextjs'
import { verifySession } from "supertokens-node/recipe/session/framework/express";
import { SessionRequest } from "supertokens-node/framework/express";
import supertokens from 'supertokens-node'
import { backendConfig } from '../../config/backendConfig'
supertokens.init(backendConfig())
export default async function getEmail(req, res) {
await superTokensNextWrapper(
async (next) => {
await verifySession()(req, res, next);
},
req,
res
)
let userId = req.session.getUserId();
// You can learn more about the `User` object over here https://github.com/supertokens/core-driver-interface/wiki
let userInfo = await EmailPassword.getUserById(userId);
return userInfo
}
rp
10/25/2022, 8:22 AMbackendConfig()
?BRBT
10/25/2022, 8:23 AMjs
import EmailPasswordNode from 'supertokens-node/recipe/emailpassword'
import SessionNode from 'supertokens-node/recipe/session'
import { appInfo } from './appInfo'
import { TypeInput } from "supertokens-node/types";
export const backendConfig = () => {
return {
framework: "express",
supertokens: {
// https://try.supertokens.com is for demo purposes. Replace this with the address of your core instance (sign up on supertokens.com), or self host a core.
connectionURI: "http://localhost:3567",
// apiKey: "IF YOU HAVE AN API KEY FOR THE CORE, ADD IT HERE",
},
appInfo,
recipeList: [
EmailPasswordNode.init(),
SessionNode.init(),
],
isInServerlessEnv: true,
}
}
rp
10/25/2022, 8:27 AMBRBT
10/25/2022, 8:27 AMjs
export const appInfo = {
appName: "Supertokens demo",
apiDomain: "http://localhost:3000",
websiteDomain: "http://localhost:3000",
apiBasePath: "/api/auth",
websiteBasePath: "/auth",
}
rp
10/25/2022, 8:27 AMBRBT
10/25/2022, 8:29 AMUnhandled Runtime Error
Error: Please provide a valid URL path
Source
normaliseURLPathOrThrowError
node_modules/supertokens-node/lib/build/normalisedURLPath.js (72:0)
new NormalisedURLPath
node_modules/supertokens-node/lib/build/normalisedURLPath.js (35:0)
Object.normaliseInputAppInfoOrThrowError
node_modules/supertokens-node/lib/build/utils.js (54:0)
new SuperTokens
node_modules/supertokens-node/lib/build/supertokens.js (341:0)
SuperTokensWrapper.init
node_modules/supertokens-node/lib/build/supertokens.js (384:0)
Call Stack
./pages/api/getEmail.js
file:///home/brbt/Projects/nextjs-supertokens/supertokens-demo/.next/static/chunks/pages/_app.js (1388:1)
options.factory
/_next/static/chunks/webpack.js (661:31)
__webpack_require__
file:///home/brbt/Projects/nextjs-supertokens/supertokens-demo/.next/static/chunks/webpack.js (37:33)
fn
/_next/static/chunks/webpack.js (316:21)
eval
webpack-internal:///./components/Navbar.js (20:77)
./components/Navbar.js
file:///home/brbt/Projects/nextjs-supertokens/supertokens-demo/.next/static/chunks/pages/_app.js (1289:1)
options.factory
/_next/static/chunks/webpack.js (661:31)
__webpack_require__
file:///home/brbt/Projects/nextjs-supertokens/supertokens-demo/.next/static/chunks/webpack.js (37:33)
fn
/_next/static/chunks/webpack.js (316:21)
eval
webpack-internal:///./pages/_app.js (13:76)
./pages/_app.js
file:///home/brbt/Projects/nextjs-supertokens/supertokens-demo/.next/static/chunks/pages/_app.js (1377:1)
options.factory
/_next/static/chunks/webpack.js (661:31)
__webpack_require__
file:///home/brbt/Projects/nextjs-supertokens/supertokens-demo/.next/static/chunks/webpack.js (37:33)
fn
/_next/static/chunks/webpack.js (316:21)
eval
node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=private-next-pages%2F_app&page=%2F_app! (5:15)
eval
node_modules/next/dist/client/route-loader.js (211:50)
rp
10/25/2022, 8:32 AMBRBT
10/25/2022, 8:33 AMrp
10/25/2022, 8:33 AMBRBT
10/25/2022, 8:33 AMrp
10/25/2022, 8:34 AMBRBT
10/25/2022, 8:34 AMrp
10/25/2022, 8:34 AMnvm
for that - or google itBRBT
10/25/2022, 8:36 AMrp
10/25/2022, 8:37 AMBRBT
10/25/2022, 8:42 AMbash
[brbt@legion ~]$ nvm use 16.0.0
Now using node v16.0.0 (npm v7.10.0)
[brbt@legion ~]$ node
Welcome to Node.js v16.0.0.
rp
10/25/2022, 8:44 AMBRBT
10/25/2022, 8:45 AMrp
10/25/2022, 8:45 AMBRBT
10/25/2022, 8:47 AMrp
10/25/2022, 8:48 AMgetEmail
in Navbar.js which is causing the backend supertokens.init to run on the frontend.BRBT
10/25/2022, 10:39 AMrp
10/25/2022, 11:14 AM