41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
import express from "express";
|
|
import * as services from "../services/services.js";
|
|
import * as config from "../config/index.js";
|
|
import AgileCRMManager from "agile_crm";
|
|
const { CRM_USER, CRM_EMAIL, CRM_KEY } = config;
|
|
|
|
var router = express.Router();
|
|
var agileAPI = new AgileCRMManager(CRM_USER, CRM_KEY, CRM_EMAIL);
|
|
|
|
// LOGIN
|
|
router.post("/login", async (req, res) => {
|
|
try {
|
|
if (!req.body.password || !req.body.email) {
|
|
throw services.newError("No input data", 204);
|
|
}
|
|
const user = await services.fetchUser(req.body.email);
|
|
await services.checkPassword(req.body.password, user.password);
|
|
const safeUser = services.prepareSafeUser(user);
|
|
var token = services.generateAuthToken(safeUser);
|
|
res.header("x-auth-token", token).status(202).send(safeUser);
|
|
} catch (error) {
|
|
services.handleError(error, res);
|
|
}
|
|
});
|
|
|
|
// REGISTER
|
|
router.post("/register", async (req, res) => {
|
|
try {
|
|
await services.checkEmailTaken(req.body.email);
|
|
const user = await services.createUser(req);
|
|
await user.save();
|
|
const contact = services.composeNewContact(user);
|
|
agileAPI.contactAPI.add(contact, null, null);
|
|
res.sendStatus(201);
|
|
} catch (e) {
|
|
services.handleError(e, res);
|
|
}
|
|
});
|
|
|
|
export default router;
|