backend done

This commit is contained in:
2025-01-25 16:46:31 +03:00
parent e30649ef14
commit b82c2dc1d6
18 changed files with 3937 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
import { Request, Response } from "express";
import { AppDataSource } from "../data-source";
import { Post } from "../entity/Post";
class PostController {
async create(req: Request, res: Response): Promise<void> {
const post = res.locals.post;
AppDataSource.manager.save(post);
res.status(200).send("Ok");
}
async update(req: Request, res: Response): Promise<void> {
const { postId } = req.params;
const post = res.locals.post;
AppDataSource.manager.update(Post, { id: postId }, post);
res.status(200).send("Ok");
}
async delete(req: Request, res: Response): Promise<void> {
const { postId } = req.params;
AppDataSource.manager.delete(Post, { id: postId });
res.status(200).send("Ok");
}
}
export default new PostController();

View File

@@ -0,0 +1,35 @@
import { Request, Response } from "express";
import { compareSync, genSaltSync, hashSync } from "bcrypt-ts";
import jwt from 'jsonwebtoken';
import { AppDataSource } from '../data-source';
import { User } from "../entity/User";
class UserController {
async register(req: Request, res: Response): Promise<void> {
const { username, password } = req.body;
const user = new User();
user.username = username;
user.password_hash = hashSync(password, genSaltSync(10));
const userId = (await AppDataSource.manager.save(user)).id;
res.cookie("jwt", jwt.sign({ username, id: userId }, process.env.JWT_SECRET));
res.status(200).redirect("/");
}
async login(req: Request, res: Response): Promise<void> {
const { username, password } = req.body;
let savedUser = (await AppDataSource.manager.findOneBy(User, { username }));
if (!compareSync(password, savedUser.password_hash)) {
res.status(401).send("Incorrect password");
return;
}
res.cookie("jwt", jwt.sign({ username, id: savedUser.id }, process.env.JWT_SECRET));
res.status(200).redirect("/");
}
}
export default new UserController();