feat(backend): include status, cooldownUntil, lastSeenAt and sleep flag
This commit is contained in:
parent
4ee6849f3f
commit
97977011ae
@ -43,6 +43,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
listProtectedDevices(user.id),
|
listProtectedDevices(user.id),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
const now = new Date();
|
||||||
const magicItems = magic.map((d) => {
|
const magicItems = magic.map((d) => {
|
||||||
let releaseAvailableAt: string | null = null;
|
let releaseAvailableAt: string | null = null;
|
||||||
if (d.releaseRequestedAt) {
|
if (d.releaseRequestedAt) {
|
||||||
@ -50,15 +51,28 @@ export default defineEventHandler(async (event) => {
|
|||||||
d.releaseRequestedAt.getTime() + 24 * 60 * 60 * 1000,
|
d.releaseRequestedAt.getTime() + 24 * 60 * 60 * 1000,
|
||||||
).toISOString();
|
).toISOString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const inCooldown = d.magicCooldownUntil && d.magicCooldownUntil > now;
|
||||||
|
const status = d.magicRevokedAt
|
||||||
|
? "revoked"
|
||||||
|
: inCooldown
|
||||||
|
? "cooldown"
|
||||||
|
: d.magicEnrolledAt
|
||||||
|
? "active"
|
||||||
|
: "pending";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
source: "magic" as const,
|
source: "magic" as const,
|
||||||
deviceId: d.deviceId,
|
deviceId: d.deviceId,
|
||||||
hostname: d.hostname ?? "Unbenanntes Ger\u00e4t",
|
hostname: d.hostname ?? "Unbenanntes Ger\u00e4t",
|
||||||
model: d.model,
|
model: d.model,
|
||||||
osVersion: d.osVersion,
|
osVersion: d.osVersion,
|
||||||
magicEnrolledAt: d.magicEnrolledAt.toISOString(),
|
magicEnrolledAt: d.magicEnrolledAt?.toISOString() ?? null,
|
||||||
releaseRequestedAt: d.releaseRequestedAt?.toISOString() ?? null,
|
releaseRequestedAt: d.releaseRequestedAt?.toISOString() ?? null,
|
||||||
releaseAvailableAt,
|
releaseAvailableAt,
|
||||||
|
cooldownUntil: d.magicCooldownUntil?.toISOString() ?? null,
|
||||||
|
status,
|
||||||
|
lastSeenAt: d.lastSeenAt?.toISOString() ?? null,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -78,6 +92,9 @@ export default defineEventHandler(async (event) => {
|
|||||||
magicEnrolledAt: d.lastSeenAt.toISOString(),
|
magicEnrolledAt: d.lastSeenAt.toISOString(),
|
||||||
releaseRequestedAt: d.releaseRequestedAt?.toISOString() ?? null,
|
releaseRequestedAt: d.releaseRequestedAt?.toISOString() ?? null,
|
||||||
releaseAvailableAt,
|
releaseAvailableAt,
|
||||||
|
status: "active" as const,
|
||||||
|
lastSeenAt: d.lastSeenAt?.toISOString() ?? null,
|
||||||
|
cooldownUntil: null,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -121,6 +138,9 @@ export default defineEventHandler(async (event) => {
|
|||||||
magicEnrolledAt: (d.installedAt ?? d.createdAt).toISOString(),
|
magicEnrolledAt: (d.installedAt ?? d.createdAt).toISOString(),
|
||||||
releaseRequestedAt: null as string | null,
|
releaseRequestedAt: null as string | null,
|
||||||
releaseAvailableAt: null as string | null,
|
releaseAvailableAt: null as string | null,
|
||||||
|
status: "active" as const,
|
||||||
|
lastSeenAt: null,
|
||||||
|
cooldownUntil: null,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -27,10 +27,23 @@ export default defineEventHandler(async (event) => {
|
|||||||
|
|
||||||
const device = await findMagicDeviceByToken(token);
|
const device = await findMagicDeviceByToken(token);
|
||||||
|
|
||||||
|
if (!device) {
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
data: {
|
||||||
|
active: false,
|
||||||
|
sleep: false,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const inCooldown = device.magicCooldownUntil && device.magicCooldownUntil > new Date();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
success: true,
|
success: true,
|
||||||
data: {
|
data: {
|
||||||
active: device !== null,
|
active: !device.magicRevokedAt && !!device.magicEnrolledAt,
|
||||||
|
sleep: !!inCooldown,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@ -423,6 +423,9 @@ export interface MagicDeviceRecord {
|
|||||||
osVersion: string | null;
|
osVersion: string | null;
|
||||||
magicEnrolledAt: Date;
|
magicEnrolledAt: Date;
|
||||||
releaseRequestedAt: Date | null;
|
releaseRequestedAt: Date | null;
|
||||||
|
magicRevokedAt: Date | null;
|
||||||
|
magicCooldownUntil: Date | null;
|
||||||
|
lastSeenAt: Date | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -447,6 +450,9 @@ export async function listMagicDevices(
|
|||||||
osVersion: true,
|
osVersion: true,
|
||||||
magicEnrolledAt: true,
|
magicEnrolledAt: true,
|
||||||
releaseRequestedAt: true,
|
releaseRequestedAt: true,
|
||||||
|
magicRevokedAt: true,
|
||||||
|
magicCooldownUntil: true,
|
||||||
|
lastSeenAt: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -457,6 +463,9 @@ export async function listMagicDevices(
|
|||||||
osVersion: d.osVersion,
|
osVersion: d.osVersion,
|
||||||
magicEnrolledAt: d.magicEnrolledAt!,
|
magicEnrolledAt: d.magicEnrolledAt!,
|
||||||
releaseRequestedAt: d.releaseRequestedAt,
|
releaseRequestedAt: d.releaseRequestedAt,
|
||||||
|
magicRevokedAt: d.magicRevokedAt,
|
||||||
|
magicCooldownUntil: d.magicCooldownUntil,
|
||||||
|
lastSeenAt: d.lastSeenAt,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,6 +493,9 @@ export async function findMagicDeviceByToken(
|
|||||||
): Promise<
|
): Promise<
|
||||||
| (DeviceRecord & {
|
| (DeviceRecord & {
|
||||||
magicDnsToken: string;
|
magicDnsToken: string;
|
||||||
|
magicEnrolledAt: Date | null;
|
||||||
|
magicRevokedAt: Date | null;
|
||||||
|
magicCooldownUntil: Date | null;
|
||||||
magicRemovalPassword: string | null;
|
magicRemovalPassword: string | null;
|
||||||
})
|
})
|
||||||
| null
|
| null
|
||||||
@ -498,6 +510,7 @@ export async function findMagicDeviceByToken(
|
|||||||
magicDnsToken: true,
|
magicDnsToken: true,
|
||||||
magicEnrolledAt: true,
|
magicEnrolledAt: true,
|
||||||
magicRevokedAt: true,
|
magicRevokedAt: true,
|
||||||
|
magicCooldownUntil: true,
|
||||||
magicHostname: true,
|
magicHostname: true,
|
||||||
magicRemovalPassword: true,
|
magicRemovalPassword: true,
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user