Oskar
06/13/2022, 4:46 PMrp
06/13/2022, 5:05 PMOskar
06/13/2022, 5:07 PMrp
06/13/2022, 5:08 PMOskar
06/13/2022, 5:10 PMrp
06/13/2022, 5:10 PMOskar
06/13/2022, 5:11 PMrp
06/13/2022, 5:12 PMOskar
06/13/2022, 5:19 PMrp
06/13/2022, 5:19 PMOskar
06/13/2022, 5:19 PMrp
06/13/2022, 5:27 PMts
ThirdPartyEmailPassword.init({
override: {
apis: (oI) => {
return {
...oI,
emailPasswordSignInPOST: (input) => {
// we can access req later on in the API
input.userContext.req = input.options.req;
return oI.emailPasswordSignInPOST!(input);
},
emailPasswordSignUpPOST: (input) => {
// we can access req later on in the API
input.userContext.req = input.options.req;
return oI.emailPasswordSignUpPOST!(input);
},
thirdPartySignInUpPOST: (input) => {
// we can access req later on in the API
input.userContext.req = input.options.req;
input.options.req.getHeaderValue('User-Agent');
return oI.thirdPartySignInUpPOST!(input);
},
}
}
}
})
Session.init({
override: {
functions: (oI) => {
return {
...oI,
createNewSession: async function (input) {
// same req as what's available in the sign in / sign up APIs
let req = input.userContext.req;
let userAgent = req.getHeaderValue('User-Agent');
if (userAgent !== undefined) {
// this saves the user-agent info in the session
// so that it can be fetched later on when displaying the user's
// device list
input.sessionData = {
...input.sessionData,
userAgent
}
}
return oI.createNewSession(input);
}
}
}
}
})
In the recipeList in supertokens.initts
async function getDevicesForAUser(userId: string) {
let sessions = await Session.getAllSessionHandlesForUser(userId);
return sessions.map(async sessionHandle => {
let sessionInfo = await Session.getSessionInformation(sessionHandle);
let sessionData = sessionInfo.sessionData;
let userAgent = sessionData.userAgent;
return {
sessionHandle,
userAgent
}
})
}
Oskar
06/13/2022, 8:26 PMrp
06/14/2022, 4:06 AM