Session Management
A valid session is opened during the Authentication process.
Sequence Auth and Embedded Wallet handles the following aspects of your application:
- Check Valid Session: Manage blockchain accounts to sign up or sign in users.
- Control Session Validation: Authentication sessions to return important details to be consumed by your application to enhance the experience of games and applications.
- Close Session: Manage the listing and dropping of sessions handled by the WaaS stack.
Validation status
To check the validation status of the current session, use the isSessionValid
method. This returns true
for email login and trusted social logins and false
for custom logins until email validation is complete.
const isValid = await sequence.isSessionValid();
console.log(isValid);
true
Trigger session validation
Manually trigger a session validation with the validateSession
method. This will send a code to the user's email. If validated within 10 minutes, the method returns true
; otherwise, it returns false
.
const result = await sequence.validateSession();
true
Once user receives the code, he can validate the session with the finishValidateSession
method that takes the code as an argument. If the code is valid, the method returns true
; otherwise, it returns false
.
const result = await sequence.finishValidateSession("123456");
true
Control Session Validation
The onValidationRequired
callback is used to determine the need for session validation during actions like sending transactions or signing messages. If the callback returns true
, it triggers session validation. If it returns false
, the related action is cancelled. This mechanism ensures that only validated sessions can proceed with sensitive operations.
const tx = await sequence.sendERC20({
validation: {
onValidationRequired: () => true,
},
chainId: 42161,
token: "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI
to: "0x27CabC9700EE6Db2797b6AC1e1eCe81C72A2cD8D", // Recipient
value: "200000000000000000000", // 200 DAI
});
Listen for session validations
Events like transaction sends may silently prompt session validation. Use the onValidationRequired
hook to catch such instances.
sequence.onValidationRequired(() => {
console.log("Session has been triggered for validation");
});
await sequence.sendTransaction({ chainId: 1 }, { to: "0x...", value: "1" });
Session has been triggered for validation
Manage Automatic session validation
Automatic session validation occurs during actions that require validation. Manage this process using the onValidationRequired hook.
const tx = await sequence.sendTransaction({
chainId: 1,
validation: {
onValidationRequired: () => {
console.log("Session has been triggered for validation");
return true;
},
},
to: "0x061150e5574716DBb1a2cdf54b3DcE9F94395f65",
value: "1",
});
By returning true
or false
from the onValidationRequired
hook, you either continue or cancel the action, respectively.
Close Session
A session can be closed using the id
of the session. Any session can be closed from any device with an active session.
import { SequenceWaaS } from '@0xsequence/waas'
const sequence = new SequenceWaaS({
projectAccessKey: `${process.env.VITE_PROJECT_ACCESS_KEY}`,
waasConfigKey: `${process.env.VITE_WAAS_CONFIG_KEY}`,
network: 'arbitrum-nova'
})
await sequence.signIn({ idToken }, "MacBook Pro - Chrome")
const sessions = await sequence.listSessions()
await sequence.dropSession({ sessionId: sessions[0].id })