diff --git a/.env.example b/.env.example index 1214e8b..a7dde40 100644 --- a/.env.example +++ b/.env.example @@ -1,17 +1,17 @@ # Server -PORT=7001 +FABRIC_BACKEND_CENTER_PORT=7001 # MySQL -DB_HOST=mysql-center -DB_PORT=3306 -DB_USER=fabric -DB_PASSWORD=fabric -DB_NAME=fabric_center -DB_SYNC=true -DB_LOGGING=false +FABRIC_BACKEND_CENTER_DB_HOST=mysql-center +FABRIC_BACKEND_CENTER_DB_PORT=3306 +FABRIC_BACKEND_CENTER_DB_USER=fabric +FABRIC_BACKEND_CENTER_DB_PASSWORD=fabric +FABRIC_BACKEND_CENTER_DB_NAME=fabric_center +FABRIC_BACKEND_CENTER_DB_SYNC=true +FABRIC_BACKEND_CENTER_DB_LOGGING=false # Auth (to be used in auth module) -JWT_ACCESS_SECRET=change-me-access -JWT_REFRESH_SECRET=change-me-refresh -JWT_ACCESS_EXPIRES_IN=15m -JWT_REFRESH_EXPIRES_IN=30d +FABRIC_BACKEND_CENTER_JWT_ACCESS_SECRET=change-me-access +FABRIC_BACKEND_CENTER_JWT_REFRESH_SECRET=change-me-refresh +FABRIC_BACKEND_CENTER_JWT_ACCESS_EXPIRES_IN=15m +FABRIC_BACKEND_CENTER_JWT_REFRESH_EXPIRES_IN=30d diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts index 859208e..81e803d 100644 --- a/src/auth/auth.service.ts +++ b/src/auth/auth.service.ts @@ -16,20 +16,20 @@ import { AuditService } from '../audit/audit.service'; import { parseDurationToSeconds } from './token.util'; function signAccessToken(userId: string, email: string): string { - const secret = process.env.JWT_ACCESS_SECRET as string; - const expiresIn = parseDurationToSeconds(process.env.JWT_ACCESS_EXPIRES_IN ?? '15m', 900); + const secret = process.env.FABRIC_BACKEND_CENTER_JWT_ACCESS_SECRET as string; + const expiresIn = parseDurationToSeconds(process.env.FABRIC_BACKEND_CENTER_JWT_ACCESS_EXPIRES_IN ?? '15m', 900); return jwt.sign({ sub: userId, email }, secret, { expiresIn }); } function signRefreshToken(userId: string, email: string): string { - const secret = process.env.JWT_REFRESH_SECRET as string; - const expiresIn = parseDurationToSeconds(process.env.JWT_REFRESH_EXPIRES_IN ?? '30d', 2592000); + const secret = process.env.FABRIC_BACKEND_CENTER_JWT_REFRESH_SECRET as string; + const expiresIn = parseDurationToSeconds(process.env.FABRIC_BACKEND_CENTER_JWT_REFRESH_EXPIRES_IN ?? '30d', 2592000); return jwt.sign({ sub: userId, email, typ: 'refresh' }, secret, { expiresIn }); } function signGuildAccessToken(userId: string, email: string, guildNodeId: string): string { - const secret = process.env.JWT_ACCESS_SECRET as string; - const expiresIn = parseDurationToSeconds(process.env.JWT_ACCESS_EXPIRES_IN ?? '15m', 900); + const secret = process.env.FABRIC_BACKEND_CENTER_JWT_ACCESS_SECRET as string; + const expiresIn = parseDurationToSeconds(process.env.FABRIC_BACKEND_CENTER_JWT_ACCESS_EXPIRES_IN ?? '15m', 900); return jwt.sign({ sub: userId, email, gid: guildNodeId, typ: 'guild_access' }, secret, { expiresIn }); } @@ -166,7 +166,7 @@ export class AuthService { verifyCenterAccessToken(accessToken: string): jwt.JwtPayload { try { - const payload = jwt.verify(accessToken, process.env.JWT_ACCESS_SECRET as string) as jwt.JwtPayload; + const payload = jwt.verify(accessToken, process.env.FABRIC_BACKEND_CENTER_JWT_ACCESS_SECRET as string) as jwt.JwtPayload; if (!payload?.sub) throw new Error('invalid'); return payload; } catch { @@ -177,7 +177,7 @@ export class AuthService { async introspectGuildToken(token: string, guildNodeId: string) { let payload: jwt.JwtPayload; try { - payload = jwt.verify(token, process.env.JWT_ACCESS_SECRET as string) as jwt.JwtPayload; + payload = jwt.verify(token, process.env.FABRIC_BACKEND_CENTER_JWT_ACCESS_SECRET as string) as jwt.JwtPayload; } catch { return { active: false }; } @@ -206,7 +206,7 @@ export class AuthService { async refresh(refreshToken: string) { let payload: jwt.JwtPayload; try { - payload = jwt.verify(refreshToken, process.env.JWT_REFRESH_SECRET as string) as jwt.JwtPayload; + payload = jwt.verify(refreshToken, process.env.FABRIC_BACKEND_CENTER_JWT_REFRESH_SECRET as string) as jwt.JwtPayload; } catch { throw new UnauthorizedException('invalid refresh token'); } @@ -243,7 +243,7 @@ export class AuthService { async logout(refreshToken: string) { let payload: jwt.JwtPayload; try { - payload = jwt.verify(refreshToken, process.env.JWT_REFRESH_SECRET as string) as jwt.JwtPayload; + payload = jwt.verify(refreshToken, process.env.FABRIC_BACKEND_CENTER_JWT_REFRESH_SECRET as string) as jwt.JwtPayload; } catch { return { status: 'ok' }; } diff --git a/src/database.config.ts b/src/database.config.ts index a11ccb6..05d9ce4 100644 --- a/src/database.config.ts +++ b/src/database.config.ts @@ -6,12 +6,12 @@ import { GuildUser } from './entities/guild-user.entity'; export const buildTypeOrmConfig = (): TypeOrmModuleOptions => ({ type: 'mysql', - host: process.env.DB_HOST ?? 'mysql-center', - port: Number(process.env.DB_PORT ?? 3306), - username: process.env.DB_USER ?? 'fabric', - password: process.env.DB_PASSWORD ?? 'fabric', - database: process.env.DB_NAME ?? 'fabric_center', + host: process.env.FABRIC_BACKEND_CENTER_DB_HOST ?? 'mysql-center', + port: Number(process.env.FABRIC_BACKEND_CENTER_DB_PORT ?? 3306), + username: process.env.FABRIC_BACKEND_CENTER_DB_USER ?? 'fabric', + password: process.env.FABRIC_BACKEND_CENTER_DB_PASSWORD ?? 'fabric', + database: process.env.FABRIC_BACKEND_CENTER_DB_NAME ?? 'fabric_center', entities: [User, GuildNode, GuildUser, AuditLog], - synchronize: (process.env.DB_SYNC ?? 'true') === 'true', - logging: (process.env.DB_LOGGING ?? 'false') === 'true', + synchronize: (process.env.FABRIC_BACKEND_CENTER_DB_SYNC ?? 'true') === 'true', + logging: (process.env.FABRIC_BACKEND_CENTER_DB_LOGGING ?? 'false') === 'true', }); diff --git a/src/main.ts b/src/main.ts index 7776e11..b037a0b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -15,13 +15,13 @@ function requireEnv(name: string): string { } function validateEnv(): void { - requireEnv('DB_HOST'); - requireEnv('DB_PORT'); - requireEnv('DB_USER'); - requireEnv('DB_PASSWORD'); - requireEnv('DB_NAME'); - requireEnv('JWT_ACCESS_SECRET'); - requireEnv('JWT_REFRESH_SECRET'); + requireEnv('FABRIC_BACKEND_CENTER_DB_HOST'); + requireEnv('FABRIC_BACKEND_CENTER_DB_PORT'); + requireEnv('FABRIC_BACKEND_CENTER_DB_USER'); + requireEnv('FABRIC_BACKEND_CENTER_DB_PASSWORD'); + requireEnv('FABRIC_BACKEND_CENTER_DB_NAME'); + requireEnv('FABRIC_BACKEND_CENTER_JWT_ACCESS_SECRET'); + requireEnv('FABRIC_BACKEND_CENTER_JWT_REFRESH_SECRET'); } async function bootstrap() { @@ -47,7 +47,7 @@ async function bootstrap() { const swaggerDoc = SwaggerModule.createDocument(app, swaggerConfig); SwaggerModule.setup('docs', app, swaggerDoc); - const port = process.env.PORT ? Number(process.env.PORT) : 7001; + const port = process.env.FABRIC_BACKEND_CENTER_PORT ? Number(process.env.FABRIC_BACKEND_CENTER_PORT) : 7001; await app.listen(port); console.log(`Fabric.Backend.Center listening on :${port}`); }