fix files consent with autoacceptifnouser #7460

Signed-off-by: si458 <simonsmith5521@gmail.com>

si458 committed Dec 1, 2025 at 15:25 UTC d2677dcc6640db89fb3b9d70b94753fc7c8890d0
1 file changed +45 -39
agents/meshcore.js
+45 -39
@@ -3317,49 +3317,55 @@ function onTunnelData(data)
3317 };
3318
3319 // Perform notification if needed. Toast messages may not be supported on all platforms.
3320 - if (this.httprequest.consentAutoAcceptIfNoUser || this.httprequest.consentAutoAcceptIfFileNoUser || this.httprequest.consentAutoAcceptIfLocked || this.httprequest.consentAutoAcceptIfFileLocked) {
3321 - var p = require('user-sessions').enumerateUsers();
3322 - p.sessionid = this.httprequest.sessionid;
3323 - p.ws = this;
3324 - p.then(function (u) {
3325 - var v = [];
3326 - for (var i in u) {
3327 - if (u[i].State == 'Active') { v.push({ tsid: i, type: u[i].StationName, user: u[i].Username, domain: u[i].Domain }); }
3328 - }
3329 - var autoAccept = false;
3330 -
3331 - // Check if we should auto-accept because no user is present
3332 - if ((this.ws.httprequest.consentAutoAcceptIfNoUser || this.ws.httprequest.consentAutoAcceptIfFileNoUser) && (v.length == 0)) {
3333 - autoAccept = true;
3334 - }
3335 -
3336 - // Check if we should auto-accept because all users are locked
3337 - if ((this.ws.httprequest.consentAutoAcceptIfLocked || this.ws.httprequest.consentAutoAcceptIfFileLocked) && (v.length > 0)) {
3338 - var allUsersLocked = true;
3339 - if (!meshCoreObj.lusers || meshCoreObj.lusers.length == 0) {
3340 - // No locked users list available, assume users are not locked
3341 - allUsersLocked = false;
3342 - } else {
3343 - for (var i in v) {
3344 - var username = v[i].domain ? (v[i].domain + '\\' + v[i].user) : v[i].user;
3345 - if (meshCoreObj.lusers.indexOf(username) == -1) {
3346 - allUsersLocked = false;
3347 - break;
3320 + if (this.httprequest.consent && (this.httprequest.consent & 32)) {
3321 + // User asked for consent so now we check if we can auto accept if no user is present/loggedin
3322 + if (this.httprequest.consentAutoAcceptIfNoUser || this.httprequest.consentAutoAcceptIfFileNoUser || this.httprequest.consentAutoAcceptIfLocked || this.httprequest.consentAutoAcceptIfFileLocked) {
3323 + var p = require('user-sessions').enumerateUsers();
3324 + p.sessionid = this.httprequest.sessionid;
3325 + p.ws = this;
3326 + p.then(function (u) {
3327 + var v = [];
3328 + for (var i in u) {
3329 + if (u[i].State == 'Active') { v.push({ tsid: i, type: u[i].StationName, user: u[i].Username, domain: u[i].Domain }); }
3330 + }
3331 + var autoAccept = false;
3332 +
3333 + // Check if we should auto-accept because no user is present
3334 + if ((this.ws.httprequest.consentAutoAcceptIfNoUser || this.ws.httprequest.consentAutoAcceptIfFileNoUser) && (v.length == 0)) {
3335 + autoAccept = true;
3336 + }
3337 +
3338 + // Check if we should auto-accept because all users are locked
3339 + if ((this.ws.httprequest.consentAutoAcceptIfLocked || this.ws.httprequest.consentAutoAcceptIfFileLocked) && (v.length > 0)) {
3340 + var allUsersLocked = true;
3341 + if (!meshCoreObj.lusers || meshCoreObj.lusers.length == 0) {
3342 + // No locked users list available, assume users are not locked
3343 + allUsersLocked = false;
3344 + } else {
3345 + for (var i in v) {
3346 + var username = v[i].domain ? (v[i].domain + '\\' + v[i].user) : v[i].user;
3347 + if (meshCoreObj.lusers.indexOf(username) == -1) {
3348 + allUsersLocked = false;
3349 + break;
3350 + }
3351 }
3352 }
3353 + if (allUsersLocked) { autoAccept = true; }
3354 }
3351 - if (allUsersLocked) { autoAccept = true; }
3352 - }
3353 -
3354 - if (autoAccept) {
3355 - // User Consent Prompt is not required
3356 - files_consent_ok(this.ws);
3357 - } else {
3358 - // User is present and not all locked, so we still need consent
3359 - files_consent_ask(this.ws);
3360 - }
3361 - });
3355 +
3356 + if (autoAccept) {
3357 + // User Consent Prompt is not required
3358 + files_consent_ok(this.ws);
3359 + } else {
3360 + // User is present and not all locked, so we still need consent
3361 + files_consent_ask(this.ws);
3362 + }
3363 + });
3364 } else {
3365 + // User Consent Prompt is required
3366 + files_consent_ask(this);
3367 + }
3368 + } else {
3369 // User Consent Prompt is not required
3370 files_consent_ok(this);
3371 }