Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict";
- var express = require("express");
- var bodyParser = require("body-parser");
- var path = require("path");
- var contacts = require(path.join(__dirname, "contacts.js"));
- var port = (process.env.PORT || 3000);
- var app = express();
- var baseAPI = "/api/v1";
- /** Passport **/
- var users = require("./users.js");
- var cors = require('cors');
- var passport = require('passport'),
- BasicStrategy = require('passport-http').BasicStrategy,
- LocalAPIKey = require('passport-localapikey').Strategy;
- var Auth0Strategy = require('passport-auth0');
- var strategy = new Auth0Strategy({
- domain: process.env.AUTH0_DOMAIN,
- clientID: process.env.AUTH0_CLIENT_ID,
- clientSecret: process.env.AUTH0_CLIENT_SECRET,
- callbackURL: process.env.AUTH0_CALLBACK_URL || 'http://localhost:3000/callback'
- }, function(accessToken, refreshToken, extraParams, profile, done) {
- // accessToken is the token to call Auth0 API (not needed in the most cases)
- // extraParams.id_token has the JSON Web Token
- // profile has all the information from the user
- return done(null, profile);
- });
- passport.use(strategy);
- passport.serializeUser(function(user, done) {
- done(null, user);
- });
- passport.deserializeUser(function(user, done) {
- done(null, user);
- });
- passport.use(new BasicStrategy(
- function(username, password, done) {
- users.findOne({
- username: username
- }, function(err, user) {
- if (err) {
- return done(err);
- }
- if (!user) {
- return done(null, false);
- }
- if (!user.validPassword(password)) {
- return done(null, false);
- }
- return done(null, user);
- });
- }
- ));
- passport.use(new LocalAPIKey(
- function(apikey, done) {
- users.findOne({
- apikey: apikey
- }, function(err, user) {
- if (err) {
- return done(err);
- }
- if (!user) {
- return done(null, false);
- }
- return done(null, user);
- });
- }
- ));
- app.use(passport.initialize());
- app.use(passport.session());
- app.use(cors());
- //// AÑADIR REQUEST PARA HACER LLAMADAS A OTRAS APIS ////
- /*****/
- app.use(express.static(path.join(__dirname, "public")));
- app.use(bodyParser.json());
- app.get('/login',
- passport.authenticate('auth0', {
- session: true
- }),
- function(req, res) {
- res.redirect("/");
- });
- app.get('/callback',
- passport.authenticate('auth0', {
- failureRedirect: '/login',
- sesion: true
- }),
- function(req, res) {
- if (!req.user) {
- throw new Error('user null');
- }
- res.redirect("/");
- }
- );
- app.get("/", passport.authenticate(['auth0'], {
- session: false
- }), (request, response) => {
- console.log("New GET / simple");
- contacts.allContacts((err, contacts) => {
- response.send(contacts);
- });
- });
- //GET all contacts
- app.get(baseAPI + "/contacts", passport.authenticate( /*['localapikey', 'basic']*/ ['auth0'], {
- session: false
- }), (request, response) => {
- console.log("New GET /contacts");
- contacts.allContacts((err, contacts) => {
- response.send(contacts);
- });
- });
- app.post(baseAPI + "/contacts", (request, response) => {
- console.log("POST /contacts");
- var contact = request.body;
- contacts.add(contact);
- response.sendStatus(201);
- });
- app.delete(baseAPI + "/contacts", (request, response) => {
- console.log("DELETE /contacts");
- contacts.removeAll((err, numRemoved) => {
- console.log("contacts removed:" + numRemoved);
- response.sendStatus(200);
- });
- });
- app.get(baseAPI + "/contacts/:name", (request, response) => {
- var name = request.params.name;
- console.log("GET /contacts/" + name);
- contacts.get(name, (err, contacts) => {
- if (contacts.length === 0) {
- response.sendStatus(404);
- }
- else {
- response.send(contacts);
- }
- });
- });
- app.delete(baseAPI + "/contacts/:name", (request, response) => {
- var name = request.params.name;
- contacts.remove(name, (err, numRemoved) => {
- console.log("contacts removed:" + numRemoved);
- response.sendStatus(200);
- });
- console.log("DELETE /contacts/" + name);
- });
- app.put(baseAPI + "/contacts/:name", (request, response) => {
- var name = request.params.name;
- var updatedContact = request.body;
- contacts.update(name, updatedContact, (err, numUpdates) => {
- console.log("contacts updated:" + numUpdates);
- if (numUpdates === 0) {
- response.sendStatus(404);
- }
- else {
- response.sendStatus(200);
- }
- });
- console.log("UPDATE /contacts/" + name);
- });
- contacts.connectDb((err) => {
- if (err) {
- console.log("Could not connect with MongoDB");
- process.exit(1);
- }
- users.connectDb((err) => {
- if (err) {
- console.log("Could not connect with MongoDB");
- process.exit(1);
- }
- app.listen(port, () => {
- console.log("Server with GUI up and running!!");
- });
- });
- });
- /**
- //GET specific contact
- app.get(baseAPI + "/contacts/:name", (request, response) => {
- console.log("New GET /contacts/" + request.params.name);
- var name = request.params.name;
- db.find({
- name: name
- }, (err, contacts) => {
- if (contacts.length === 0) {
- response.sendStatus(404);
- }
- else {
- response.send(contacts);
- }
- });
- });
- //POST new contact
- app.post(baseAPI + "/contacts", (request, response) => {
- console.log("New POST /contacts");
- var contact = request.body;
- db.insert(contact);
- response.sendStatus(201);
- });
- //PUT specific contact
- app.put(baseAPI + "/contacts/:name", (request, response) => {
- var name = request.params.name;
- console.log("New PUT /contacts/" + name);
- var contactToUpdate = request.body;
- db.update({
- name: name
- }, contactToUpdate, {}, (err, numReplaced) => {
- if (numReplaced === 0) {
- response.sendStatus(404);
- }
- else {
- response.sendStatus(200);
- }
- });
- });
- //DELETE all the contacts
- app.delete(baseAPI + "/contacts/", (request, response) => {
- console.log("New DELETE /contacts/");
- db.remove({}, {
- multi: true
- }, (err, numRemoved) => {
- response.sendStatus(200);
- console.log("Rows deleted = " + numRemoved);
- });
- });
- //DELETE specific contact
- app.delete(baseAPI + "/contacts/:name", (request, response) => {
- console.log("New DELETE /contacts/" + request.params.name);
- var name = request.params.name;
- db.remove({
- name: name
- }, {
- multi: true
- }, (err, numRemoved) => {
- response.sendStatus(200);
- console.log("Rows deleted = " + numRemoved);
- });
- });
- ***/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement