ulce31
05/31/2022, 3:42 PMrp_st
05/31/2022, 4:48 PMrp_st
05/31/2022, 4:48 PMulce31
06/01/2022, 3:07 PMjs
import express from "express";
import bodyParser from "body-parser";
import cors from "cors";
import morgan from "morgan";
import supertokens from "supertokens-node";
import Session from "supertokens-node/recipe/session";
import { errorHandler, middleware } from "supertokens-node/framework/express";
import dotenv from "dotenv";
dotenv.config();
import router from "./routes";
import swaggerUi from "swagger-ui-express";
import yamljs from "yamljs";
const swaggerDoc = yamljs.load("swagger.yaml");
export default class Server {
/**
* Config server
* @returns {app}
*/
static initSuperTokens() {
return supertokens.init({
framework: "express",
supertokens: { connectionURI: `${process.env.SUPERTKNS_CORE_ADDR}` },
appInfo: {
appName: "peb-app",
apiDomain: `${process.env.API_ADDR}`,
websiteDomain: `${process.env.UI_ADDR}`,
apiBasePath: "/",
websiteBasePath: "/",
},
recipeList: [Session.init()],
});
}
static config() {
this.initSuperTokens();
const app = express();
app.use(
cors({
origin: `${process.env.UI_ADDR}`,
allowedHeaders: ["content-type", ...supertokens.getAllCORSHeaders()],
credentials: true,
})
);
app.use(middleware());
app.use(
morgan(
':remote-addr - :remote-user [:date[web]] ":method :url HTTP/:http-version" :status :res[content-length]'
)
);
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDoc));
//Configuration de l'app
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
//Configuration des routes de l'API depuis routes.js
app.use("/", router);
app.use(errorHandler());
/*
// Implémente ton gestionnaire d'erreurs
app.use((err: unknown, req: Request, res: Response, next: NextFunction) => { });
*/
return app;
}
}
rp_st
06/01/2022, 3:12 PMrp_st
06/01/2022, 3:12 PMulce31
06/01/2022, 3:13 PMulce31
06/01/2022, 3:14 PMjs
static async auth(req, res) {
let status = 200;
let body = {};
try {
let { email, mot_de_passe } = req.body;
let user = await User.findOne({ email: email })
.populate({ path: "poste", select: "libelle" })
.populate({
path: "service",
select: "abreviation denomination _id",
})
.populate({ path: "role", select: "-__v" })
.select("-__v -created_at");
if (
user &&
user.status === true &&
crypto.createHash("sha256").update(mot_de_passe).digest("hex") ===
user.mot_de_passe
) {
console.log(user["_id"]);
let userId = user["_id"];
await Session.createNewSession(res, userId);
let { mot_de_passe, ...loggedUser } = user.toObject();
body = { message: "Utilisateur connecté :white_check_mark: !" };
} else {
status = 401;
new Error("Unauthorized");
}
} catch (e) {
status = status !== 200 ? status : 500;
body = {
error: e.error || "User authentication",
message: e.message || "An error is occured into user auth",
};
}
return res.status(status).json(body);
}
rp_st
06/01/2022, 3:17 PMulce31
06/01/2022, 3:22 PMjson
{"error":"User authentication","message":"No SuperTokens core available to query"}
rp_st
06/01/2022, 3:23 PMrp_st
06/01/2022, 3:23 PMprocess.env.SUPERTKNS_CORE_ADDR
is correctulce31
06/01/2022, 3:24 PMrp_st
06/01/2022, 3:25 PMulce31
06/01/2022, 3:25 PMrp_st
06/01/2022, 3:25 PMrp_st
06/01/2022, 3:26 PMulce31
06/01/2022, 3:26 PMulce31
06/01/2022, 3:27 PMyaml
supertokens-dev:
container_name: supertokens-dev
build:
context: ./supertokens-core
dockerfile: Dockerfile.dev
ports:
- "3567:3567"
rp_st
06/01/2022, 3:32 PMulce31
06/01/2022, 3:35 PMrp_st
06/01/2022, 3:38 PMulce31
06/01/2022, 3:38 PMrp_st
06/01/2022, 3:39 PMulce31
06/01/2022, 3:45 PMrp_st
06/01/2022, 3:45 PMulce31
06/01/2022, 3:46 PMrp_st
06/01/2022, 3:46 PMSuperTokens is an open source authentication solution offering features like: Different types of login: Email / password, Passwordless (OTP or Magic link based).
Powered by