diff --git a/apps/pwa/package.json b/apps/pwa/package.json index ab5eb799..2874c9db 100644 --- a/apps/pwa/package.json +++ b/apps/pwa/package.json @@ -16,7 +16,7 @@ "@profullstack/key-rotation": "0.1.0", "@profullstack/footer": "latest", "@profullstack/libsql-pg": "^0.1.4", - "@profullstack/profile": "0.1.6", + "@profullstack/profile": "0.1.7", "@simplewebauthn/browser": "^14.0.0", "@simplewebauthn/server": "^14.0.3", "cookie-parser": "^1.4.7", diff --git a/apps/pwa/src/routes/coinpay.mjs b/apps/pwa/src/routes/coinpay.mjs index 0e4add15..de76b022 100644 --- a/apps/pwa/src/routes/coinpay.mjs +++ b/apps/pwa/src/routes/coinpay.mjs @@ -5,6 +5,8 @@ import { config } from "../config.mjs"; import { token } from "../lib/crypto.mjs"; import { createSession, setCeremony, getCeremony, clearCeremony, takeNext } from "../lib/session.mjs"; import { userByCoinpay, createUserForCoinpay } from "../lib/users.mjs"; +import { profiles } from "../lib/profile.mjs"; +import { saveOpenProfileContact } from "@profullstack/profile"; export const coinpayRouter = Router(); @@ -59,6 +61,13 @@ coinpayRouter.get("/auth/coinpay/callback", async (req, res) => { let user = await userByCoinpay(sub); if (!user) user = await createUserForCoinpay(sub, info.name || info.username); + if (typeof info.openprofile_url === "string") { + try { + await saveOpenProfileContact(profiles, String(user.id), info.openprofile_url); + } catch (e) { + console.warn("[coinpay] OpenProfile import skipped:", e instanceof Error ? e.message : e); + } + } await createSession(res, user.id); res.redirect(takeNext(req, res) || "/"); } catch (e) { diff --git a/apps/pwa/src/routes/pages.mjs b/apps/pwa/src/routes/pages.mjs index 4a888554..8c90625f 100644 --- a/apps/pwa/src/routes/pages.mjs +++ b/apps/pwa/src/routes/pages.mjs @@ -336,10 +336,11 @@ pagesRouter.get("/settings", requireAuth, async (req, res) => {
A person key acts as you; logicsrc login makes one for you. A machine key is for a deploy box or CI: one team, the vaults you list, read-only unless you say otherwise, its own identity key. After the box runs one command with it, grant it a vault from the vault page or with logicsrc teams grant <team> <project> <env> --key <name>.