70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
import { readFileSync } from "fs";
|
|
import { PrismaPg } from "@prisma/adapter-pg";
|
|
import { Prisma, PrismaClient } from "../generated/prisma/client";
|
|
import * as msal from "@azure/msal-node";
|
|
import { Server } from "socket.io";
|
|
import { Server as Engine } from "@socket.io/bun-engine";
|
|
import axios from "axios";
|
|
|
|
const connectionString = `${process.env.DATABASE_URL}`;
|
|
const adapter = new PrismaPg({ connectionString });
|
|
|
|
interface EnvKey {
|
|
PORT: number;
|
|
}
|
|
|
|
// ENV CONSTANTS
|
|
|
|
export const PORT = process.env.PORT;
|
|
|
|
export const prisma = new PrismaClient({ adapter });
|
|
|
|
export const sessionDuration = 30 * 24 * 60 * 60000;
|
|
export const accessTokenDuration = "10min";
|
|
export const refreshTokenDuration = "30d";
|
|
|
|
export const accessTokenPrivateKey =
|
|
readFileSync(`.accessToken.key`).toString();
|
|
export const refreshTokenPrivateKey =
|
|
readFileSync(`.refreshToken.key`).toString();
|
|
export const permissionsPrivateKey = readFileSync(`.permissions.key`);
|
|
export const secureValuesPrivateKey =
|
|
readFileSync(`.secureValues.key`).toString();
|
|
export const secureValuesPublicKey = readFileSync(
|
|
`public-keys/.secureValues.pub`,
|
|
).toString();
|
|
|
|
// Microsoft Auth Constants
|
|
const msalConfig: msal.Configuration = {
|
|
auth: {
|
|
clientId: process.env.MICROSOFT_CLIENT_ID!,
|
|
authority: `https://login.microsoftonline.com/${process.env.MICROSOFT_TENANT_ID!}`,
|
|
clientSecret: process.env.MICROSOFT_CLIENT_SECRET!,
|
|
},
|
|
};
|
|
|
|
// MSAL Client Instance
|
|
export const msalClient = new msal.ConfidentialClientApplication(msalConfig);
|
|
|
|
// Socket.io
|
|
|
|
const io = new Server();
|
|
const authIO = io.of("/auth_callback");
|
|
const engine = new Engine();
|
|
|
|
io.bind(engine);
|
|
export { io, engine };
|
|
|
|
// Connectwise API Client
|
|
|
|
const connectWiseApi = axios.create({
|
|
baseURL: `https://ttscw.totaltech.net/v4_6_release/apis/3.0/`,
|
|
headers: {
|
|
Authorization: `Basic ${process.env.CW_BASIC_TOKEN}`,
|
|
clientId: `${process.env.CW_CLIENT_ID}`,
|
|
"Content-Type": "application/json",
|
|
},
|
|
});
|
|
|
|
export { connectWiseApi };
|