add office-aware passport policies and alert lifecycle

Enforce geofenced location evidence for passport challenges and extend admin alerting so mobile devices can review, dismiss, and act on real org and security events.
This commit is contained in:
2026-04-20 13:21:28 +00:00
parent a1a684ee81
commit e9eb9b4172
11 changed files with 548 additions and 37 deletions
+45 -1
View File
@@ -95,6 +95,7 @@ export interface IReq_CreatePassportChallenge
notificationTitle?: string;
requireLocation?: boolean;
requireNfc?: boolean;
locationPolicy?: data.IPassportLocationPolicy;
};
response: {
challengeId: string;
@@ -125,6 +126,21 @@ export interface IReq_ApprovePassportChallenge
};
}
export interface IReq_RejectPassportChallenge
extends plugins.typedRequestInterfaces.implementsTR<
plugins.typedRequestInterfaces.ITypedRequest,
IReq_RejectPassportChallenge
> {
method: 'rejectPassportChallenge';
request: IPassportDeviceSignedRequest & {
challengeId: string;
};
response: {
success: boolean;
challenge: data.IPassportChallenge;
};
}
export interface IReq_RegisterPassportPushToken
extends plugins.typedRequestInterfaces.implementsTR<
plugins.typedRequestInterfaces.ITypedRequest,
@@ -164,7 +180,10 @@ export interface IReq_GetPassportChallengeByHint
hintId: string;
};
response: {
challenge?: data.IPassportChallenge;
challenge?: {
challenge: data.IPassportChallenge;
signingPayload: string;
};
};
}
@@ -181,3 +200,28 @@ export interface IReq_MarkPassportChallengeSeen
success: boolean;
};
}
export interface IReq_GetPassportDashboard
extends plugins.typedRequestInterfaces.implementsTR<
plugins.typedRequestInterfaces.ITypedRequest,
IReq_GetPassportDashboard
> {
method: 'getPassportDashboard';
request: IPassportDeviceSignedRequest;
response: {
profile: {
userId: string;
name: string;
handle: string;
organizations: Array<{ id: string; name: string }>;
deviceCount: number;
recoverySummary: string;
};
devices: data.IPassportDevice[];
challenges: Array<{
challenge: data.IPassportChallenge;
signingPayload: string;
}>;
alerts: data.IAlert[];
};
}