brightspace-mcp-server 3.11.5 → 3.11.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/auth/purdue-sso.js +8 -3
- package/package.json +1 -1
package/build/auth/purdue-sso.js
CHANGED
|
@@ -351,8 +351,11 @@ export class PurdueSSOFlow {
|
|
|
351
351
|
const challengeVisible = number !== null ||
|
|
352
352
|
await page.locator("#idDiv_SAOTCAS_Title").first().isVisible().catch(() => false) ||
|
|
353
353
|
await page.locator("#idDiv_SAOTCC_Title").first().isVisible().catch(() => false);
|
|
354
|
-
|
|
354
|
+
// The checkbox can render after the heading or number. Recheck during
|
|
355
|
+
// the existing poll without delaying the first challenge announcement.
|
|
356
|
+
if (challengeVisible)
|
|
355
357
|
await this.rememberMfaDevice(page);
|
|
358
|
+
if (challengeVisible && !challenged) {
|
|
356
359
|
challenged = true;
|
|
357
360
|
log("WARN", "Waiting up to 5 minutes for Microsoft MFA approval on your device.");
|
|
358
361
|
this.config.onMfaChallenge?.(number);
|
|
@@ -507,13 +510,13 @@ export class PurdueSSOFlow {
|
|
|
507
510
|
return true;
|
|
508
511
|
}
|
|
509
512
|
/**
|
|
510
|
-
* Tick Entra's "Don't ask again" box
|
|
513
|
+
* Tick Entra's "Don't ask again" box once; retry absent controls on later MFA polls.
|
|
511
514
|
* Opt-in: without an explicit true the box is left alone and the outcome
|
|
512
515
|
* is recorded as "off", so get_server_info can say why nothing was ticked.
|
|
513
516
|
* An already-checked box is left alone so this can never untick it.
|
|
514
517
|
*/
|
|
515
518
|
async rememberMfaDevice(page) {
|
|
516
|
-
if (this.rememberMfa)
|
|
519
|
+
if (this.rememberMfa && this.rememberMfa.outcome !== "absent")
|
|
517
520
|
return;
|
|
518
521
|
if (this.config.rememberMfa !== true) {
|
|
519
522
|
this.rememberMfa = { outcome: "off", at: new Date().toISOString() };
|
|
@@ -543,6 +546,8 @@ export class PurdueSSOFlow {
|
|
|
543
546
|
catch {
|
|
544
547
|
outcome = "unknown";
|
|
545
548
|
}
|
|
549
|
+
if (this.rememberMfa?.outcome === outcome)
|
|
550
|
+
return;
|
|
546
551
|
this.rememberMfa = { outcome, at: new Date().toISOString() };
|
|
547
552
|
log("INFO", `Entra remember-MFA checkbox: ${REMEMBER_MFA_LOG[outcome]}`);
|
|
548
553
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "brightspace-mcp-server",
|
|
3
|
-
"version": "3.11.
|
|
3
|
+
"version": "3.11.6",
|
|
4
4
|
"mcpName": "io.github.RohanMuppa/brightspace",
|
|
5
5
|
"description": "MCP server for Brightspace (D2L). Check grades, due dates, assignments, announcements, syllabus, rosters and more via Claude, ChatGPT, Cursor, Windsurf, or any MCP client.",
|
|
6
6
|
"type": "module",
|