translate form tutorial
This commit is contained in:
parent
a468f037c6
commit
68f77317a3
|
@ -41,35 +41,48 @@ export const getEndpoints = (dbObject) => {
|
||||||
|
|
||||||
export const postEndpoints = (db, data) => {
|
export const postEndpoints = (db, data) => {
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
endpoint(router, Story, "create", "insert", db, data);
|
protectedEndpoint(router, Story, "create", "insert", db, data);
|
||||||
endpoint(router, Story, "edit", "update", db, data);
|
protectedEndpoint(router, Story, "edit", "update", db, data);
|
||||||
endpoint(router, Story, "delete", "update", db, data);
|
protectedEndpoint(router, Story, "delete", "update", db, data);
|
||||||
endpoint(router, Submission, "create", "insert", db, data);
|
protectedEndpoint(router, Submission, "create", "insert", db, data);
|
||||||
endpoint(router, Submission, "edit", "update", db, data);
|
protectedEndpoint(router, Submission, "edit", "update", db, data);
|
||||||
endpoint(router, Submission, "delete", "update", db, data);
|
protectedEndpoint(router, Submission, "delete", "update", db, data);
|
||||||
endpoint(router, Publication, "create", "insert", db, data);
|
protectedEndpoint(router, Publication, "create", "insert", db, data);
|
||||||
endpoint(router, Publication, "edit", "update", db, data);
|
protectedEndpoint(router, Publication, "edit", "update", db, data);
|
||||||
endpoint(router, Publication, "delete", "del", db, data);
|
protectedEndpoint(router, Publication, "delete", "del", db, data);
|
||||||
return router;
|
return router;
|
||||||
};
|
};
|
||||||
|
|
||||||
const endpoint = (router, Entity, path, method, db, data) => {
|
const protectedEndpoint = (router, Entity, path, method, db, data) => {
|
||||||
router.post(`/${Entity.name.toLowerCase()}/${path}`, async (req, res) => {
|
router.post(`/${Entity.name.toLowerCase()}/${path}`, async (req, res) => {
|
||||||
try {
|
passport.authenticate(
|
||||||
logger.trace({ data: req.body }, "POST request received");
|
"jwt",
|
||||||
const entity = new Entity(req.body);
|
{ session: false },
|
||||||
await entity[method](db, data);
|
async (err, user, info) => {
|
||||||
res.sendStatus(200);
|
if (err) {
|
||||||
data.init();
|
logger.error(err);
|
||||||
return;
|
}
|
||||||
} catch (error) {
|
if (info !== undefined) {
|
||||||
logger.error(error);
|
logger.info(info.message);
|
||||||
if (error instanceof TypeError) {
|
res.status(401).send(info.message);
|
||||||
res.sendStatus(400);
|
}
|
||||||
return;
|
try {
|
||||||
}
|
logger.trace({ data: req.body }, "POST request received");
|
||||||
res.sendStatus(500);
|
const entity = new Entity(req.body);
|
||||||
return;
|
await entity[method](db, data);
|
||||||
}
|
res.sendStatus(200);
|
||||||
|
data.init();
|
||||||
|
return;
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(error);
|
||||||
|
if (error instanceof TypeError) {
|
||||||
|
res.sendStatus(400);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
res.sendStatus(500);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -16,6 +16,7 @@
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^8.57.0",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
|
"helmet": "^7.1.0",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"knex": "^2.5.1",
|
"knex": "^2.5.1",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
import passport from "passport";
|
||||||
|
import User from "../sequelize";
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
app.get("/findUser", (req, res, next) => {
|
||||||
|
passport.authenticate("jwt", { session: false }, (err, user, info) => {
|
||||||
|
if (err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
if (info !== undefined) {
|
||||||
|
console.log(info.message);
|
||||||
|
res.status(401).send(info.message);
|
||||||
|
} else if (user.username === req.query.username) {
|
||||||
|
User.findOne({
|
||||||
|
where: {
|
||||||
|
username: req.query.username,
|
||||||
|
},
|
||||||
|
}).then((userInfo) => {
|
||||||
|
if (userInfo != null) {
|
||||||
|
console.log("user found in db from findUsers");
|
||||||
|
res.status(200).send({
|
||||||
|
auth: true,
|
||||||
|
first_name: userInfo.first_name,
|
||||||
|
last_name: userInfo.last_name,
|
||||||
|
email: userInfo.email,
|
||||||
|
username: userInfo.username,
|
||||||
|
password: userInfo.password,
|
||||||
|
message: "user found in db",
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.error("no user exists in db with that username");
|
||||||
|
res.status(401).send("no user exists in db with that username");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.error("jwt id and username do not match");
|
||||||
|
res.status(403).send("username and jwt token do not match");
|
||||||
|
}
|
||||||
|
})(req, res, next);
|
||||||
|
});
|
||||||
|
};
|
13
server.mjs
13
server.mjs
|
@ -6,19 +6,19 @@ import { Data } from "./objects/Data.mjs";
|
||||||
import { db } from "./db.mjs";
|
import { db } from "./db.mjs";
|
||||||
import { getEndpoints, postEndpoints } from "./objects/Endpoints.mjs";
|
import { getEndpoints, postEndpoints } from "./objects/Endpoints.mjs";
|
||||||
import cors from "cors";
|
import cors from "cors";
|
||||||
|
import helmet from "helmet";
|
||||||
|
import passport from "passport";
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
const port = 4000;
|
const port = 4000;
|
||||||
const corsOptions = {
|
|
||||||
origin: ["http://localhost:5173"],
|
|
||||||
};
|
|
||||||
app.use(cors());
|
app.use(cors());
|
||||||
app.use(pinoHTTP({ logger }));
|
app.use(pinoHTTP({ logger }));
|
||||||
app.use(bodyParser.json());
|
app.use(bodyParser.json());
|
||||||
|
|
||||||
// app.use(bodyParser.urlencoded({ extended: false }));
|
app.use(bodyParser.urlencoded({ extended: false }));
|
||||||
// app.use(helmet());
|
app.use(helmet());
|
||||||
// app.use(passport.initialize());
|
app.use(passport.initialize());
|
||||||
|
|
||||||
const data = new Data(db);
|
const data = new Data(db);
|
||||||
await data.init();
|
await data.init();
|
||||||
|
@ -32,4 +32,3 @@ app.listen(port, (err) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
export default app;
|
export default app;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue