Compare commits

...

14 Commits

Author SHA1 Message Date
14ef1f9bad Merge pull request 'Fix export' (#101) from dsf-fix-1 into master
Reviewed-on: #101
2025-02-08 13:28:29 +03:00
dc99318ff0 Fix export 2025-02-08 13:27:38 +03:00
d2fc5f4d5c Merge pull request 'Fix dogsitters backend' (#100) from dsf-fix-1 into master
Reviewed-on: #100
2025-02-08 13:17:00 +03:00
938bd48fff Fix dogsitters backend 2025-02-08 13:15:02 +03:00
96f819dc91 Merge pull request 'fix' (#99) from sberhubproject into master
Reviewed-on: #99
2025-02-08 13:12:46 +03:00
25eee8adf5 fix
Some checks failed
platform/multy-stub/pipeline/head There was a failure building this commit
2025-02-08 13:10:58 +03:00
d2b2a29d3d Merge pull request 'Remove backend files' (#98) from dsf-fix-1 into master
Reviewed-on: #98
2025-02-08 13:10:27 +03:00
1cf71261d1 Remove backend files 2025-02-08 13:08:55 +03:00
88552eb04f Merge pull request 'Uncomment dogsitters app' (#97) from dsf-fix into master
Reviewed-on: #97
2025-02-08 12:49:30 +03:00
ab92c99321 Uncomment dogsitters app
Some checks failed
platform/multy-stub/pipeline/head There was a failure building this commit
2025-02-08 12:47:43 +03:00
02963de893 Merge pull request 'Изменение путей запросов' (#96) from dogsitters-finder-3 into master
Reviewed-on: #96
2025-02-08 12:41:38 +03:00
48550416d9 Изменение путей запросов
Some checks failed
platform/multy-stub/pipeline/head There was a failure building this commit
2025-02-08 12:40:39 +03:00
aa
878c5ffd68 Merge pull request 'изменение админ панели' (#95) from gamehub into master
Reviewed-on: #95
2025-02-08 11:45:19 +03:00
aaeii
6e37fe93f7 изменение админ панели
Some checks failed
platform/multy-stub/pipeline/head There was a failure building this commit
2025-02-08 11:44:00 +03:00
5 changed files with 35 additions and 140 deletions

View File

@@ -1,74 +0,0 @@
const { Router } = require("express");
const hash = require("pbkdf2-password")();
const { promisify } = require("node:util");
const jwt = require('jsonwebtoken')
const { getAnswer } = require("../../utils/common");
const { AuthModel } = require("./model/todo/auth");
const { TOKEN_KEY } = require('./const')
const { UserModel } = require("./model/todo/user");
const { requiredValidate } = require('./utils')
const router = Router();
router.post(
"/signup",
requiredValidate("login", "password", "email"),
async (req, res, next) => {
const { login, password, email } = req.body
const user = await AuthModel.findOne({ login });
if (user) {
throw new Error("Пользователь с таким логином уже существует");
}
hash({ password }, async function (err, pass, salt, hash) {
if (err) return next(err);
const user = await UserModel.create({ login, email });
await AuthModel.create({ login, hash, salt, userId: user.id });
res.json(getAnswer(null, { ok: true }))
})
}
)
function authenticate(login, pass, cb) {
AuthModel.findOne({ login }).populate('userId').exec().then((user) => {
if (!user) return cb(null, null)
hash({ password: pass, salt: user.salt }, function (err, pass, salt, hash) {
if (err) return cb(err)
if (hash === user.hash) return cb(null, user)
cb(null, null)
})
})
}
const auth = promisify(authenticate)
router.post('/signin', requiredValidate('login', 'password'), async (req, res) => {
const { login, password } = req.body
const user = await auth(login, password)
if (!user) {
throw new Error("Неверный логин или пароль")
}
const accessToken = jwt.sign({
...JSON.parse(JSON.stringify(user.userId)),
}, TOKEN_KEY, {
expiresIn: '12h'
})
res.json(getAnswer(null, {
user: user.userId,
token: accessToken,
}))
})
module.exports = router

View File

@@ -1,3 +1,2 @@
exports.DSF_AUTH_PASSWD_MODEL_NAME = 'DSF_AUTH_PASSWD'
exports.DSF_AUTH_USER_MODEL_NAME = 'DSF_AUTH_USER' exports.DSF_AUTH_USER_MODEL_NAME = 'DSF_AUTH_USER'
exports.DSF_INTERACTION_MODEL_NAME = 'DSF_INTERACTION' exports.DSF_INTERACTION_MODEL_NAME = 'DSF_INTERACTION'

View File

@@ -8,20 +8,20 @@ router.post("/auth", (request, response) => {
const { phoneNumber, password } = request.body; const { phoneNumber, password } = request.body;
console.log(phoneNumber, password); console.log(phoneNumber, password);
if (phoneNumber === "89999999999" || phoneNumber === "89559999999") { if (phoneNumber === "89999999999" || phoneNumber === "89559999999") {
response.send(require("../json/auth/success.json")); response.send(require("./json/auth/success.json"));
} else { } else {
response.status(401).send(require("../json/auth/error.json")); response.status(401).send(require("./json/auth/error.json"));
} }
}); });
router.post("/auth/2fa", (request, response) => { router.post("/auth/2fa", (request, response) => {
const { phoneNumber, code } = request.body; const { phoneNumber, code } = request.body;
if (code === "0000" && phoneNumber === "89999999999") { if (code === "0000" && phoneNumber === "89999999999") {
response.send(require("../json/2fa/dogsitter.success.json")); response.send(require("./json/2fa/dogsitter.success.json"));
} else if (code === "0000" && phoneNumber === "89559999999") { } else if (code === "0000" && phoneNumber === "89559999999") {
response.send(require("../json/2fa/owner.success.json")); response.send(require("./json/2fa/owner.success.json"));
} else { } else {
response.status(401).send(require("../json/2fa/error.json")); response.status(401).send(require("./json/2fa/error.json"));
} }
}); });
@@ -29,11 +29,11 @@ router.post("/register", (request, response) => {
const { firstName, secondName, phoneNumber, password, role } = request.body; const { firstName, secondName, phoneNumber, password, role } = request.body;
console.log(phoneNumber, password, role); console.log(phoneNumber, password, role);
if (phoneNumber === "89999999999" || phoneNumber === "89559999999") { if (phoneNumber === "89999999999" || phoneNumber === "89559999999") {
response.status(401).send(require("../json/register/error.json")); response.status(401).send(require("./json/register/error.json"));
} else if (role === "dogsitter") { } else if (role === "dogsitter") {
response.send(require("../json/register/dogsitter.success.json")); response.send(require("./json/register/dogsitter.success.json"));
} else { } else {
response.send(require("../json/register/owner.success.json")); response.send(require("./json/register/owner.success.json"));
} }
}); });
@@ -58,12 +58,14 @@ router.get("/auth/session", (request, response) => {
const decoded = jwt.verify(token, secretKey); const decoded = jwt.verify(token, secretKey);
if (decoded.role === "dogsitter") { if (decoded.role === "dogsitter") {
response.send(require("../json/role/dogsitter.success.json")); response.send(require("./json/role/dogsitter.success.json"));
} else { } else {
response.send(require("../json/role/owner.success.json")); response.send(require("./json/role/owner.success.json"));
} }
} catch (e) { } catch (e) {
console.log("token e:", e); console.log("token e:", e);
return response.status(403).json({ error: "Invalid token" }); return response.status(403).json({ error: "Invalid token" });
} }
}); });
module.exports = router

