aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/otpsecret/+server.js
blob: 63d0684966d9709ab76c8c2631167a4bcde76541 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { auth, post } from "$lib/utils";
import Qr from "qrcode-base64";
import { error } from "@sveltejs/kit";

export async function POST({ cookies, request }) {
  try {
    let body = await request.json();
    let { username, secret } = await post("/otpsecret", body, auth(cookies));
    let uri = `otpauth://totp/coinos:${username}?secret=${secret}&period=30&digits=6&algorithm=SHA1&issuer=coinos`;
    return new Response(
      JSON.stringify({ secret, uri, qr: Qr.drawImg(uri, { size: 600 }) })
    );
  } catch (e) {
    if (e.message.includes("pin")) throw e;
    throw new error(500, "Problem saving secret");
  }
}