Path: blob/master/src/packages/database/postgres/central-log.ts
1503 views
import getPool from "@cocalc/database/pool";1import { pii_expire } from "./pii";2import { uuid } from "@cocalc/util/misc";34// log events, which contain personal information (email, account_id, ...)5const PII_EVENTS = new Set([6"create_account",7"change_password",8"change_email_address",9"webapp-add_passport",10"get_user_auth_token",11"successful_sign_in",12"webapp-email_sign_up",13"create_account_registration_token",14]);1516export default async function centralLog({17event,18value,19}: {20event: string;21value: object;22}) {23const pool = getPool();2425let expire;26if (value["ip_address"] || value["email_address"] || PII_EVENTS.has(event)) {27const date = await pii_expire();28if (date == null) {29expire = "NOW() + INTERVAL '6 MONTHS'";30} else {31expire = `NOW() + INTERVAL '${(date.valueOf() - Date.now()) / 1000} seconds'`;32}33} else if (event == "uncaught_exception") {34expire = "NOW() + INTERVAL '1 MONTH'";35} else {36expire = "NOW() + INTERVAL '1 YEAR'";37}38await pool.query(39`INSERT INTO central_log(id,event,value,time,expire) VALUES($1,$2,$3,NOW(),${expire})`,40[uuid(), event, value],41);42}434445