Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.06 KB | None | 0 0
  1. "use strict";
  2. var express = require("express");
  3. var bodyParser = require("body-parser");
  4. var path = require("path");
  5. var contacts = require(path.join(__dirname, "contacts.js"));
  6. var port = (process.env.PORT || 3000);
  7. var app = express();
  8. var baseAPI = "/api/v1";
  9.  
  10. /** Passport **/
  11.  
  12. var users = require("./users.js");
  13. var cors = require('cors');
  14. var passport = require('passport'),
  15. BasicStrategy = require('passport-http').BasicStrategy,
  16. LocalAPIKey = require('passport-localapikey').Strategy;
  17.  
  18. var Auth0Strategy = require('passport-auth0');
  19.  
  20. var strategy = new Auth0Strategy({
  21. domain: process.env.AUTH0_DOMAIN,
  22. clientID: process.env.AUTH0_CLIENT_ID,
  23. clientSecret: process.env.AUTH0_CLIENT_SECRET,
  24. callbackURL: process.env.AUTH0_CALLBACK_URL || 'http://localhost:3000/callback'
  25. }, function(accessToken, refreshToken, extraParams, profile, done) {
  26. // accessToken is the token to call Auth0 API (not needed in the most cases)
  27. // extraParams.id_token has the JSON Web Token
  28. // profile has all the information from the user
  29. return done(null, profile);
  30. });
  31.  
  32. passport.use(strategy);
  33.  
  34. passport.serializeUser(function(user, done) {
  35. done(null, user);
  36. });
  37.  
  38. passport.deserializeUser(function(user, done) {
  39. done(null, user);
  40. });
  41.  
  42. passport.use(new BasicStrategy(
  43. function(username, password, done) {
  44. users.findOne({
  45. username: username
  46. }, function(err, user) {
  47. if (err) {
  48. return done(err);
  49. }
  50. if (!user) {
  51. return done(null, false);
  52. }
  53. if (!user.validPassword(password)) {
  54. return done(null, false);
  55. }
  56. return done(null, user);
  57. });
  58.  
  59. }
  60. ));
  61.  
  62. passport.use(new LocalAPIKey(
  63. function(apikey, done) {
  64. users.findOne({
  65. apikey: apikey
  66. }, function(err, user) {
  67. if (err) {
  68. return done(err);
  69. }
  70. if (!user) {
  71. return done(null, false);
  72. }
  73. return done(null, user);
  74. });
  75. }
  76. ));
  77.  
  78. app.use(passport.initialize());
  79. app.use(passport.session());
  80. app.use(cors());
  81.  
  82. //// AÑADIR REQUEST PARA HACER LLAMADAS A OTRAS APIS ////
  83.  
  84. /*****/
  85.  
  86. app.use(express.static(path.join(__dirname, "public")));
  87. app.use(bodyParser.json());
  88.  
  89. app.get('/login',
  90. passport.authenticate('auth0', {
  91. session: true
  92. }),
  93. function(req, res) {
  94. res.redirect("/");
  95. });
  96.  
  97. app.get('/callback',
  98. passport.authenticate('auth0', {
  99. failureRedirect: '/login',
  100. sesion: true
  101. }),
  102. function(req, res) {
  103. if (!req.user) {
  104. throw new Error('user null');
  105. }
  106. res.redirect("/");
  107. }
  108. );
  109.  
  110. app.get("/", passport.authenticate(['auth0'], {
  111. session: false
  112. }), (request, response) => {
  113. console.log("New GET / simple");
  114. contacts.allContacts((err, contacts) => {
  115. response.send(contacts);
  116. });
  117. });
  118.  
  119. //GET all contacts
  120. app.get(baseAPI + "/contacts", passport.authenticate( /*['localapikey', 'basic']*/ ['auth0'], {
  121. session: false
  122. }), (request, response) => {
  123. console.log("New GET /contacts");
  124. contacts.allContacts((err, contacts) => {
  125. response.send(contacts);
  126. });
  127. });
  128.  
  129. app.post(baseAPI + "/contacts", (request, response) => {
  130. console.log("POST /contacts");
  131. var contact = request.body;
  132. contacts.add(contact);
  133. response.sendStatus(201);
  134. });
  135.  
  136. app.delete(baseAPI + "/contacts", (request, response) => {
  137. console.log("DELETE /contacts");
  138.  
  139. contacts.removeAll((err, numRemoved) => {
  140. console.log("contacts removed:" + numRemoved);
  141. response.sendStatus(200);
  142. });
  143.  
  144. });
  145.  
  146. app.get(baseAPI + "/contacts/:name", (request, response) => {
  147. var name = request.params.name;
  148. console.log("GET /contacts/" + name);
  149.  
  150. contacts.get(name, (err, contacts) => {
  151. if (contacts.length === 0) {
  152. response.sendStatus(404);
  153. }
  154. else {
  155. response.send(contacts);
  156. }
  157. });
  158. });
  159.  
  160.  
  161. app.delete(baseAPI + "/contacts/:name", (request, response) => {
  162. var name = request.params.name;
  163.  
  164. contacts.remove(name, (err, numRemoved) => {
  165. console.log("contacts removed:" + numRemoved);
  166. response.sendStatus(200);
  167. });
  168.  
  169. console.log("DELETE /contacts/" + name);
  170. });
  171.  
  172.  
  173. app.put(baseAPI + "/contacts/:name", (request, response) => {
  174. var name = request.params.name;
  175. var updatedContact = request.body;
  176.  
  177. contacts.update(name, updatedContact, (err, numUpdates) => {
  178. console.log("contacts updated:" + numUpdates);
  179. if (numUpdates === 0) {
  180. response.sendStatus(404);
  181. }
  182. else {
  183. response.sendStatus(200);
  184. }
  185.  
  186. });
  187.  
  188. console.log("UPDATE /contacts/" + name);
  189. });
  190.  
  191. contacts.connectDb((err) => {
  192. if (err) {
  193. console.log("Could not connect with MongoDB");
  194. process.exit(1);
  195. }
  196.  
  197. users.connectDb((err) => {
  198. if (err) {
  199. console.log("Could not connect with MongoDB");
  200. process.exit(1);
  201. }
  202.  
  203. app.listen(port, () => {
  204. console.log("Server with GUI up and running!!");
  205. });
  206. });
  207. });
  208.  
  209.  
  210. /**
  211. //GET specific contact
  212. app.get(baseAPI + "/contacts/:name", (request, response) => {
  213. console.log("New GET /contacts/" + request.params.name);
  214. var name = request.params.name;
  215. db.find({
  216. name: name
  217. }, (err, contacts) => {
  218. if (contacts.length === 0) {
  219. response.sendStatus(404);
  220. }
  221. else {
  222. response.send(contacts);
  223. }
  224. });
  225.  
  226. });
  227.  
  228. //POST new contact
  229. app.post(baseAPI + "/contacts", (request, response) => {
  230. console.log("New POST /contacts");
  231. var contact = request.body;
  232. db.insert(contact);
  233. response.sendStatus(201);
  234. });
  235.  
  236. //PUT specific contact
  237. app.put(baseAPI + "/contacts/:name", (request, response) => {
  238. var name = request.params.name;
  239. console.log("New PUT /contacts/" + name);
  240. var contactToUpdate = request.body;
  241. db.update({
  242. name: name
  243. }, contactToUpdate, {}, (err, numReplaced) => {
  244. if (numReplaced === 0) {
  245. response.sendStatus(404);
  246. }
  247. else {
  248. response.sendStatus(200);
  249. }
  250. });
  251. });
  252.  
  253. //DELETE all the contacts
  254. app.delete(baseAPI + "/contacts/", (request, response) => {
  255. console.log("New DELETE /contacts/");
  256. db.remove({}, {
  257. multi: true
  258. }, (err, numRemoved) => {
  259. response.sendStatus(200);
  260. console.log("Rows deleted = " + numRemoved);
  261. });
  262. });
  263.  
  264. //DELETE specific contact
  265. app.delete(baseAPI + "/contacts/:name", (request, response) => {
  266. console.log("New DELETE /contacts/" + request.params.name);
  267. var name = request.params.name;
  268. db.remove({
  269. name: name
  270. }, {
  271. multi: true
  272. }, (err, numRemoved) => {
  273. response.sendStatus(200);
  274. console.log("Rows deleted = " + numRemoved);
  275. });
  276. });
  277.  
  278. ***/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement