Search.../

applySessionToken( )

Logs the current member into the site using the given session token.

Description

The applySessionToken() function returns a Promise that resolves when the given session token is applied and the current member is logged into the site.

You receive a session token from the following wix-members-backend functions:

Pass the returned session token to your page code and apply it by calling applySessionToken() to complete the process started by one of the above functions.

Syntax

function applySessionToken(sessionToken: string): Promise<void>

applySessionToken Parameters

NAME
TYPE
DESCRIPTION
sessionToken
string

Session token to apply.

Returns

Fulfilled - When the token is applied.

Return Type:

Promise<void>

Was this helpful?

Log in a member by applying a session token

Copy Code
1import { authentication } from 'wix-members-frontend';
2
3// ...
4
5authentication.applySessionToken(sessionToken)
6 .then(() => {
7 console.log('Member logged in.');
8 });
Register a member using a 3rd party for approval

This example demonstrates a common 3rd-party approval flow. The backend code calls a 3rd-party service that determines whether the member is approved. If approved, the register() function is called from backend code, the registration is approved, and a session token is returned to the calling page code. If rejected, the blockByEmail() function is called.

Copy Code
1/*******************************
2 * Backend code - register.web.js *
3 *******************************/
4import { Permissions, webMethod } from 'wix-web-module';
5import { authentication } from 'wix-members-backend';
6import { approveBy3rdParty } from 'backend/some-backend-module';
7
8export const doRegistration = webMethod(Permissions.Anyone, async (email, password, firstName, lastName) => {
9
10 // Call a 3rd-party API to check if the member is approved.
11 const isApproved = await approveBy3rdParty(email, password);
12
13 // If member is approved by 3rd party, register and approve with the Wix site
14 if (isApproved === true) {
15 const options = {
16 contactInfo: {
17 firstName: firstName,
18 lastName: lastName
19 }
20 };
21
22 // Register the member
23 const registration = await authentication.register(email, password, options);
24 const approvalToken = registration.approvalToken;
25 console.log('Member is now registered with the site and pending approval');
26
27 // Approve the member and get session token, to be used to log in the member client-side
28 const sessionToken = await authentication.approveByToken(approvalToken);
29 console.log('Member is now approved, but not logged in');
30
31 return {
32 approved: true,
33 sessionToken: sessionToken
34 };
35
36 } else {
37 // If not approved by the 3rd party
38
39 await authentication.blockByEmail(email);
40 console.log('Member not approved by 3rd-party SSO. Blocking from Wix site.');
41
42 return { approved: false };
43 }
44});
45
46
47/*************
48 * Page code *
49 *************/
50import { authentication } from 'wix-members-frontend';
51import { doRegistration } from 'backend/register.web';
52
53// ...
54
55$w('#register').onClick(() => {
56
57 const email = $w('#email').value;
58 const password = $w('#password').value;
59 const firstName = $w('#firstName').value;
60 const lastName = $w('#lastName').value;
61
62 doRegistration(email, password, firstName, lastName)
63 .then((result) => {
64 if (result.approved) {
65 // Log the member in
66 console.log('Logging in...');
67 authentication.applySessionToken(result.sessionToken);
68 } else {
69 console.log('Not approved!');
70 }
71 });
72});
73
Log a member in after 3rd-party authentication

This example contains a backend function that uses a 3rd-party service to authenticate a member. If the authentication is successful, a session token is returned to the page and used to log the member in.

Copy Code
1/****************************
2 * Backend code - login.web.js *
3 ***************************/
4
5import { Permissions, webMethod } from 'wix-web-module';
6import { authentication } from 'wix-members-backend';
7import { authBy3rdParty } from 'backend/authentications';
8
9export const getLoginToken = webMethod(Permissions.Anyone, (email, password) => {
10
11 return authBy3rdParty(email, password)
12 .then((isAuthenticated) => {
13
14 // If authenticated, generate and return the session token
15 if (isAuthenticated) {
16 return authentication.generateSessionToken(email)
17 .then((sessionToken) => {
18 return {
19 sessionToken: sessionToken,
20 approved: true
21 };
22 });
23 }
24
25 // If not authenticated, return non-approval
26 return { approved: false };
27 });
28});
29
30/*************
31 * Page code *
32 ************/
33import { getLoginToken } from 'backend/login.web';
34import { authentication } from 'wix-members-frontend';
35
36// ...
37
38const email = $w('email').value;
39const password = $w('password').value;
40
41// Call the backend function to get the session token
42getLoginToken(email, password)
43 .then((loginResult) => {
44 if (loginResult.approved) {
45 // If approved, log the member in using the returned session token
46 authentication.applySessionToken(loginResult.sessionToken);
47 } else {
48 // If not approved, log a message
49 console.log("Member not approved.");
50 }
51 });
Register a member, sending an email for confirmation

This example demonstrates a common email verification flow. A member is initially registered but not yet approved. At registration, a verification email is sent with a link to a verification page. When the member goes to the verification page, the approval is granted and the member is logged into the site.

The code is split between three locations:

  • A backend web module named register.jsw.
  • The page code for the page where members register.
  • The page code for the page where members confirm their registration.

Copy Code
1/*******************************
2 * Backend code - register.web.js *
3 *******************************/
4
5import { Permissions, webMethod } from 'wix-web-module';
6import { authentication } from 'wix-members-backend';
7import { triggeredEmails } from 'wix-crm-backend';
8
9export const doRegistration = webMethod(Permissions.Anyone, async (email, password, firstName, lastName) => {
10 const registrationOptions = {
11 contactInfo: {
12 firstName: firstName,
13 lastName: lastName
14 }
15 };
16 const registration = await authentication.register(email, password, registrationOptions);
17 console.log('Member is now registered with the site and pending approval');
18
19 const emailOptions = {
20 variables: {
21 name: firstName,
22 verifyLink: `http://yourdomain.com/post-register?token=${registration.approvalToken}`
23 }
24 };
25 triggeredEmails.emailMember('verifyRegistration', registration.member.id, emailOptions);
26 console.log('Confirmation email sent');
27});
28
29export const doApproval = webMethod(Permissions.Anyone, async (token) => {
30 try {
31 const sessionToken = await authentication.approveByToken(token);
32 console.log('Member approved');
33 return {
34 approved: true,
35 sessionToken: sessionToken
36 };
37 } catch (error) {
38 console.log('Member not approved');
39 return {
40 approved: false,
41 reason: error
42 };
43 }
44});
45
46/****************************
47 * Page code - registration *
48 ****************************/
49import { doRegistration } from 'backend/register.web';
50
51// ...
52
53const email = $w('#email').value;
54const password = $w('#password').value;
55const firstName = $w('#firstName').value;
56const lastName = $w('#lastName').value;
57
58doRegistration(email, password, firstName, lastName)
59 .then(() => {
60 console.log('Confirmation email sent.');
61 });
62
63/*********************************
64 * Page code - post-registration *
65 *********************************/
66import wixLocationFrontend from 'wix-location-frontend';
67import { authentication } from 'wix-members-frontend';
68import { doApproval } from 'backend/register.web';
69
70$w.onReady(async () => {
71 const token = wixLocationFrontend.query.token;
72
73 const approval = await doApproval(token);
74
75 if (approval.approved === true) {
76 authentication.applySessionToken(approval.sessionToken);
77 console.log('Member approved & logged in');
78 } else {
79 console.log('Member not approved');
80 }
81});
82