diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index d4d4cf5..0000000 --- a/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -# flyctl launch added from .gitignore -**/.vscode/settings.json -fly.toml diff --git a/drill-and-practice/app.js b/drill-and-practice/app.js index ff5347d..1a91067 100644 --- a/drill-and-practice/app.js +++ b/drill-and-practice/app.js @@ -1,4 +1,4 @@ -import { Application } from "./deps.js"; +import { Application, Session } from "./deps.js"; import { authMiddleware } from "./middlewares/authMiddleware.js"; import { errorMiddleware } from "./middlewares/errorMiddleware.js"; import { renderMiddleware } from "./middlewares/renderMiddleware.js"; @@ -7,7 +7,7 @@ import { serveStaticMiddleware } from "./middlewares/serveStaticMiddleware.js"; import { router } from "./routes/routes.js"; const app = new Application(); - +app.use(Session.initMiddleware()); app.use(errorMiddleware); app.use(authMiddleware); app.use(userMiddleware); diff --git a/drill-and-practice/middlewares/authMiddleware.js b/drill-and-practice/middlewares/authMiddleware.js index 7069327..799dcee 100644 --- a/drill-and-practice/middlewares/authMiddleware.js +++ b/drill-and-practice/middlewares/authMiddleware.js @@ -1,8 +1,8 @@ const restrictedPaths = ["/topics", "/quiz"]; const authMiddleware = async (context, next) => { - const user = await context.state.session?.get("user"); - + const user = await context.state.session.get("user"); + console.log(user); if ( !user && restrictedPaths.some((path) => diff --git a/drill-and-practice/middlewares/userMiddleware.js b/drill-and-practice/middlewares/userMiddleware.js index fd01168..fa94977 100644 --- a/drill-and-practice/middlewares/userMiddleware.js +++ b/drill-and-practice/middlewares/userMiddleware.js @@ -1,7 +1,7 @@ import * as authService from "../services/authService.js"; const userMiddleware = async (context, next) => { - const user = await context.state.session?.get("user"); + const user = await context.state.session.get("user"); if (user) { const userFromDatabase = await authService.findUser(user.email); diff --git a/drill-and-practice/routes/controllers/answerController.js b/drill-and-practice/routes/controllers/answerController.js index 665d94f..c15437b 100644 --- a/drill-and-practice/routes/controllers/answerController.js +++ b/drill-and-practice/routes/controllers/answerController.js @@ -10,7 +10,7 @@ const addAnswer = async ({ request, response, params, state, render }) => { const topicId = params.tId; const questionId = params.qId; const userId = (await state.session.get("user")).id; - const body = request.body({ type: "form-data" }); + const body = request.body({ type: "form" }); const formData = await body.value; const answerData = { option: formData.get("option"), diff --git a/drill-and-practice/routes/controllers/authController.js b/drill-and-practice/routes/controllers/authController.js index 84a1b78..5bb94f9 100644 --- a/drill-and-practice/routes/controllers/authController.js +++ b/drill-and-practice/routes/controllers/authController.js @@ -15,8 +15,10 @@ const showRegister = ({ render }) => { }; const register = async ({ request, response, render }) => { - const body = request.body({ type: "form-data" }); + const body = request.body({ type: "form" }); + console.log(body); const params = await body.value; + console.log(params); const userData = { email: params.get("email"), password: params.get("password"), @@ -29,20 +31,18 @@ const register = async ({ request, response, render }) => { render("register.eta", userData); } else { const hashedPassword = await bcrypt.hash(userData.password); - const user = await authService.createUser(userData.email, hashedPassword); - response.direct("/auth/login"); + await authService.createUser(userData.email, hashedPassword); + response.redirect("/auth/login"); } }; const login = async ({ request, response, state, render }) => { const body = request.body({ type: "form" }); const params = await body.value; - const userDatabase = await authService.findUser(params.get("email")); - if (userDatabase.length < 1) { response.status = 422; - render("login.eta", { error: "User not found!" }); + render("login.eta", { error: { error: "User not found!" } }); return; } @@ -54,12 +54,12 @@ const login = async ({ request, response, state, render }) => { if (!passwordCorrect) { response.status = 422; - render("login.eta", { error: "Incorrect password!" }); + render("login.eta", { errors: { error: "Incorrect password!" } }); return; } - await state.session.set("authenticated", user); - response.direct("/topics"); + await state.session.set("user", user); + response.redirect("/topics"); }; export { showLogin, showRegister, register, login }; diff --git a/drill-and-practice/routes/controllers/questionController.js b/drill-and-practice/routes/controllers/questionController.js index 1d0c10f..4ca09dd 100644 --- a/drill-and-practice/routes/controllers/questionController.js +++ b/drill-and-practice/routes/controllers/questionController.js @@ -10,7 +10,7 @@ const validationRules = { const addQuestion = async ({ request, response, params, state, render }) => { const topicId = params.tId; const userId = (await state.session.get("user")).id; - const body = request.body({ type: "form-data" }); + const body = request.body({ type: "form" }); const formData = await body.value; const topicName = (await topicService.getTopicByTopicId(topicId)).name; const questionData = { diff --git a/drill-and-practice/routes/controllers/topicController.js b/drill-and-practice/routes/controllers/topicController.js index e0ca71c..ae1f51f 100644 --- a/drill-and-practice/routes/controllers/topicController.js +++ b/drill-and-practice/routes/controllers/topicController.js @@ -8,7 +8,7 @@ const validationRules = { const addTopic = async ({ request, response, render, state }) => { const userId = (await state.session.get("user")).id; const admin = (await state.session.get("user")).admin; - const body = request.body({ type: "form-data" }); + const body = request.body({ type: "form" }); const params = await body.value; const topicData = { admin: admin, @@ -46,7 +46,7 @@ const listTopics = async ({ render, state }) => { const user = await state.session.get("user"); render("topics.eta", { admin: user.admin, - allTopics: await topicService.getAllTopics(), + topics: await topicService.getAllTopics(), }); }; diff --git a/drill-and-practice/services/answerService.js b/drill-and-practice/services/answerService.js index f617fda..625d402 100644 --- a/drill-and-practice/services/answerService.js +++ b/drill-and-practice/services/answerService.js @@ -2,13 +2,13 @@ import { sql } from "../database/database.js"; const countAnswers = async () => { const result = await sql`SELECT COUNT(id) FROM question_answer_options`; - return result.rows[0].count; + return result[0].count; }; const getAnswersByQuestionId = async (questionId) => { const result = await sql`SELECT * FROM question_answer_options WHERE question_id = ${questionId}`; - return result.rows; + return result; }; const addAnswer = async (questionId, optionText, isCorrect) => { @@ -23,13 +23,13 @@ const deleteAnswer = async (questionId, optionId) => { const getCorrectOptionIds = async (questionId) => { const result = await sql`SELECT id FROM question_answer_options WHERE question_id = ${questionId} AND is_correct = true`; - return result.rows; + return result; }; const getCorrectOptions = async (questionId) => { const result = await sql`SELECT option_text FROM question_answer_options WHERE question_id = ${questionId} AND is_correct = true`; - return result.rows; + return result; }; const storeAnswer = async (userId, questionId, optionId) => { diff --git a/drill-and-practice/services/questionService.js b/drill-and-practice/services/questionService.js index cf9a2d4..cab41a9 100644 --- a/drill-and-practice/services/questionService.js +++ b/drill-and-practice/services/questionService.js @@ -2,17 +2,17 @@ import { sql } from "../database/database.js"; const countQuestions = async () => { const result = await sql`SELECT COUNT(id) FROM questions`; - return result.rows[0].count; + return result[0].count; }; const getQuestionsByTopicId = async (topicId) => { const result = await sql`SELECT * FROM questions WHERE topic_id = ${topicId}`; - return result.rows; + return result; }; const getQuestionByQuestionId = async (questionId) => { const result = await sql`SELECT * FROM questions WHERE id = ${questionId}`; - return result.rows[0]; + return result[0]; }; const addQuestion = async (userId, topicId, question) => { @@ -26,18 +26,18 @@ const deleteQuestion = async (questionId) => { const getRandQuestion = async (topicId) => { const result = await sql`SELECT * FROM questions WHERE topic_id = ${topicId} ORDER BY RANDOM() LIMIT 1`; - if (result.rows.length === 0) { + if (result.length === 0) { return null; } - return result.rows[0]; + return result[0]; }; const getRandQuestionAPI = async () => { const result = await sql`SELECT * FROM questions ORDER BY RANDOM() LIMIT 1`; - if (result.rows.length === 0) { + if (result.length === 0) { return null; } - return result.rows[0]; + return result[0]; }; export { diff --git a/drill-and-practice/services/topicService.js b/drill-and-practice/services/topicService.js index 2a1c870..60f40ca 100644 --- a/drill-and-practice/services/topicService.js +++ b/drill-and-practice/services/topicService.js @@ -6,23 +6,27 @@ const addTopic = async (userId, name) => { const countTopics = async () => { const result = await sql`SELECT COUNT(id) FROM topics`; - return result.rows[0].count; + console.log(result); + return result[0].count; }; const getAllTopics = async () => { - await sql`SELECT * FROM topics ORDER BY name ASC`; - return result.rows; + const result = await sql`SELECT * FROM topics ORDER BY name ASC`; + console.log(result); + return result; }; const getTopicsByUserId = async (userId) => { const result = await sql`SELECT * FROM topics WHERE user_id = ${userId} ORDER BY name ASC`; - return result.rows; + console.log(result); + return result; }; const getTopicByTopicId = async (topicId) => { const result = await sql`SELECT * FROM topics WHERE id = ${topicId}`; - return result.rows[0]; + console.log(result); + return result[0]; }; const deleteTopic = async (topicId) => { diff --git a/drill-and-practice/views/layouts/layout.eta b/drill-and-practice/views/layouts/layout.eta index 73e4282..769adc5 100644 --- a/drill-and-practice/views/layouts/layout.eta +++ b/drill-and-practice/views/layouts/layout.eta @@ -1,15 +1,15 @@ - + -
-Total number of: