feat(myTischtennis): implement session restoration for browser automation login

- Enhanced the loginWithBrowserAutomation method to accept an options parameter for restoring a saved Playwright session, allowing users to bypass CAPTCHA if the session is still valid.
- Added a new playwrightStorageState field in the MyTischtennis model to store the encrypted browser storage state, facilitating session persistence.
- Updated myTischtennisService to utilize the saved storage state during login attempts, improving user experience by reducing unnecessary CAPTCHA challenges.
This commit is contained in:
Torsten Schulz (local)
2026-03-04 14:26:27 +01:00
parent 637bacf70f
commit 27665a45df
3 changed files with 103 additions and 5 deletions

View File

@@ -199,6 +199,30 @@ const MyTischtennis = sequelize.define('MyTischtennis', {
type: DataTypes.DATE,
allowNull: true,
field: 'last_update_ratings'
},
playwrightStorageState: {
// Encrypted JSON blob: full Playwright browser storage state (cookies + localStorage).
// Allows restoring a previous login session without a new CAPTCHA challenge.
type: DataTypes.TEXT('long'),
allowNull: true,
field: 'playwright_storage_state',
set(value) {
if (value === null || value === undefined) {
this.setDataValue('playwrightStorageState', null);
} else {
const jsonString = typeof value === 'string' ? value : JSON.stringify(value);
this.setDataValue('playwrightStorageState', encryptData(jsonString));
}
},
get() {
const encrypted = this.getDataValue('playwrightStorageState');
if (!encrypted) return null;
try {
return JSON.parse(decryptData(encrypted));
} catch (_e) {
return null;
}
}
}
}, {
underscored: true,