Feltöltés vizsgaremek könyvkölcsönző
This commit is contained in:
371
backend_konyvkolcsonzo_v5/app/Books.js
Normal file
371
backend_konyvkolcsonzo_v5/app/Books.js
Normal file
@@ -0,0 +1,371 @@
|
||||
import CheckPermission from "./CheckPermission.js";
|
||||
import conn from "./Conn.js";
|
||||
|
||||
class Books {
|
||||
|
||||
checkErrors(book) {
|
||||
const errors = [];
|
||||
|
||||
if(book.author.length === 0
|
||||
|| book.author === undefined
|
||||
|| book.author === null){
|
||||
console.log(typeof(book));
|
||||
errors.push("A szerzőt kötelező beállítani!");
|
||||
}
|
||||
|
||||
|
||||
if(book.title.length === 0
|
||||
|| book.title === undefined
|
||||
|| book.title === null)
|
||||
errors.push("A könyv címét kötelező megadni!");
|
||||
|
||||
if(book.publisher.length === 0
|
||||
|| book.publisher === undefined
|
||||
|| book.title === null)
|
||||
errors.push("A könyv kiadóját kötelező megadni!");
|
||||
|
||||
if(book.the_year_of_publishing === 0
|
||||
|| book.the_year_of_publishing === undefined
|
||||
|| book.the_year_of_publishing === null)
|
||||
errors.push("A könyv kiadásának évét kötelező megadni!");
|
||||
|
||||
if(book.description.length === 0
|
||||
|| book.description === undefined
|
||||
|| book.description === null)
|
||||
errors.push("A könyv leírását kötelező megadni!");
|
||||
|
||||
if(book.language.length === 0
|
||||
|| book.language === undefined
|
||||
|| book.language === null)
|
||||
errors.push("A könyv nyelvét kötelező megadni!");
|
||||
|
||||
if(book.number_of_pages === 0
|
||||
|| book.number_of_pages === undefined
|
||||
|| book.number_of_pages === null)
|
||||
errors.push("A könyv terjedelmét kötelező megadni!");
|
||||
|
||||
if(book.cover.length === 0
|
||||
|| book.cover === undefined
|
||||
|| book.cover === null)
|
||||
errors.push("A könyv borítójának típusát kötelező megadni!");
|
||||
|
||||
if(book.cover.length === 0
|
||||
|| book.cover === undefined
|
||||
|| book.cover === null)
|
||||
errors.push("A könyv súlyát kötelező megadni!");
|
||||
|
||||
if((!book.ISBN || book.ISBN.length === 0)
|
||||
|| book.ISBN === undefined
|
||||
|| book.ISBN === null)
|
||||
errors.push("A könyv ISBN számát kötelező megadni!");
|
||||
|
||||
|
||||
|
||||
if(book.itemcode.length === 0
|
||||
|| book.itemcode === undefined
|
||||
|| book.itemcode === null)
|
||||
errors.push("A könyv termékkódját kötelező megadni!");
|
||||
|
||||
if(book.price === 0
|
||||
|| book.price === undefined
|
||||
|| book.price === null)
|
||||
errors.push("A könyv árát kötelező megadni!");
|
||||
|
||||
if(book.discounted_price === 0
|
||||
|| book.discounted_price === undefined
|
||||
|| book.discounted_price === null)
|
||||
errors.push("A könyv kedvezményes árát kötelező megadni!");
|
||||
|
||||
if(book.categoryID === 0
|
||||
|| book.categoryID === undefined
|
||||
|| book.categoryID === null)
|
||||
errors.push("A könyv kategóriáját kötelező megadni!");
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
async serchBooks(char) {
|
||||
const sql = `SELECT * FROM books WHERE title LIKE ?`;
|
||||
const startingP = `${char}%`;
|
||||
|
||||
try {
|
||||
const data = await conn.promise().query(sql, [startingP]);
|
||||
|
||||
if(data[0].length !== 0) {
|
||||
return {
|
||||
status:200,
|
||||
messages: data[0]
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status: 404,
|
||||
messages:["A keresett erőforrás nem található!"]
|
||||
};
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages: ["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async getBooksCatID(id) {
|
||||
const sql = `SELECT * FROM books WHERE categoryID = ?`;
|
||||
|
||||
try {
|
||||
const data = await conn.promise().query(sql, [id]);
|
||||
|
||||
if(data[0].length !== 0) {
|
||||
return {
|
||||
status:200,
|
||||
messages: data[0]
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status:404,
|
||||
messages:["A keresett erőforrás nem található!"]
|
||||
};
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages: ["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async getBook(id) {
|
||||
const sql = `SELECT * FROM books WHERE BookID = ?`;
|
||||
|
||||
try {
|
||||
const data = await conn.promise().query(sql, [id]);
|
||||
|
||||
if(data[0].length !== 0) {
|
||||
return {
|
||||
status:200,
|
||||
messages: data[0][0]
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status:404,
|
||||
messages:["A keresett erőforrás nem található!"]
|
||||
};
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async getBooks() {
|
||||
const sql = "SELECT * FROM books";
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql);
|
||||
|
||||
return {
|
||||
status:200,
|
||||
messages:response[0]
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async deleteBook(id, userID, isAdmin) {
|
||||
const sql = `DELETE FROM books WHERE BookID = ?`;
|
||||
|
||||
if(!CheckPermission(userID, isAdmin, true)) {
|
||||
return {
|
||||
status:403,
|
||||
messages:["Nincs jogosultságod törölni a bejegyzést!"]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql, [id]);
|
||||
|
||||
if(response[0].affectedRows === 1) {
|
||||
return {
|
||||
status:200, //ha a status code 204 (No Content) nem tudok hozzá üzenetet beállítani, emiatt állítottam be a 200-at!
|
||||
messages:"Sikeres törlés!"
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
status:404,
|
||||
messages:"Az erőforrás nem található!"
|
||||
}
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async addBook(book, userID, isAdmin) {
|
||||
const sql = `INSERT INTO books (author, title, publisher, the_year_of_publishing,
|
||||
description, language, number_of_pages, cover, weight, ISBN, itemcode, price, discounted_price, book_url, categoryID)
|
||||
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`;
|
||||
|
||||
const errors = this.checkErrors(book);
|
||||
|
||||
if(!CheckPermission(userID, isAdmin, true)) {
|
||||
return {
|
||||
status:403,
|
||||
messages:["Nincs jogosultságod létrehozni a bejegyzést!"]
|
||||
}
|
||||
}
|
||||
|
||||
if(errors.length > 0) {
|
||||
console.log(errors);
|
||||
return {
|
||||
status:400,
|
||||
messages:errors
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql,
|
||||
[
|
||||
|
||||
book.author,
|
||||
book.title,
|
||||
book.publisher,
|
||||
book.the_year_of_publishing,
|
||||
book.description,
|
||||
book.language,
|
||||
book.number_of_pages,
|
||||
book.cover,
|
||||
book.weight,
|
||||
book.ISBN,
|
||||
book.itemcode,
|
||||
book.price,
|
||||
book.discounted_price,
|
||||
book.book_url,
|
||||
book.categoryID
|
||||
|
||||
|
||||
]);
|
||||
|
||||
return {
|
||||
status:200,
|
||||
messages:["Sikeres felvitel!"]
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async updateBook(book, userID, isAdmin) {
|
||||
const sql = `UPDATE books
|
||||
SET author = ?, title = ?,
|
||||
publisher = ?, the_year_of_publishing = ?,
|
||||
description = ?, language = ?, number_of_pages = ?,
|
||||
cover = ?, weight = ?, ISBN = ?, itemcode = ?, price = ?,
|
||||
discounted_price = ?, book_url = ?, categoryID = ? WHERE BookID = ?`;
|
||||
|
||||
const errors = this.checkErrors(book);
|
||||
|
||||
if(!CheckPermission(userID, isAdmin, true)) {
|
||||
return {
|
||||
status:403,
|
||||
messages:["Nincs jogosultságod felülírni a bejegyzést!"]
|
||||
}
|
||||
}
|
||||
|
||||
if(errors.length > 0) {
|
||||
return {
|
||||
status:400,
|
||||
messages:errors
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql,
|
||||
[
|
||||
book.author,
|
||||
book.title,
|
||||
book.publisher,
|
||||
book.the_year_of_publishing,
|
||||
book.description,
|
||||
book.language,
|
||||
book.number_of_pages,
|
||||
book.cover,
|
||||
book.weight,
|
||||
book.ISBN,
|
||||
book.itemcode,
|
||||
book.price,
|
||||
book.discounted_price,
|
||||
book.book_url,
|
||||
book.categoryID,
|
||||
book.bookID
|
||||
|
||||
]);
|
||||
|
||||
if(response[0].affectedRows === 1) {
|
||||
return {
|
||||
status:200,
|
||||
messages:["Sikeres felülírás"]
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
status:404,
|
||||
messages:["A keresett könyv nem található!"]
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default Books;
|
||||
356
backend_konyvkolcsonzo_v5/app/BorrowedBooks.js
Normal file
356
backend_konyvkolcsonzo_v5/app/BorrowedBooks.js
Normal file
@@ -0,0 +1,356 @@
|
||||
import CheckPermission from "./CheckPermission.js";
|
||||
import conn from "./Conn.js";
|
||||
|
||||
|
||||
|
||||
|
||||
class BorrowedBooks {
|
||||
|
||||
async getBorBooks() {
|
||||
const sql = `SELECT borrowedbooks.BookID, borrowedbooks.cartID,
|
||||
DATE_FORMAT(borrowedbooks.end_of_borrowment, '%Y-%m-%d') as end_of_borrowment,
|
||||
borrowedbooks.quantity,
|
||||
DATE_FORMAT(borrowedbooks.start_of_borrowment, '%Y-%m-%d') as start_of_borrowment,
|
||||
borrowedbooks.UserID, borrowedbooks.bringedBack
|
||||
,books.title, users.Name FROM borrowedbooks
|
||||
INNER JOIN books
|
||||
ON books.BookID = borrowedbooks.BookID
|
||||
INNER JOIN users
|
||||
ON users.UserID = borrowedbooks.UserID`;
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql);
|
||||
|
||||
return {
|
||||
status:200,
|
||||
messages:response[0]
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async getBorrowsByUser(userID) {
|
||||
const sql = `SELECT borrowedbooks.BookID, borrowedbooks.cartID,
|
||||
DATE_FORMAT(borrowedbooks.end_of_borrowment, '%Y-%m-%d') as end_of_borrowment,
|
||||
borrowedbooks.quantity,
|
||||
DATE_FORMAT(borrowedbooks.start_of_borrowment, '%Y-%m-%d') as start_of_borrowment,
|
||||
borrowedbooks.UserID, borrowedbooks.bringedBack, books.title
|
||||
FROM borrowedbooks
|
||||
INNER JOIN books
|
||||
ON books.BookID = borrowedbooks.BookID
|
||||
WHERE UserID = ?`;
|
||||
|
||||
if(userID === null || userID === undefined) {
|
||||
return {
|
||||
status:403,
|
||||
messages:["Nincs jogosultságod megtekinteni az adatokat!"]
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql, [userID]);
|
||||
|
||||
return {
|
||||
status:200,
|
||||
messages:response[0]
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async getBorrowsByCartID(CartID, userID, isAdmin) {
|
||||
const sql = `SELECT borrowedbooks.BookID, borrowedbooks.cartID,
|
||||
DATE_FORMAT(borrowedbooks.end_of_borrowment, '%Y-%m-%d') as end_of_borrowment,
|
||||
borrowedbooks.quantity,
|
||||
DATE_FORMAT(borrowedbooks.start_of_borrowment, '%Y-%m-%d') as start_of_borrowment,
|
||||
borrowedbooks.UserID, borrowedbooks.bringedBack,
|
||||
books.title, users.Name FROM borrowedbooks
|
||||
INNER JOIN books
|
||||
ON books.BookID = borrowedbooks.BookID
|
||||
INNER JOIN users
|
||||
ON users.UserID = borrowedbooks.UserID WHERE cartID = ?`;
|
||||
|
||||
|
||||
|
||||
if(!CheckPermission(userID, isAdmin, true)) {
|
||||
return {
|
||||
status:403,
|
||||
messages:["Nincs jogosultságod megtekinteni az adatokat!"]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql, [CartID]);
|
||||
if(response[0].length !==0)
|
||||
{
|
||||
return {
|
||||
status:200,
|
||||
messages:response[0][0]
|
||||
};
|
||||
}else {
|
||||
return {
|
||||
status:404,
|
||||
messages:["A keresett erőforrás nem található!"]
|
||||
};
|
||||
}
|
||||
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async getBorrowsByUserID(userID, isAdmin) {
|
||||
const sql = `SELECT borrowedbooks.BookID, borrowedbooks.cartID,
|
||||
DATE_FORMAT(borrowedbooks.end_of_borrowment, '%Y-%m-%d') as end_of_borrowment,
|
||||
borrowedbooks.quantity,
|
||||
DATE_FORMAT(borrowedbooks.start_of_borrowment, '%Y-%m-%d') as start_of_borrowment,
|
||||
borrowedbooks.UserID, borrowedbooks.bringedBack,
|
||||
books.title, users.Name FROM borrowedbooks
|
||||
INNER JOIN books
|
||||
ON books.BookID = borrowedbooks.BookID
|
||||
INNER JOIN users
|
||||
ON users.UserID = borrowedbooks.UserID WHERE borrowedbooks.UserID = ?`;
|
||||
|
||||
if(isAdmin === null || isAdmin === undefined || isAdmin === "0") {
|
||||
return {
|
||||
status:403,
|
||||
messages:["Nincs jogosultságod megtekinteni az adatokat!"]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql, [userID]);
|
||||
if(response[0].length !==0)
|
||||
{
|
||||
return {
|
||||
status:200,
|
||||
messages:response[0]
|
||||
};
|
||||
}else {
|
||||
return {
|
||||
status:404,
|
||||
messages:["A keresett erőforrás nem található!"]
|
||||
};
|
||||
}
|
||||
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async checkBorrows(bookID, userID) {
|
||||
const sql = `SELECT COUNT(*) as BookNumber
|
||||
FROM borrowedbooks WHERE BookID = ?
|
||||
AND bringedBack = ? AND UserID = ?`;
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql, [bookID, 0, userID]);
|
||||
return parseInt(response[0][0].BookNumber);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async checkCartID(cartID) {
|
||||
const sql = `SELECT COUNT(*) as CartIDNumber
|
||||
FROM borrowedbooks WHERE cartID = ?`;
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql, [cartID]);
|
||||
return parseInt(response[0][0].CartIDNumber);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async addBorrow(borrowDatas) {
|
||||
|
||||
|
||||
const errors = [];
|
||||
const successes = [];
|
||||
if(borrowDatas.userID === null || borrowDatas.userID === undefined || borrowDatas.userID === "")
|
||||
errors.push("Nincs jogosultságod a művelet elvégzéséhez. Kérlek jelentkezz be!")
|
||||
if(await this.checkBorrows(borrowDatas.bookID, borrowDatas.userID) > 0)
|
||||
errors.push("Már kivettél egy ilyen könyvet, és még nem hoztad vissza!");
|
||||
|
||||
if(errors.length > 0) {
|
||||
return {
|
||||
status:400,
|
||||
messages:errors
|
||||
}
|
||||
}
|
||||
|
||||
for (let borrowData of borrowDatas) {
|
||||
|
||||
const sql = `INSERT INTO borrowedbooks
|
||||
(BookID, cartID, end_of_borrowment, quantity, start_of_borrowment, UserID)
|
||||
VALUES(?,?,?,?,?,?)`;
|
||||
|
||||
|
||||
try {
|
||||
|
||||
const response = await conn.promise().query(sql, [
|
||||
borrowData.BookID,
|
||||
borrowData.cartID,
|
||||
borrowData.end_of_borrowment,
|
||||
borrowData.quantity,
|
||||
borrowData.start_of_borrowment,
|
||||
borrowData.UserID
|
||||
]);
|
||||
const successMessage = "[Sikeres kölcsönzés!]";
|
||||
if(!successes.includes(successMessage))
|
||||
{
|
||||
successes.push(successMessage);
|
||||
}
|
||||
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(successes.length > 0) {
|
||||
return {
|
||||
status:200,
|
||||
messages:successes
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
async updateOrder(borrowData, isAdmin) {
|
||||
const sql = `UPDATE borrowedbooks SET bringedBack = ?
|
||||
WHERE cartID = ?`;
|
||||
|
||||
if(isAdmin === null || isAdmin === undefined || isAdmin === "0") {
|
||||
return {
|
||||
status:403,
|
||||
messages:"Nincs jogosultságod felülírni a megrendelést!"
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql,
|
||||
[
|
||||
borrowData.bringedBack,
|
||||
borrowData.cartID,
|
||||
|
||||
]);
|
||||
|
||||
if(response[0].affectedRows > 0) {
|
||||
return {
|
||||
status:200,
|
||||
messages:"Sikeres felülírás!"
|
||||
}
|
||||
}else {
|
||||
return {
|
||||
status:404,
|
||||
messages:"A megadott azonosító alapján nem található megrendelés! "
|
||||
}
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async deleteOrder(cartID, userID, isAdmin) {
|
||||
const sql = `DELETE FROM borrowedbooks WHERE cartID = ?`;
|
||||
|
||||
if(!CheckPermission(userID, isAdmin, true)) {
|
||||
return {
|
||||
status:403,
|
||||
messages:"Nincs jogosultságod törölni a bejegyzést!"
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql, [cartID]);
|
||||
|
||||
if(response[0].affectedRows > 0) {
|
||||
return {
|
||||
status:200,
|
||||
messages:"Sikeres törlés!"
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
status:404,
|
||||
messages:"A megrendelés nem található a megadott azonosító alapján!"
|
||||
}
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage)
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:"A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
export default BorrowedBooks;
|
||||
57
backend_konyvkolcsonzo_v5/app/Categories.js
Normal file
57
backend_konyvkolcsonzo_v5/app/Categories.js
Normal file
@@ -0,0 +1,57 @@
|
||||
import conn from "./Conn.js";
|
||||
|
||||
class Categories {
|
||||
async getCategory(id) {
|
||||
const sql = `SELECT * FROM categories
|
||||
WHERE categoryID = ?`;
|
||||
|
||||
try {
|
||||
const data = await conn.promise().query(sql, [id]);
|
||||
|
||||
if(data[0].length !==0) {
|
||||
return {
|
||||
status:200,
|
||||
messages:data[0][0]
|
||||
};
|
||||
}else {
|
||||
return {
|
||||
status:404,
|
||||
messages:["A keresett erőforrás nem található!"]
|
||||
};
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(errr);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async getCategories() {
|
||||
const sql = "SELECT * FROM categories";
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql);
|
||||
|
||||
return {
|
||||
status:200,
|
||||
messages:response[0]
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default Categories;
|
||||
13
backend_konyvkolcsonzo_v5/app/CheckPermission.js
Normal file
13
backend_konyvkolcsonzo_v5/app/CheckPermission.js
Normal file
@@ -0,0 +1,13 @@
|
||||
function CheckPermission(userID, isAdmin, admin = false) {
|
||||
console.log(userID, isAdmin, admin);
|
||||
|
||||
if(userID === undefined || userID === null)
|
||||
return false;
|
||||
|
||||
if(admin && (isAdmin === undefined || isAdmin === null || isAdmin == 0))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
export default CheckPermission;
|
||||
10
backend_konyvkolcsonzo_v5/app/Conn.js
Normal file
10
backend_konyvkolcsonzo_v5/app/Conn.js
Normal file
@@ -0,0 +1,10 @@
|
||||
import mysql from "mysql2";
|
||||
|
||||
const conn = mysql.createConnection({
|
||||
host:"127.0.0.1",
|
||||
user:"root",
|
||||
password:"",
|
||||
database:"konyvkolcsonzo"
|
||||
});
|
||||
|
||||
export default conn;
|
||||
3
backend_konyvkolcsonzo_v5/app/EmailCheck.js
Normal file
3
backend_konyvkolcsonzo_v5/app/EmailCheck.js
Normal file
@@ -0,0 +1,3 @@
|
||||
const emailRegex = /^[\w\.\-\_öüóőúéáűíÖÜÓŐÚÉÁŰÍ]{1,255}\@[\w\.\-\_]{1,255}\.[\w]{2,8}$/;
|
||||
|
||||
export {emailRegex};
|
||||
3
backend_konyvkolcsonzo_v5/app/PhoneNumberCheck.js
Normal file
3
backend_konyvkolcsonzo_v5/app/PhoneNumberCheck.js
Normal file
@@ -0,0 +1,3 @@
|
||||
const phoneRegex = /^\+36\d{9}$/;
|
||||
|
||||
export {phoneRegex};
|
||||
297
backend_konyvkolcsonzo_v5/app/User.js
Normal file
297
backend_konyvkolcsonzo_v5/app/User.js
Normal file
@@ -0,0 +1,297 @@
|
||||
import conn from "./Conn.js";
|
||||
import hash from "./hash.js";
|
||||
import { emailRegex } from "./EmailCheck.js";
|
||||
import { phoneRegex } from "./PhoneNumberCheck.js";
|
||||
import crypto from "crypto";
|
||||
import CheckPermission from "./CheckPermission.js";
|
||||
|
||||
class User {
|
||||
|
||||
|
||||
|
||||
async register(user) { //CONCAT +
|
||||
const sql = `INSERT INTO users
|
||||
(IsAdmin, Name, Phone, Email, Pass, ZIP, City, Address)
|
||||
VALUES(?,?,?,?,?,?,?,?)`;
|
||||
|
||||
let errors = [];
|
||||
|
||||
if(!emailRegex.test(user.email)) {
|
||||
errors.push("A megadott email cím formátuma nem megfelelő!");
|
||||
}
|
||||
|
||||
if(user.pass.length < 8) {
|
||||
errors.push("A jelszónak legalább 8 karakteresnek kell lennie!");
|
||||
}
|
||||
|
||||
if(user.pass !== user.passAgain) {
|
||||
errors.push("A két jelszó nem egyezik meg!");
|
||||
}
|
||||
|
||||
if(!phoneRegex.test(user.phone)) {
|
||||
errors.push("A telefonszám formátuma érvénytelen. Kérjük, a +36-os országkóddal kezdődő 9 számjegyet adjon meg!")
|
||||
}
|
||||
if(await this.checkEmail(user.email) !== 0)
|
||||
errors.push("A megadott email címmel már regisztráltak a felületen!")
|
||||
|
||||
if(errors.length > 0) {
|
||||
return {
|
||||
status:400,
|
||||
messages:errors
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
await conn.promise().query(sql,
|
||||
[
|
||||
false,
|
||||
user.fullName,
|
||||
user.phone,
|
||||
user.email,
|
||||
hash(user.pass),
|
||||
user.zip,
|
||||
user.city,
|
||||
user.address
|
||||
]
|
||||
);
|
||||
|
||||
return {
|
||||
status:200,
|
||||
messages:["Sikeres regisztráció!"]
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async login(user, res) {
|
||||
const sql = `SELECT UserID, IsAdmin, Email FROM users WHERE Email = ? AND PAss = ?`;
|
||||
const token = crypto.randomBytes(64).toString('hex'); //??????????? Nem használunk tokent
|
||||
try {
|
||||
const userData = await conn.promise().query(sql, [user.email, hash(user.pass)]);
|
||||
|
||||
if(userData[0].length === 1) {
|
||||
const userID = parseInt(userData[0][0].UserID);
|
||||
const isAdmin = parseInt(userData[0][0].IsAdmin);
|
||||
const email = userData[0][0].Email;
|
||||
|
||||
const expires = new Date(Date.now() + 7 * 24 * 60 * 60 *1000);
|
||||
res.cookie("userID", userID, {expires:expires, httpOnly:true});
|
||||
res.cookie("isAdmin", isAdmin, {expires:expires, httpOnly:true});
|
||||
res.cookie("email", email, {expires: expires, httpOnly:true});
|
||||
|
||||
return {
|
||||
messages:{isAdmin:isAdmin, email: email, userID:userID, token:token, uzenet:["Sikeres belépés"]},
|
||||
status:200
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
messages:["Nem megfelelő felhasználónév/jelszó páros!"],
|
||||
status:403
|
||||
};
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
return {
|
||||
status:503,
|
||||
messages: ["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async getUsers(isAdmin) {
|
||||
const sql = "SELECT * FROM users";
|
||||
|
||||
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql);
|
||||
|
||||
return {
|
||||
status:200,
|
||||
messages:response[0]
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async deleteUser(userID, c_userID, isAdmin) {
|
||||
const sql = `DELETE FROM users WHERE UserID = ?`;
|
||||
|
||||
if(!CheckPermission(c_userID, isAdmin, true)) {
|
||||
return {
|
||||
status:403,
|
||||
messages:["Nincs jogosultságod törölni a bejegyzést!"]
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql, [userID]);
|
||||
|
||||
if(response[0].affectedRows === 1) {
|
||||
return {
|
||||
status:200,
|
||||
messages:"Sikeres törlés!"
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
status:404,
|
||||
messages:"A felhasználó nem található a megadott ID alapján!"
|
||||
}
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage)
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async checkEmail(email) {
|
||||
const sql = `SELECT COUNT(*) as EmailExist
|
||||
FROM users WHERE Email = ?`;
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql, [email]);
|
||||
return parseInt(response[0][0].EmailExist);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async resetPass(user) {
|
||||
const sql = `UPDATE users SET Pass = ?
|
||||
WHERE Email = ?`;
|
||||
|
||||
try {
|
||||
if(await this.checkEmail(user.email) !== 0){
|
||||
const response = await conn.promise().query(sql,
|
||||
[
|
||||
hash(user.pass),
|
||||
user.email,
|
||||
|
||||
]);
|
||||
if(response[0].affectedRows === 1) {
|
||||
return {
|
||||
status:200,
|
||||
messages:["Sikeres felülírás!"]
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
return {
|
||||
status:404,
|
||||
messages:["A megadott email cím nem szerepel az adatbázisban! "]
|
||||
}
|
||||
}
|
||||
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async searchUsers(char) {
|
||||
const sql = `SELECT * FROM users WHERE name LIKE ?`;
|
||||
const startingP = `${char}%`;
|
||||
|
||||
try {
|
||||
const data = await conn.promise().query(sql, [startingP]);
|
||||
|
||||
if(data[0].length !== 0) {
|
||||
return {
|
||||
status:200,
|
||||
messages: data[0]
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status: 404,
|
||||
messages:["A keresett erőforrás nem található!"]
|
||||
};
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages: ["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async getProfile(userID) {
|
||||
const sql = `SELECT * FROM users
|
||||
WHERE UserID = ?`;
|
||||
|
||||
if(userID === null || userID === undefined || userID === "") {
|
||||
return {
|
||||
status:403,
|
||||
messages:["Nem vagy belépve! Kérlek, lépj be előbb a felületre!"]
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await conn.promise().query(sql, [userID]);
|
||||
if(response[0].length == 1)
|
||||
{
|
||||
return {
|
||||
status:200,
|
||||
messages:response[0][0]
|
||||
}
|
||||
}
|
||||
else{
|
||||
return {
|
||||
status:404,
|
||||
messages:["Nem találtam a profilodhoz adatot!"]
|
||||
}
|
||||
}
|
||||
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
console.log(err.errno);
|
||||
console.log(err.sqlMessage);
|
||||
|
||||
return {
|
||||
status:503,
|
||||
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default User;
|
||||
5
backend_konyvkolcsonzo_v5/app/hash.js
Normal file
5
backend_konyvkolcsonzo_v5/app/hash.js
Normal file
@@ -0,0 +1,5 @@
|
||||
import crypto from "crypto";
|
||||
|
||||
const hash = (str)=>crypto.createHash("sha512").update(str).digest("hex");
|
||||
|
||||
export default hash;
|
||||
Reference in New Issue
Block a user