gateway 구분중
This commit is contained in:
@@ -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,
|
||||
}];
|
||||
}
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
@@ -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;
|
||||
@@ -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
@@ -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
@@ -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 {};
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
Reference in New Issue
Block a user