Skip to content

Instantly share code, notes, and snippets.

View kingsley-einstein's full-sized avatar
🏠
Working from home

Kingsley Victor kingsley-einstein

🏠
Working from home
View GitHub Profile
did:3:kjzl6cwe1jw14aolsoc0cc6l8n463w9qxm0d33ofk8a2vho55vzg7nht9x7hyhs
import express from "express";
import debug from "debug";
import config from "./config";
const app: express.Application = express();
const log = debug("logging");
config(app);
app.listen(4000, () => log("Express server running on 4000"));
import express from "express";
import { logger } from "../middlewares";
import router from "../router";
export default (app) => {
app.use(express.json());
app.use(logger);
app.use(router);
};
import debug from "debug";
const log = debug("logging");
export const logger = (req: any, res: any, next: any) {
log(`${req.path} +++++++++++++++++++ ${res.statusCode}`);
next();
}
export class ErrorResponse extends Error {
c: number;
constructor(c: number, message: string) {
super(message);
this.c = c;
}
}
import { Router } from "express";
import { UserController } from "../controllers";
import { Auth } from "../middlewares";
const router = Router();
router.post("/register", UserController.register);
router.post("/login", UserController.login);
router.get("/logged_user", Auth.checkToken, UserController.getLoggedUser);
router.get("/logout", Auth.checkToken, UserController.logout);
import jwt from "jsonwebtoken";
import { User, Session } from "../db";
export class Auth {
static async checkToken(req: any, res: any, next: any) {
try {
const { authorization } = req.headers;
// Throw error if authorization header is not present in the request
if (!authorization)
import express from "express";
import jwt from "jsonwebtoken";
import bcrypt from "bcryptjs";
import { v4 as uuid } from "uuid";
import { User, Session } from "../db";
import { ErrorResponse } from "../custom";
export class UserController {
static async register(req: express.Request, res: express.Response) {
try {
import { AuthModel } from "./auth";
import { SessionModel } from "./session";
export const User = new AuthModel();
export const Session = new SessionModel();
import mongoose from "mongoose";
export class SessionModel {
model: mongoose.Model<mongoose.Document, {}>;
constructor() {
this.define();
}
private define() {
this.model = mongoose.model("Session", new mongoose.Schema({