import mongoose from "mongoose"; import { queryDB } from "../db/connect"; import { fetchProjectMetadata } from "../api/crud"; import { log } from '../utils/general'; // ! deprecated, moved the db logic to the server export async function verifyAccessToken(token: string): Promise<{ valid: boolean, userName?: string }> { if (process.env.testing === 'true') { if (token === 'abc') { process.env.projectId = '6854eae1511c76a98df4764d'; return { valid: true, userName: "Yash" }; } else { return { valid: false }; } } const validateUser = async (SSO_DB: mongoose.Connection) => { const accessKey = await SSO_DB.db!.collection('access_keys').findOne({ token }); if(!accessKey) { log(`❌ Access key not found for token: ${token}`); return null; } const user_id = accessKey.user_id; const projectId = accessKey.project.toString(); async function fetchUsername(SSO_DB: mongoose.Connection) { const user = await SSO_DB.db!.collection('userdatas').findOne({ user_id }); return user ? user.name : null; } const userName = await fetchUsername(SSO_DB); if (!userName) { log(`❌ User not found for user_id: ${user_id}`); return null; } process.env.username = userName || 'User'; process.env.projectId = projectId; process.env.user_id = user_id; process.env.ACCESS_TOKEN = token; return { valid: true, userName }; } const result = await queryDB(validateUser); if (result) { await fetchProjectMetadata(); if(process.env.isProjectExpired === 'true') { // p.outro(color.red('Your project has expired, please renew your subscription.')); throw new Error('Your project has expired, please renew your subscription.') } return result; } process.env.username = 'Unknown User'; process.env.projectId = ''; log(`❌ Invalid access token: ${token}`); return { valid: false }; }