import express from 'express'; import dotenv from 'dotenv'; import { RegisterNewUser, GetUserFromEmail, GetUserFromPubkey, GetKeypairFromEmail, Authneticate, CreateNewRequest, SetRequestResult } from './database.js'; import { verifyFirebaseToken } from './firebase.js'; dotenv.config(); const app = express(); import cors from 'cors'; app.use(cors()); app.use((err,req,res,next)=>{ console.error(err.stack); res.status(500).send("Something went wrong!"); }) //---------------------------------------------------------------------------------------------------------------------------------------------------------------- app.get("/registerv1", async (req,res)=>{ const {email, password} = req.query; if(!email || !password){ res.status(403).json({error: "Missing credentials"}); return; } const newUser = await RegisterNewUser(email,password); if(!newUser){ res.status(403).json({error: "Email exists"}); } res.status(201).json(newUser); }) app.get("/register", async (req,res)=>{ const {tokenId} = req.query; if(!tokenId){ res.status(403).json({error: "Missing tokenId"}); return; } const user = await verifyFirebaseToken(tokenId); if(!user){ res.status(403).json({error:"Invalid tokenId. Auth failed"}); return; } const newUser = await RegisterNewUser(user.uid,user.uid); if(!newUser){ res.status(403).json({error: "User exists"}); } res.status(201).json(newUser); }) app.get("/login", async(req,res)=>{ const {tokenId} = req.query; if(!tokenId){ res.status(403).json({error:"Missing tokenId"}) return; } const fuser = await verifyFirebaseToken(tokenId); if(!fuser){ res.status(403).json({error:"Invalid tokenId. Auth failed"}); return; } const email = fuser.uid; if(email){ const user = await GetUserFromEmail(email); if(user){ res.status(200).json(user); }else{ res.status(404).json({error:"User couldnt be found"}) } } }) app.get("/authenticate", async(req,res)=>{ const {email, password} = req.query; if(!email || !password){ res.status(403).json({error:"Credentials missing"}) return; } const authResult = await Authneticate(email,password); if(authResult){ res.status(200).json({authenticated: true}) }else{ res.status(403).json({authenticated: false}) } }) app.get("/getKeypairWithToken", async(req,res)=>{ const {tokenId} = req.query; if(!tokenId){ res.status(403).json({error:"tokenId missing"}) return; } const fuser = await verifyFirebaseToken(tokenId); if(!fuser){ res.status(403).json({error:"Invalid tokenId. Auth failed"}); return; } const user = await GetKeypairFromEmail(fuser.uid); res.status(200).json(user); }) app.get("/getPubkey", async(req,res)=>{ const {email}= req.query; if(!email){ res.status(403).json({error: "Missing credentials"}); return; } const user = await GetUserFromEmail(email); res.status(200).json(user); }) app.get("/getKeypair", async(req,res)=>{ const {email, apiKey}= req.query; if(!email || !apiKey){ res.status(403).json({error: "Missing credentials"}); return; } if(apiKey!= process.env.API_KEY){ res.status(403).json({error: `Invalid Api Key`}); console.log(`Provided api key: ${apiKey}`); console.log(`Correcte api key: ${process.env.API_KEY}`); return; } const user = await GetKeypairFromEmail(email); res.status(200).json(user); }) app.get("/firebaseAuth", async (req,res)=>{ const {tokenId} = req.query; if(!tokenId){ res.status(403).json({error: "Invalid tokenID"}); return; } const user = await verifyFirebaseToken(tokenId); if(user){ res.status(200).json({status:"Success", user: user}); }else{ res.status(403).json({status:"Failed", user:null}); } }) app.get("/createNewRequest", async(req,res)=>{ const id = await CreateNewRequest(); res.status(200).json({id:id}); }) app.get("/completeRequest", async(req,res)=>{ const {id,result}=req.query; if(!id || !result){ res.status(403).json({error:"Missing parameters, need id and result"}); return; } await SetRequestResult(id,result); res.status(200).json({status:"Success"}); }) app.get("/status", async(req,res)=>{ res.status(200).json({status:"Running"}); }) //---------------------------------------------------------------------------------------------------------------------------------------------------------------- app.listen(process.env.EXPRESS_PORT, ()=>{ console.log(`Server is listening on Port ${process.env.EXPRESS_PORT}`); })