backend done
This commit is contained in:
32
backend/src/controllers/post.ts
Normal file
32
backend/src/controllers/post.ts
Normal 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();
|
||||
35
backend/src/controllers/user.ts
Normal file
35
backend/src/controllers/user.ts
Normal 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();
|
||||
Reference in New Issue
Block a user