feat: support outlook for calendar plus minor fixes

This commit is contained in:
2026-06-27 15:07:10 +09:30
parent 2163f06de9
commit d34333ca38
31 changed files with 1791 additions and 231 deletions
+43
View File
@@ -0,0 +1,43 @@
/**
* Outlook Calendar OAuth — public client config (extension).
* Client secret and token exchange live on accounts.betterseqta.org.
* See docs/OUTLOOK_CALENDAR_ACCOUNTS_CALLBACK.md
*/
import { ACCOUNTS_BASE } from "@/config/googleCalendar";
const HARDCODED_OUTLOOK_OAUTH_CLIENT_ID =
"0b55168c-916c-4323-8f67-b3dd30af3c9e";
const envClientId =
typeof __OUTLOOK_OAUTH_CLIENT_ID__ !== "undefined" ? __OUTLOOK_OAUTH_CLIENT_ID__ : "";
export const OUTLOOK_OAUTH_CLIENT_ID: string =
envClientId.trim() || HARDCODED_OUTLOOK_OAUTH_CLIENT_ID.trim();
/** Must match Azure app registration + accounts callback route exactly. */
export const OUTLOOK_CALENDAR_OAUTH_CALLBACK = `${ACCOUNTS_BASE}/auth/microsoft/calendar/callback`;
export const OUTLOOK_CALENDAR_TOKEN_URL = `${ACCOUNTS_BASE}/api/bsplus/microsoft/calendar/token`;
export const OUTLOOK_CALENDAR_REFRESH_URL = `${ACCOUNTS_BASE}/api/bsplus/microsoft/calendar/refresh`;
/** Delegated Graph scopes for create/update/delete calendar events. */
export const OUTLOOK_CALENDAR_SCOPE = "offline_access Calendars.ReadWrite User.Read";
export const OUTLOOK_AUTH_URL =
"https://login.microsoftonline.com/common/oauth2/v2.0/authorize";
export const OUTLOOK_GRAPH_API = "https://graph.microsoft.com/v1.0";
export const BSPLUS_OUTLOOK_CALENDAR_EVENT_CATEGORY = "BetterSEQTA+";
export function isOutlookCalendarConfigured(): boolean {
return OUTLOOK_OAUTH_CLIENT_ID.length > 0;
}
export const OUTLOOK_CALENDAR_ACCOUNTS_NOT_READY_HINT =
"Outlook Calendar connect requires accounts.betterseqta.org — see docs/OUTLOOK_CALENDAR_ACCOUNTS_CALLBACK.md";
export function outlookOAuthRedirectUriHint(): string {
return `Authorized redirect URI in Azure must be: ${OUTLOOK_CALENDAR_OAUTH_CALLBACK}`;
}