mirror of
https://github.com/Laxilef/OTGateway.git
synced 2026-02-05 00:57:46 +05:00
101
src/PortalTask.h
101
src/PortalTask.h
@@ -108,8 +108,8 @@ protected:
|
|||||||
// dashboard page
|
// dashboard page
|
||||||
auto dashboardPage = (new StaticPage("/dashboard.html", &LittleFS, F("/pages/dashboard.html"), PORTAL_CACHE))
|
auto dashboardPage = (new StaticPage("/dashboard.html", &LittleFS, F("/pages/dashboard.html"), PORTAL_CACHE))
|
||||||
->setBeforeSendCallback([this]() {
|
->setBeforeSendCallback([this]() {
|
||||||
if (this->isAuthRequired() && !this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
this->webServer->requestAuthentication(DIGEST_AUTH);
|
this->webServer->requestAuthentication(BASIC_AUTH);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,11 +119,9 @@ protected:
|
|||||||
|
|
||||||
// restart
|
// restart
|
||||||
this->webServer->on(F("/restart.html"), HTTP_GET, [this]() {
|
this->webServer->on(F("/restart.html"), HTTP_GET, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
this->webServer->requestAuthentication(BASIC_AUTH);
|
||||||
this->webServer->send(401);
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vars.actions.restart = true;
|
vars.actions.restart = true;
|
||||||
@@ -134,8 +132,8 @@ protected:
|
|||||||
// network settings page
|
// network settings page
|
||||||
auto networkPage = (new StaticPage("/network.html", &LittleFS, F("/pages/network.html"), PORTAL_CACHE))
|
auto networkPage = (new StaticPage("/network.html", &LittleFS, F("/pages/network.html"), PORTAL_CACHE))
|
||||||
->setBeforeSendCallback([this]() {
|
->setBeforeSendCallback([this]() {
|
||||||
if (this->isAuthRequired() && !this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
this->webServer->requestAuthentication(DIGEST_AUTH);
|
this->webServer->requestAuthentication(BASIC_AUTH);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,8 +144,8 @@ protected:
|
|||||||
// settings page
|
// settings page
|
||||||
auto settingsPage = (new StaticPage("/settings.html", &LittleFS, F("/pages/settings.html"), PORTAL_CACHE))
|
auto settingsPage = (new StaticPage("/settings.html", &LittleFS, F("/pages/settings.html"), PORTAL_CACHE))
|
||||||
->setBeforeSendCallback([this]() {
|
->setBeforeSendCallback([this]() {
|
||||||
if (this->isAuthRequired() && !this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
this->webServer->requestAuthentication(DIGEST_AUTH);
|
this->webServer->requestAuthentication(BASIC_AUTH);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,8 +156,8 @@ protected:
|
|||||||
// sensors page
|
// sensors page
|
||||||
auto sensorsPage = (new StaticPage("/sensors.html", &LittleFS, F("/pages/sensors.html"), PORTAL_CACHE))
|
auto sensorsPage = (new StaticPage("/sensors.html", &LittleFS, F("/pages/sensors.html"), PORTAL_CACHE))
|
||||||
->setBeforeSendCallback([this]() {
|
->setBeforeSendCallback([this]() {
|
||||||
if (this->isAuthRequired() && !this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
this->webServer->requestAuthentication(DIGEST_AUTH);
|
this->webServer->requestAuthentication(BASIC_AUTH);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,8 +168,8 @@ protected:
|
|||||||
// upgrade page
|
// upgrade page
|
||||||
auto upgradePage = (new StaticPage("/upgrade.html", &LittleFS, F("/pages/upgrade.html"), PORTAL_CACHE))
|
auto upgradePage = (new StaticPage("/upgrade.html", &LittleFS, F("/pages/upgrade.html"), PORTAL_CACHE))
|
||||||
->setBeforeSendCallback([this]() {
|
->setBeforeSendCallback([this]() {
|
||||||
if (this->isAuthRequired() && !this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
this->webServer->requestAuthentication(DIGEST_AUTH);
|
this->webServer->requestAuthentication(BASIC_AUTH);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,7 +179,7 @@ protected:
|
|||||||
|
|
||||||
// OTA
|
// OTA
|
||||||
auto upgradeHandler = (new UpgradeHandler("/api/upgrade"))->setCanUploadCallback([this](const String& uri) {
|
auto upgradeHandler = (new UpgradeHandler("/api/upgrade"))->setCanUploadCallback([this](const String& uri) {
|
||||||
if (this->isAuthRequired() && !this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
this->webServer->sendHeader(F("Connection"), F("close"));
|
this->webServer->sendHeader(F("Connection"), F("close"));
|
||||||
this->webServer->send(401);
|
this->webServer->send(401);
|
||||||
return false;
|
return false;
|
||||||
@@ -222,10 +220,8 @@ protected:
|
|||||||
|
|
||||||
// backup
|
// backup
|
||||||
this->webServer->on(F("/api/backup/save"), HTTP_GET, [this]() {
|
this->webServer->on(F("/api/backup/save"), HTTP_GET, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
return this->webServer->send(401);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonDocument doc;
|
JsonDocument doc;
|
||||||
@@ -248,10 +244,8 @@ protected:
|
|||||||
});
|
});
|
||||||
|
|
||||||
this->webServer->on(F("/api/backup/restore"), HTTP_POST, [this]() {
|
this->webServer->on(F("/api/backup/restore"), HTTP_POST, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
return this->webServer->send(401);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vars.states.restarting) {
|
if (vars.states.restarting) {
|
||||||
@@ -329,10 +323,8 @@ protected:
|
|||||||
|
|
||||||
// network
|
// network
|
||||||
this->webServer->on(F("/api/network/settings"), HTTP_GET, [this]() {
|
this->webServer->on(F("/api/network/settings"), HTTP_GET, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
return this->webServer->send(401);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonDocument doc;
|
JsonDocument doc;
|
||||||
@@ -343,10 +335,8 @@ protected:
|
|||||||
});
|
});
|
||||||
|
|
||||||
this->webServer->on(F("/api/network/settings"), HTTP_POST, [this]() {
|
this->webServer->on(F("/api/network/settings"), HTTP_POST, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
return this->webServer->send(401);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vars.states.restarting) {
|
if (vars.states.restarting) {
|
||||||
@@ -402,11 +392,8 @@ protected:
|
|||||||
});
|
});
|
||||||
|
|
||||||
this->webServer->on(F("/api/network/scan"), HTTP_GET, [this]() {
|
this->webServer->on(F("/api/network/scan"), HTTP_GET, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
this->webServer->send(401);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
auto apCount = WiFi.scanComplete();
|
auto apCount = WiFi.scanComplete();
|
||||||
@@ -448,10 +435,8 @@ protected:
|
|||||||
|
|
||||||
// settings
|
// settings
|
||||||
this->webServer->on(F("/api/settings"), HTTP_GET, [this]() {
|
this->webServer->on(F("/api/settings"), HTTP_GET, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
return this->webServer->send(401);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonDocument doc;
|
JsonDocument doc;
|
||||||
@@ -462,10 +447,8 @@ protected:
|
|||||||
});
|
});
|
||||||
|
|
||||||
this->webServer->on(F("/api/settings"), HTTP_POST, [this]() {
|
this->webServer->on(F("/api/settings"), HTTP_POST, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
return this->webServer->send(401);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vars.states.restarting) {
|
if (vars.states.restarting) {
|
||||||
@@ -513,10 +496,8 @@ protected:
|
|||||||
|
|
||||||
// sensors list
|
// sensors list
|
||||||
this->webServer->on(F("/api/sensors"), HTTP_GET, [this]() {
|
this->webServer->on(F("/api/sensors"), HTTP_GET, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
return this->webServer->send(401);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool detailed = false;
|
bool detailed = false;
|
||||||
@@ -543,10 +524,8 @@ protected:
|
|||||||
|
|
||||||
// sensor settings
|
// sensor settings
|
||||||
this->webServer->on(F("/api/sensor"), HTTP_GET, [this]() {
|
this->webServer->on(F("/api/sensor"), HTTP_GET, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
return this->webServer->send(401);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this->webServer->hasArg(F("id"))) {
|
if (!this->webServer->hasArg(F("id"))) {
|
||||||
@@ -571,10 +550,8 @@ protected:
|
|||||||
});
|
});
|
||||||
|
|
||||||
this->webServer->on(F("/api/sensor"), HTTP_POST, [this]() {
|
this->webServer->on(F("/api/sensor"), HTTP_POST, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
return this->webServer->send(401);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vars.states.restarting) {
|
if (vars.states.restarting) {
|
||||||
@@ -654,10 +631,8 @@ protected:
|
|||||||
});
|
});
|
||||||
|
|
||||||
this->webServer->on(F("/api/vars"), HTTP_POST, [this]() {
|
this->webServer->on(F("/api/vars"), HTTP_POST, [this]() {
|
||||||
if (this->isAuthRequired()) {
|
if (this->isAuthRequired() && !this->isValidCredentials()) {
|
||||||
if (!this->webServer->authenticate(settings.portal.login, settings.portal.password)) {
|
return this->webServer->send(401);
|
||||||
return this->webServer->send(401);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const String& plain = this->webServer->arg(0);
|
const String& plain = this->webServer->arg(0);
|
||||||
@@ -956,6 +931,10 @@ protected:
|
|||||||
return !network->isApEnabled() && settings.portal.auth && strlen(settings.portal.password);
|
return !network->isApEnabled() && settings.portal.auth && strlen(settings.portal.password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isValidCredentials() {
|
||||||
|
return this->webServer->authenticate(settings.portal.login, settings.portal.password);
|
||||||
|
}
|
||||||
|
|
||||||
void onCaptivePortal() {
|
void onCaptivePortal() {
|
||||||
const String& uri = this->webServer->uri();
|
const String& uri = this->webServer->uri();
|
||||||
|
|
||||||
|
|||||||
@@ -380,13 +380,18 @@
|
|||||||
console.log(newSettings);
|
console.log(newSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
let parameters = { cache: 'no-cache' };
|
let parameters = {
|
||||||
|
method: "GET",
|
||||||
|
cache: "no-cache",
|
||||||
|
credentials: "include"
|
||||||
|
};
|
||||||
|
|
||||||
if (modified) {
|
if (modified) {
|
||||||
parameters.method = "POST";
|
parameters.method = "POST";
|
||||||
parameters.body = JSON.stringify(newSettings);
|
parameters.body = JSON.stringify(newSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch('/api/settings', parameters);
|
const response = await fetch("/api/settings", parameters);
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error('Response not valid');
|
throw new Error('Response not valid');
|
||||||
}
|
}
|
||||||
@@ -424,7 +429,11 @@
|
|||||||
|
|
||||||
// vars
|
// vars
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/api/vars', { cache: 'no-cache' });
|
const response = await fetch("/api/vars", {
|
||||||
|
cache: "no-cache",
|
||||||
|
credentials: "include"
|
||||||
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error('Response not valid');
|
throw new Error('Response not valid');
|
||||||
}
|
}
|
||||||
@@ -540,7 +549,11 @@
|
|||||||
|
|
||||||
// sensors
|
// sensors
|
||||||
try {
|
try {
|
||||||
const response = await fetch("/api/sensors?detailed=1", { cache: "no-cache" });
|
const response = await fetch("/api/sensors?detailed=1", {
|
||||||
|
cache: "no-cache",
|
||||||
|
credentials: "include"
|
||||||
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error("Response not valid");
|
throw new Error("Response not valid");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -170,7 +170,11 @@
|
|||||||
|
|
||||||
setTimeout(async function onLoadPage() {
|
setTimeout(async function onLoadPage() {
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/api/info', { cache: 'no-cache' });
|
const response = await fetch("/api/info", {
|
||||||
|
cache: "no-cache",
|
||||||
|
credentials: "include"
|
||||||
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error('Response not valid');
|
throw new Error('Response not valid');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -199,7 +199,11 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/api/network/settings', { cache: 'no-cache' });
|
const response = await fetch("/api/network/settings", {
|
||||||
|
cache: "no-cache",
|
||||||
|
credentials: "include"
|
||||||
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error('Response not valid');
|
throw new Error('Response not valid');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -194,7 +194,11 @@
|
|||||||
const templateNode = container.querySelector("#template");
|
const templateNode = container.querySelector("#template");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch("/api/sensors", { cache: "no-cache" });
|
const response = await fetch("/api/sensors", {
|
||||||
|
cache: "no-cache",
|
||||||
|
credentials: "include"
|
||||||
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error("Response not valid");
|
throw new Error("Response not valid");
|
||||||
}
|
}
|
||||||
@@ -287,7 +291,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(sensorForm.action, { cache: "no-cache" });
|
const response = await fetch(sensorForm.action, {
|
||||||
|
cache: "no-cache",
|
||||||
|
credentials: "include"
|
||||||
|
});
|
||||||
|
|
||||||
if (response.status != 200) {
|
if (response.status != 200) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -808,7 +808,11 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/api/settings', { cache: 'no-cache' });
|
const response = await fetch("/api/settings", {
|
||||||
|
cache: "no-cache",
|
||||||
|
credentials: "include"
|
||||||
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error('Response not valid');
|
throw new Error('Response not valid');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class Lang {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!this.localeIsSupported(this.defaultLocale)) {
|
if (!this.localeIsSupported(this.defaultLocale)) {
|
||||||
const selected = this.switcher.selectedIndex ?? 0;
|
const selected = this.switcher.selectedIndex ? this.switcher.selectedIndex : 0;
|
||||||
this.defaultLocale = this.switcher.options[selected].value;
|
this.defaultLocale = this.switcher.options[selected].value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,10 +60,11 @@ const setupForm = (formSelector, onResultCallback = null, noCastItems = []) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let response = await fetch(url, {
|
let response = await fetch(url, {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
cache: 'no-cache',
|
cache: "no-cache",
|
||||||
|
credentials: "include",
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
"Content-Type": "application/json"
|
||||||
},
|
},
|
||||||
body: form2json(fd, noCastItems)
|
body: form2json(fd, noCastItems)
|
||||||
});
|
});
|
||||||
@@ -218,7 +219,10 @@ const setupNetworkScanForm = (formSelector, tableSelector) => {
|
|||||||
attempts--;
|
attempts--;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let response = await fetch(url, { cache: 'no-cache' });
|
let response = await fetch(url, {
|
||||||
|
cache: "no-cache",
|
||||||
|
credentials: "include"
|
||||||
|
});
|
||||||
|
|
||||||
if (response.status == 200) {
|
if (response.status == 200) {
|
||||||
await onSuccess(response);
|
await onSuccess(response);
|
||||||
@@ -309,10 +313,11 @@ const setupRestoreBackupForm = (formSelector) => {
|
|||||||
|
|
||||||
if (data.settings != undefined) {
|
if (data.settings != undefined) {
|
||||||
let response = await fetch(url, {
|
let response = await fetch(url, {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
cache: 'no-cache',
|
cache: "no-cache",
|
||||||
|
credentials: "include",
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
"Content-Type": "application/json"
|
||||||
},
|
},
|
||||||
body: JSON.stringify({"settings": data.settings})
|
body: JSON.stringify({"settings": data.settings})
|
||||||
});
|
});
|
||||||
@@ -331,10 +336,11 @@ const setupRestoreBackupForm = (formSelector) => {
|
|||||||
payload["sensors"][sensorId] = data.sensors[sensorId];
|
payload["sensors"][sensorId] = data.sensors[sensorId];
|
||||||
|
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
cache: 'no-cache',
|
cache: "no-cache",
|
||||||
|
credentials: "include",
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
"Content-Type": "application/json"
|
||||||
},
|
},
|
||||||
body: JSON.stringify(payload)
|
body: JSON.stringify(payload)
|
||||||
});
|
});
|
||||||
@@ -348,10 +354,11 @@ const setupRestoreBackupForm = (formSelector) => {
|
|||||||
|
|
||||||
if (data.network != undefined) {
|
if (data.network != undefined) {
|
||||||
let response = await fetch(url, {
|
let response = await fetch(url, {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
cache: 'no-cache',
|
cache: "no-cache",
|
||||||
|
credentials: "include",
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
"Content-Type": "application/json"
|
||||||
},
|
},
|
||||||
body: JSON.stringify({"network": data.network})
|
body: JSON.stringify({"network": data.network})
|
||||||
});
|
});
|
||||||
@@ -496,8 +503,9 @@ const setupUpgradeForm = (formSelector) => {
|
|||||||
try {
|
try {
|
||||||
let fd = new FormData(form);
|
let fd = new FormData(form);
|
||||||
let response = await fetch(url, {
|
let response = await fetch(url, {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
cache: 'no-cache',
|
cache: "no-cache",
|
||||||
|
credentials: "include",
|
||||||
body: fd
|
body: fd
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user