gateway 구분중

This commit is contained in:
2023-08-18 16:20:10 +00:00
parent 87c239610a
commit 635d7f167d
8 changed files with 89 additions and 11 deletions
+33
View File
@@ -0,0 +1,33 @@
import type { GatewayActionType, ServerActionType } from "../schema/gateway/User.js";
import type { SessionCtx } from "./StartSession.js";
import type { ProcDecorator } from "./base.js";
export type GatewayLoginCtx = {
userID: number;
userName: string;
userLevel: number;
allowServerAction: Map<string, Set<ServerActionType>>;
allowGatewayAction: Set<GatewayActionType>;
loginDate: Date;
}
export const loginCtxSessionKey = 'loginCtx';
export function ReqGatewayLogin<Q extends SessionCtx>(): ProcDecorator<GatewayLoginCtx & Q, Q> {
return (ctx) => {
const loginCtx = ctx.session.getItem<GatewayLoginCtx>(loginCtxSessionKey);
if(!loginCtx){
return [{
result: false,
type: 'Required Login',
info: 'ReqLogin'
}, ctx];
}
return [{
result: true,
},{
...loginCtx,
...ctx,
}];
}
}
+2 -1
View File
@@ -1,3 +1,4 @@
import { ServerActionType } from "../schema/gateway/User.js";
import type { SessionCtx } from "./StartSession.js";
import type { ProcDecorator } from "./base.js";
@@ -5,7 +6,7 @@ export type LoginCtx = {
userID: number;
userName: string;
userLevel: number;
allowServerAction: Record<string, number>;
allowServerAction: Set<ServerActionType>;
loginDate: Date;
}
export const loginCtxSessionKey = 'loginCtx';
+22
View File
@@ -0,0 +1,22 @@
import 'dotenv/config';
import { connect, Mongoose } from "mongoose";
import { unwrap } from './util/unwrap.js';
const dbConfig = {
host: unwrap(process.env.GAME_DB_HOST),
port: Number(unwrap(process.env.GAME_DB_PORT)),
user: unwrap(process.env.GAME_DB_USER),
password: unwrap(process.env.GAME_DB_PASSWORD),
database: unwrap(process.env.GAME_DB_DATABASE),
}
const db: Promise<Mongoose> = (async () => {
return await connect(`mongodb://${dbConfig.host}:${dbConfig.port}/${dbConfig.database}`, {
auth:{
username: dbConfig.user,
password: dbConfig.password,
}
});
})();
export default db;
+22
View File
@@ -0,0 +1,22 @@
import 'dotenv/config';
import { connect, Mongoose } from "mongoose";
import { unwrap } from './util/unwrap.js';
const dbConfig = {
host: unwrap(process.env.GATEWAY_DB_HOST),
port: Number(unwrap(process.env.GATEWAY_DB_PORT)),
user: unwrap(process.env.GATEWAY_DB_USER),
password: unwrap(process.env.GATEWAY_DB_PASSWORD),
database: unwrap(process.env.GATEWAY_DB_DATABASE),
}
const gatewayDB: Promise<Mongoose> = (async () => {
return await connect(`mongodb://${dbConfig.host}:${dbConfig.port}/${dbConfig.database}`, {
auth:{
username: dbConfig.user,
password: dbConfig.password,
}
});
})();
export default gatewayDB;
+3 -3
View File
@@ -1,5 +1,5 @@
import 'dotenv/config';
import 'reflect-metadata';
import gatewayDB from './connectGatewayDB.js';
import express, { type Request, type Response } from "express"
import session from "express-session";
import path from 'node:path';
@@ -14,7 +14,7 @@ import { gatewayConfig } from './gatewayConfig.js';
(async () => {
gatewayDB.then(async (gatewayDB) => {
// create express app
const app = express()
app.use(express.json());
@@ -32,6 +32,6 @@ import { gatewayConfig } from './gatewayConfig.js';
console.log(`Gateway server has started on port ${gatewayConfig.port}`)
})().catch(error => console.log(error));
}).catch(error => console.log(error));
export default {};
+3 -3
View File
@@ -1,5 +1,5 @@
import 'reflect-metadata';
import connectDB from './connectDB.js';
import express, { type Request, type Response } from "express"
import session from "express-session";
import path from 'node:path';
@@ -10,7 +10,7 @@ import { unwrap } from './util/unwrap.js';
import { sammoAPI } from './api/api.js';
import { ownConfig } from './serverConfig.js';
(async () => {
connectDB.then(async (db) => {
// create express app
const app = express()
app.use(express.json());
@@ -28,6 +28,6 @@ import { ownConfig } from './serverConfig.js';
console.log(`Express server has started on port ${ownConfig.port}`)
})().catch(error => console.log(error));
}).catch(error => console.log(error));
export default {};
+2 -2
View File
@@ -1,5 +1,5 @@
import { type UserIDType } from "./User.js";
import { Schema, model } from "mongoose";
import { Mongoose, Schema, model } from "mongoose";
export interface ILoginToken {
userID: UserIDType;
@@ -20,4 +20,4 @@ export const LoginToken = new Schema<ILoginToken>({
.index({ validUntil: 1 }, { expireAfterSeconds: 1 })
;
export default model<ILoginToken>('LoginToken', LoginToken);
export default (conn: Mongoose)=>conn.model<ILoginToken>('LoginToken', LoginToken);
+2 -2
View File
@@ -1,4 +1,4 @@
import { Schema, model } from "mongoose";
import { Mongoose, Schema, model } from "mongoose";
export interface IServerConfig {
allowLogin: boolean;
@@ -20,4 +20,4 @@ export const ServerConfig = new Schema<IServerConfig>({
;
//단일 document로 관리
export default model<IServerConfig>('ServerConfig', ServerConfig);
export default (conn:Mongoose)=>conn.model<IServerConfig>('ServerConfig', ServerConfig);