View File

@@ -1,44 +0,0 @@
const { Schema, model } = require("mongoose");
const {
DSF_AUTH_PASSWD_MODEL_NAME,
DSF_AUTH_USER_MODEL_NAME,
} = require("../../const");
const schema = new Schema({
login: {
type: String,
required: true,
unique: true
},
hash: {
type: String,
required: true
},
salt: {
type: String,
required: true
},
userId: {
type: Schema.Types.ObjectId,
ref: DSF_AUTH_USER_MODEL_NAME
},
created: {
type: Date,
default: () => new Date().toISOString(),
},
});
schema.set("toJSON", {
virtuals: true,
versionKey: false,
transform: function (doc, ret) {
delete ret._id;
},
});
schema.virtual("id").get(function () {
return this._id.toHexString();
});
exports.AuthModel = model(DSF_AUTH_PASSWD_MODEL_NAME, schema);

View File

@@ -21,7 +21,7 @@ router.get("/favourites", (request, response) => {
}); });
// router.get("/shopping-cart", (request, response) => { // router.get("/shopping-cart", (request, response) => {
// response.send(require("../json/shopping-cart/success.json")); // response.send(require("./json/shopping-cart/success.json"));
// }); // });
router.get("/shopping-cart", (request, response) => { router.get("/shopping-cart", (request, response) => {
@@ -175,35 +175,39 @@ router.post("/add-to-cart", async (req, res) => {
module.exports = router; module.exports = router;
const createElement = (key, value, buttonTitle) => ` const createElement = (key, value, buttonTitle, basePath) => `
<label> <label>
<input name="${key}" type="radio" ${ <input name="${key}" type="radio" ${
stubs[key] === value ? "checked" : "" stubs[key] === value ? "checked" : ""
} onclick="fetch('/api/admin/set/${key}/${value}')"/> } onclick="fetch('${basePath}/admin/set/${key}/${value}')"/>
${buttonTitle || value} ${buttonTitle || value}
</label> </label>
`; `;
router.get("/admin/home", (request, response) => { router.get("/admin/home", (request, response) => {
const basePath = request.baseUrl; // Получаем базовый путь маршрутизатора
response.send(` response.send(`
<div> <div>
<fieldset> <fieldset>
<legend>Настройка данных для /home</legend> <legend>Настройка данных для /home</legend>
${createElement("home", "success", "Отдать успешный ответ")} ${createElement("home", "success", "Отдать успешный ответ", basePath)}
${createElement("home", "empty", "Отдать пустой массив")} ${createElement("home", "empty", "Отдать пустой массив", basePath)}
${createElement("home", "error", "Отдать ошибку")} ${createElement("home", "error", "Отдать ошибку", basePath)}
</fieldset> </fieldset>
</div> </div>
`); `);
}); });
router.get("/admin/game-page", (request, response) => { router.get("/admin/game-page", (request, response) => {
response.send(` response.send(`
<div> <div>
<fieldset> <fieldset>
<legend>Настройка данных для /game-page</legend> <legend>Настройка данных для /game-page</legend>
${createElement("game-page", "success", "Отдать успешный ответ")} ${createElement(
"game-page",
"success",
"Отдать успешный ответ"
)}
${createElement("game-page", "empty", "Отдать пустой массив")} ${createElement("game-page", "empty", "Отдать пустой массив")}
${createElement("game-page", "error", "Отдать ошибку")} ${createElement("game-page", "error", "Отдать ошибку")}
@@ -217,7 +221,11 @@ router.get("/admin/categories", (request, response) => {
<div> <div>
<fieldset> <fieldset>
<legend>Настройка данных для /categories</legend> <legend>Настройка данных для /categories</legend>
${createElement("categories", "success", "Отдать успешный ответ")} ${createElement(
"categories",
"success",
"Отдать успешный ответ"
)}
${createElement("categories", "empty", "Отдать пустой массив")} ${createElement("categories", "empty", "Отдать пустой массив")}
${createElement("categories", "error", "Отдать ошибку")} ${createElement("categories", "error", "Отдать ошибку")}
</fieldset> </fieldset>
@@ -230,7 +238,11 @@ router.get("/admin/favourites", (request, response) => {
<div> <div>
<fieldset> <fieldset>
<legend>Настройка данных для /favourites</legend> <legend>Настройка данных для /favourites</legend>
${createElement("favourites", "success", "Отдать успешный ответ")} ${createElement(
"favourites",
"success",
"Отдать успешный ответ"
)}
${createElement("favourites", "empty", "Отдать пустой массив")} ${createElement("favourites", "empty", "Отдать пустой массив")}
${createElement("favourites", "error", "Отдать ошибку")} ${createElement("favourites", "error", "Отдать ошибку")}
</fieldset> </fieldset>