mirror of
https://github.com/cheveguerra/whatsapp-web.js.git
synced 2026-04-18 03:29:14 +00:00
125 lines
4.6 KiB
HTML
125 lines
4.6 KiB
HTML
<!doctype html>
|
|
<html>
|
|
|
|
<head>
|
|
<meta name="generator" content="JSDoc 3.6.7">
|
|
<meta charset="utf-8">
|
|
<title>whatsapp-web.js 1.16.3 » Source: authStrategies/LegacySessionAuth.js</title>
|
|
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
|
|
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
|
|
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
|
|
<link href="css/baseline.css" rel="stylesheet">
|
|
</head>
|
|
|
|
<body onload="prettyPrint()">
|
|
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
|
|
<div id="jsdoc-navbar-container">
|
|
<div id="jsdoc-navbar-content">
|
|
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>16.<wbr>3</a>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<div id="jsdoc-body-container">
|
|
<div id="jsdoc-content">
|
|
<div id="jsdoc-content-container">
|
|
<div id="jsdoc-banner" role="banner">
|
|
</div>
|
|
<div id="jsdoc-main" role="main">
|
|
<header class="page-header">
|
|
<h1>Source: authStrategies/LegacySessionAuth.js</h1>
|
|
</header>
|
|
<article>
|
|
<pre class="prettyprint linenums"><code>'use strict';
|
|
|
|
const BaseAuthStrategy = require('./BaseAuthStrategy');
|
|
|
|
/**
|
|
* Legacy session auth strategy
|
|
* Not compatible with multi-device accounts.
|
|
* @param {object} options - options
|
|
* @param {string} options.restartOnAuthFail - Restart client with a new session (i.e. use null 'session' var) if authentication fails
|
|
* @param {object} options.session - Whatsapp session to restore. If not set, will start a new session
|
|
* @param {string} options.session.WABrowserId
|
|
* @param {string} options.session.WASecretBundle
|
|
* @param {string} options.session.WAToken1
|
|
* @param {string} options.session.WAToken2
|
|
*/
|
|
class LegacySessionAuth extends BaseAuthStrategy {
|
|
constructor({ session, restartOnAuthFail }={}) {
|
|
super();
|
|
this.session = session;
|
|
this.restartOnAuthFail = restartOnAuthFail;
|
|
}
|
|
|
|
async afterBrowserInitialized() {
|
|
if(this.session) {
|
|
await this.client.pupPage.evaluateOnNewDocument(session => {
|
|
if (document.referrer === 'https://whatsapp.com/') {
|
|
localStorage.clear();
|
|
localStorage.setItem('WABrowserId', session.WABrowserId);
|
|
localStorage.setItem('WASecretBundle', session.WASecretBundle);
|
|
localStorage.setItem('WAToken1', session.WAToken1);
|
|
localStorage.setItem('WAToken2', session.WAToken2);
|
|
}
|
|
|
|
localStorage.setItem('remember-me', 'true');
|
|
}, this.session);
|
|
}
|
|
}
|
|
|
|
async onAuthenticationNeeded() {
|
|
if(this.session) {
|
|
this.session = null;
|
|
return {
|
|
failed: true,
|
|
restart: this.restartOnAuthFail,
|
|
failureEventPayload: 'Unable to log in. Are the session details valid?'
|
|
};
|
|
}
|
|
|
|
return { failed: false };
|
|
}
|
|
|
|
async getAuthEventPayload() {
|
|
const isMD = await this.client.pupPage.evaluate(() => {
|
|
return window.Store.Features.features.MD_BACKEND;
|
|
});
|
|
|
|
if(isMD) throw new Error('Authenticating via JSON session is not supported for MultiDevice-enabled WhatsApp accounts.');
|
|
|
|
const localStorage = JSON.parse(await this.client.pupPage.evaluate(() => {
|
|
return JSON.stringify(window.localStorage);
|
|
}));
|
|
|
|
return {
|
|
WABrowserId: localStorage.WABrowserId,
|
|
WASecretBundle: localStorage.WASecretBundle,
|
|
WAToken1: localStorage.WAToken1,
|
|
WAToken2: localStorage.WAToken2
|
|
};
|
|
}
|
|
}
|
|
|
|
module.exports = LegacySessionAuth;</code></pre>
|
|
</article>
|
|
</div>
|
|
</div>
|
|
<nav id="jsdoc-toc-nav" role="navigation"></nav>
|
|
</div>
|
|
</div>
|
|
<footer id="jsdoc-footer" class="jsdoc-footer">
|
|
<div id="jsdoc-footer-container">
|
|
<p>
|
|
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.7 on March 6, 2022.
|
|
</p>
|
|
</div>
|
|
</footer>
|
|
<script src="scripts/jquery.min.js"></script>
|
|
<script src="scripts/tree.jquery.js"></script>
|
|
<script src="scripts/prettify.js"></script>
|
|
<script src="scripts/jsdoc-toc.js"></script>
|
|
<script src="scripts/linenumber.js"></script>
|
|
<script src="scripts/scrollanchor.js"></script>
|
|
</body>
|
|
|
|
</html> |