Compare commits
5 Commits
kfu-m-24-1
...
dogsitters
| Author | SHA1 | Date | |
|---|---|---|---|
| 312cc229d8 | |||
| 11b1d670d0 | |||
| 771f75ef08 | |||
|
|
edf9b2c82b | ||
| a88d3657bf |
@@ -7,33 +7,64 @@ router.get("/users", (request, response) => {
|
||||
router.post("/auth", (request, response) => {
|
||||
const { phoneNumber, password } = request.body;
|
||||
console.log(phoneNumber, password);
|
||||
if (phoneNumber === "89999999999") {
|
||||
response.send(require("./json/auth/dogsitter.success.json"));
|
||||
} else if (phoneNumber === "89555555555") {
|
||||
response.status(400).send(require("./json/auth/error.json"));
|
||||
if (phoneNumber === "89999999999" || phoneNumber === "89559999999") {
|
||||
response.send(require("../json/auth/success.json"));
|
||||
} else {
|
||||
response.send(require("./json/auth/owner.success.json"));
|
||||
response.status(401).send(require("../json/auth/error.json"));
|
||||
}
|
||||
});
|
||||
|
||||
router.post("/auth/2fa", (request, response) => {
|
||||
const { code } = request.body;
|
||||
if (code === "0000") {
|
||||
response.send(require("./json/2fa/success.json"));
|
||||
const { phoneNumber, code } = request.body;
|
||||
if (code === "0000" && phoneNumber === "89999999999") {
|
||||
response.send(require("../json/2fa/dogsitter.success.json"));
|
||||
} else if (code === "0000" && phoneNumber === "89559999999") {
|
||||
response.send(require("../json/2fa/owner.success.json"));
|
||||
} else {
|
||||
response.status(400).send(require("./json/2fa/error.json"));
|
||||
response.status(401).send(require("../json/2fa/error.json"));
|
||||
}
|
||||
});
|
||||
|
||||
router.post("/register", (request, response) => {
|
||||
const { firstName, secondName, phoneNumber, password, role } = request.body;
|
||||
console.log(phoneNumber, password, role);
|
||||
if (phoneNumber === "89283244141" || phoneNumber === "89872855893") {
|
||||
response.status(400).send(require("./json/register/error.json"));
|
||||
if (phoneNumber === "89999999999" || phoneNumber === "89559999999") {
|
||||
response.status(401).send(require("../json/register/error.json"));
|
||||
} else if (role === "dogsitter") {
|
||||
response.send(require("./json/register/dogsitter.success.json"));
|
||||
response.send(require("../json/register/dogsitter.success.json"));
|
||||
} else {
|
||||
response.send(require("./json/register/owner.success.json"));
|
||||
response.send(require("../json/register/owner.success.json"));
|
||||
}
|
||||
});
|
||||
|
||||
router.get("/auth/session", (request, response) => {
|
||||
const authHeader = request.headers.authorization;
|
||||
|
||||
if (!authHeader) {
|
||||
return response.status(401).json({ error: "Authorization header missing" });
|
||||
}
|
||||
|
||||
// Берём сам токен из заголовка
|
||||
const token = authHeader.split(" ")[1];
|
||||
|
||||
if (!token) {
|
||||
return response.status(401).json({ error: "Bearer token missing" });
|
||||
}
|
||||
|
||||
const jwt = require("jsonwebtoken");
|
||||
const secretKey = "secret";
|
||||
|
||||
try {
|
||||
const decoded = jwt.verify(token, secretKey);
|
||||
|
||||
if (decoded.role === "dogsitter") {
|
||||
response.send(require("../json/role/dogsitter.success.json"));
|
||||
} else {
|
||||
response.send(require("../json/role/owner.success.json"));
|
||||
}
|
||||
} catch (e) {
|
||||
console.log("token e:", e);
|
||||
return response.status(403).json({ error: "Invalid token" });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwicm9sZSI6ImRvZ3NpdHRlciIsImlhdCI6MTUxNjIzOTAyMn0.7q66wTNyLZp3TGFYF_JdU-yhlWViJulTxP_PCQzO4OI"
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"status": "error",
|
||||
"message": "Invalid code."
|
||||
"message": "Invalid code",
|
||||
"statusCode": 401
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Mywicm9sZSI6Im93bmVyIiwiaWF0IjoxNTE2MjM5MDIyfQ.sI9839YXveTpEWhdpr5QbCYllt6hHYO7NsrQDcrXZIQ"
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"status": "success",
|
||||
"message": "Two-factor authentication passed."
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"data": {
|
||||
"id": 1,
|
||||
"phoneNumber": 89283244141,
|
||||
"firstName": "Вася",
|
||||
"secondName": "Пупкин",
|
||||
"role": "dogsitter",
|
||||
"location": "Россия, республика Татарстан, Казань, улица Пушкина, 12",
|
||||
"price": 1500,
|
||||
"aboutMe": "Я люблю собак"
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
{
|
||||
"error": "Пользователь не найден"
|
||||
}
|
||||
"message": "Неверный логин или пароль",
|
||||
"error": "Unauthorized",
|
||||
"statusCode": 401
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"data": {
|
||||
"id": 3,
|
||||
"phoneNumber": 89872855893,
|
||||
"firstName": "Гадий",
|
||||
"secondName": "Петрович",
|
||||
"role": "owner"
|
||||
}
|
||||
}
|
||||
5
server/routers/dogsitters-finder/json/auth/success.json
Normal file
5
server/routers/dogsitters-finder/json/auth/success.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"status": "success",
|
||||
"message": "Первый фактор аутентификации пройден",
|
||||
"statusCode": 200
|
||||
}
|
||||
@@ -1,12 +1,3 @@
|
||||
{
|
||||
"data": {
|
||||
"id": 5,
|
||||
"phoneNumber": 89555555555,
|
||||
"firstName": "Масяня",
|
||||
"secondName": "Карлова",
|
||||
"role": "dogsitter",
|
||||
"location": "Россия, республика Татарстан, Казань, улица Пушкина, 12",
|
||||
"price": 100,
|
||||
"aboutMe": "Все на свете - собаки"
|
||||
}
|
||||
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NSwicm9sZSI6ImRvZ3NpdHRlciIsImlhdCI6MTUxNjIzOTAyMn0.T9V3-f3rD1deA5a2J-tYNw0cACEpzKHbhMPkc7gh8c0"
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
{
|
||||
"error": "Пользователь с таким номером телефона уже существует"
|
||||
"message": "Такой пользователь уже был зарегистрирован",
|
||||
"error": "Unauthorized",
|
||||
"statusCode": 401
|
||||
}
|
||||
@@ -1,9 +1,3 @@
|
||||
{
|
||||
"data": {
|
||||
"id": 6,
|
||||
"phoneNumber": 89888888888,
|
||||
"firstName": "Генадий",
|
||||
"secondName": "Паровозов",
|
||||
"role": "owner"
|
||||
}
|
||||
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Niwicm9sZSI6Im93bmVyIiwiaWF0IjoxNTE2MjM5MDIyfQ.qgOhk9tNcaMRbarRWISTgvGx5Eq_X8fcA5lhdVs2tQI"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"id": 1,
|
||||
"role": "dogsitter"
|
||||
}
|
||||
5
server/routers/dogsitters-finder/json/role/error.json
Normal file
5
server/routers/dogsitters-finder/json/role/error.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"message": "Неверный jwt token",
|
||||
"error": "Forbidden",
|
||||
"statusCode": 403
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"id": 3,
|
||||
"role": "owner"
|
||||
}
|
||||
@@ -12,6 +12,10 @@ router.get("/categories", (request, response) => {
|
||||
response.send(require("./json/home-page-data/all-games.json"));
|
||||
});
|
||||
|
||||
router.get("/favourites", (request, response) => {
|
||||
response.send(require("./json/home-page-data/all-games.json"));
|
||||
});
|
||||
|
||||
router.get("/shopping-cart", (request, response) => {
|
||||
response.send(require("./json/shopping-cart/success.json"));
|
||||
});
|
||||
|
||||
@@ -3,41 +3,43 @@
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "Elden Ring",
|
||||
"image": "game17",
|
||||
"price": 3295,
|
||||
"old_price": 3599,
|
||||
"imgPath": "img_top_17",
|
||||
"description": "Крупномасштабная RPG, действие которой происходит в обширном открытом мире c богатой мифологией и множеством опасных врагов.",
|
||||
"category": "RPG"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"title": "The Witcher 3: Wild Hunt",
|
||||
"image": "game1",
|
||||
"price": 990,
|
||||
"old_price": 1200,
|
||||
"os": "windows",
|
||||
"imgPath": "img_top_1",
|
||||
"description": "Эпическая RPG с открытым миром, в которой Геральт из Ривии охотится на монстров и раскрывает политические заговоры.",
|
||||
"category": "RPG"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"id": 17,
|
||||
"title": "Red Dead Redemption 2",
|
||||
"image": "game2",
|
||||
"price": 980,
|
||||
"old_price": 3800,
|
||||
"os": "windows",
|
||||
"imgPath": "img_top_2",
|
||||
"description": "Приключенческая игра с открытым миром на Диком Западе, рассказывающая историю Артура Моргана.",
|
||||
"category": "Adventures"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"title": "Forza Horizon 5",
|
||||
"image": "game3",
|
||||
"price": 1900,
|
||||
"os": "windows",
|
||||
"imgPath": "img_top_3",
|
||||
"description": "Гоночная игра с огромным открытым миром, действие которой происходит в Мексике.",
|
||||
"category": "Race"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
@@ -45,72 +47,66 @@
|
||||
"image": "game4",
|
||||
"price": 1200,
|
||||
"old_price": 2500,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_4",
|
||||
"description": "Экшен-шутер с элементами RPG, разворачивающийся в альтернативной Советской России.",
|
||||
"category": "Shooters"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"title": "Counter-Strike 2",
|
||||
"image": "game5",
|
||||
"price": 479,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_5",
|
||||
"description": "Популярный онлайн-шутер с соревновательным геймплеем и тактическими элементами.",
|
||||
"category": "Shooters"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"title": "Grand Theft Auto V",
|
||||
"image": "game6",
|
||||
"price": 700,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_6",
|
||||
"description": "Игра с открытым миром, где можно погрузиться в криминальный мир Лос-Сантоса.",
|
||||
"category": "Adventures"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"title": "Assassin’s Creed IV: Black Flag",
|
||||
"image": "game7",
|
||||
"price": 1100,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_7",
|
||||
"description": "Приключенческая игра о пиратах и морских сражениях в эпоху золотого века пиратства.",
|
||||
"category": "Adventures"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"title": "Spider-Man",
|
||||
"image": "game8",
|
||||
"price": 3800,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_8",
|
||||
"description": "Игра о супергерое Человеке-пауке с захватывающими битвами и паркуром по Нью-Йорку.",
|
||||
"category": "Action"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"title": "Assassin’s Creed Mirage",
|
||||
"image": "game9",
|
||||
"price": 1600,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_9",
|
||||
"description": "Приключенческая игра с упором на скрытность, вдохновленная классическими частями серии.",
|
||||
"category": "Action"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
@@ -118,79 +114,72 @@
|
||||
"image": "game10",
|
||||
"price": 800,
|
||||
"old_price": 2200,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_10",
|
||||
"description": "RPG с открытым миром о викингах, включающая битвы, исследования и строительство поселений.",
|
||||
"category": "RPG"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"title": "ARK: Survival Evolved",
|
||||
"image": "game11",
|
||||
"price": 790,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_11",
|
||||
"description": "Выживание в открытом мире с динозаврами, строительством и многопользовательскими элементами.",
|
||||
"category": "Simulators"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"title": "FIFA 23",
|
||||
"image": "game12",
|
||||
"price": 3900,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_12",
|
||||
"description": "Популярный футбольный симулятор с улучшенной графикой и реалистичным геймплеем.",
|
||||
"category": "Sports"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"title": "Dirt 5",
|
||||
"image": "game13",
|
||||
"price": 2300,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_13",
|
||||
"description": "Аркадная гоночная игра с фокусом на ралли и внедорожных соревнованиях.",
|
||||
"category": "Race"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"title": "Cyberpunk 2077",
|
||||
"image": "game14",
|
||||
"price": 3400,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_14",
|
||||
"description": "RPG в киберпанк-сеттинге с нелинейным сюжетом и детализированным открытым миром.",
|
||||
"category": "RPG"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"title": "Age of Empires IV",
|
||||
"image": "game15",
|
||||
"price": 3200,
|
||||
"os": "windows",
|
||||
|
||||
"imgPath": "img_top_15",
|
||||
"description": "Классическая стратегия в реальном времени с историческими кампаниями.",
|
||||
"category": "Strategies"
|
||||
,"fav1": "star1",
|
||||
"fav2": "star2"
|
||||
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"title": "Civilization VI",
|
||||
"image": "game16",
|
||||
"price": 4200,
|
||||
"os": "windows",
|
||||
"imgPath": "img_top_16",
|
||||
"description": "Глобальная пошаговая стратегия, в которой игроки строят и развивают цивилизации.",
|
||||
"category": "Strategies"
|
||||
|
||||
Reference in New Issue
Block a user