@@ -58,7 +83,7 @@ function App() {
Movie list
- {movies.map(movie => {
+ {movies.map((movie) => {
return (
-
{movie.title}
diff --git a/src/server/controllers/movie.js b/src/server/controllers/movie.js
index d4733b61..8a21cb07 100644
--- a/src/server/controllers/movie.js
+++ b/src/server/controllers/movie.js
@@ -1,31 +1,38 @@
-import jwt from 'jsonwebtoken';
-import { PrismaClient } from '@prisma/client'
+import jwt from "jsonwebtoken";
+import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
-const jwtSecret = 'mysecret';
+const jwtSecret = "mysecret";
const getAllMovies = async (req, res) => {
- const movies = await prisma.movie.findMany();
+ const movies = await prisma.movie.findMany();
- res.json({ data: movies });
+ res.json({ data: movies });
};
const createMovie = async (req, res) => {
- const { title, description, runtimeMins } = req.body;
-
- try {
- const token = null;
- // todo verify the token
- } catch (e) {
- return res.status(401).json({ error: 'Invalid token provided.' })
- }
-
- const createdMovie = null;
-
- res.json({ data: createdMovie });
+ const { title, description, runtimeMins } = req.body;
+ try {
+ const token = req.headers.authentication;
+ // todo verify the token
+ jwt.verify(token, jwtSecret);
+ } catch (e) {
+ return res.status(401).json({ error: "Invalid token provided." });
+ }
+ try {
+ const createdMovie = await prisma.movie.create({
+ data: {
+ title: title,
+ description: description,
+ runtimeMins: runtimeMins,
+ },
+ });
+ console.log(createdMovie);
+ res.json("Movie created successfully");
+ } catch (e) {
+ console.log("Movie already exists");
+ res.json("Movie already exists");
+ }
};
-export {
- getAllMovies,
- createMovie
-};
+export { getAllMovies, createMovie };
diff --git a/src/server/controllers/user.js b/src/server/controllers/user.js
index 05db4183..507666d7 100644
--- a/src/server/controllers/user.js
+++ b/src/server/controllers/user.js
@@ -1,39 +1,49 @@
-import bcrypt from 'bcrypt';
-import jwt from 'jsonwebtoken';
-import { PrismaClient } from '@prisma/client'
+import bcrypt from "bcrypt";
+import jwt from "jsonwebtoken";
+import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
-const jwtSecret = 'mysecret';
+const jwtSecret = "mysecret";
const register = async (req, res) => {
+ try {
const { username, password } = req.body;
- const createdUser = null;
+ const cryptHash = await bcrypt.hash(password, 10);
- res.json({ data: createdUser });
+ const createdUser = await prisma.user.create({
+ data: {
+ username: username,
+ password: cryptHash,
+ },
+ });
+
+ res.status(201).json("User created successfully");
+ } catch {
+ res.status(409).json("User already exists");
+ }
};
const login = async (req, res) => {
- const { username, password } = req.body;
+ const { username, password } = req.body;
- const foundUser = null;
+ const foundUser = await prisma.user.findUnique({
+ where: { username: username },
+ });
- if (!foundUser) {
- return res.status(401).json({ error: 'Invalid username or password.' });
- }
+ if (!foundUser) {
+ return res.status(401).json({ error: "Invalid username." });
+ }
- const passwordsMatch = false;
+ const passwordsMatch = await bcrypt.compare(password, foundUser.password);
- if (!passwordsMatch) {
- return res.status(401).json({ error: 'Invalid username or password.' });
- }
+ if (!passwordsMatch) {
+ return res.status(401).json({ error: "Invalid password." });
+ }
- const token = null;
-
- res.json({ data: token });
+ const token = jwt.sign(username, jwtSecret);
+ console.log(token);
+ res.json({ data: token });
};
-export {
- register,
- login
-};
+export { register, login };