45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { getMdmStatusByUdid } from "../../../db/mdm";
|
|
import { requireUser } from "../../../utils/auth";
|
|
|
|
/**
|
|
* GET /api/magic/mdm/by-udid?udid=...
|
|
*
|
|
* Looks up the NanoMDM enrollment status for an arbitrary UDID. Useful when a
|
|
* USB-connected iPhone has not yet been linked to a ReBreak user device, e.g.
|
|
* to show whether it is already enrolled in ReBreak Cloud.
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
await requireUser(event);
|
|
const query = getQuery(event);
|
|
const udid = query.udid;
|
|
|
|
if (!udid || typeof udid !== "string") {
|
|
throw createError({
|
|
statusCode: 400,
|
|
data: { error: "udid_required" },
|
|
});
|
|
}
|
|
|
|
let status: Awaited<ReturnType<typeof getMdmStatusByUdid>>;
|
|
try {
|
|
status = await getMdmStatusByUdid(udid);
|
|
} catch (err: any) {
|
|
console.error("[MDM] NanoMDM DB query failed:", err);
|
|
throw createError({
|
|
statusCode: 503,
|
|
message: "mdm_db_unreachable",
|
|
data: { code: "mdm_db_unreachable" },
|
|
});
|
|
}
|
|
|
|
return {
|
|
success: true,
|
|
data: {
|
|
enrolled: status.enrolled,
|
|
company: status.company,
|
|
supervised: status.supervised,
|
|
lastAppPushAt: status.lastAppPushAt?.toISOString() ?? null,
|
|
},
|
|
};
|
|
});
|