Advertisement
Guest User

Untitled

a guest
May 30th, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.80 KB | None | 0 0
  1. var mongoose = require('mongoose');
  2. var passport = require('passport');
  3. var config = require('../config/database');
  4. require('../config/passport')(passport);
  5. //require('../auth/facebook')(passport);
  6. var express = require('express');
  7. var jwt = require('jsonwebtoken');
  8. var router = express.Router();
  9. var User = require("../models/user");
  10. var FileMongo = require("../models/FileMongo");
  11. var FolderMongo = require("../models/FolderMongo");
  12. var Book = require("../models/book");
  13. var fs = require('fs');
  14. var multer = require('multer');
  15. var upload = multer({ dest: './public/' });
  16.  
  17. var passportFacebook = require('../auth/facebook');
  18. var passportGoogle = require('../auth/google');
  19. var passportGitHub = require('../auth/github');
  20.  
  21. //var router = express.Router([options]);
  22.  
  23.  
  24.  
  25. /* creation Token */
  26. getToken = function (headers) {
  27. if (headers && headers.authorization) {
  28. var parted = headers.authorization.split(' ');
  29. if (parted.length === 2) {
  30. return parted[1];
  31. } else {
  32. return null;
  33. }
  34. } else {
  35. return null;
  36. }
  37. };
  38.  
  39. /* config multer dossier cible et nom du file */
  40. const storage = multer.diskStorage({
  41. destination: function (req, file, cb) {
  42. cb(null, './public/')
  43. },
  44. filename: function (req, file, cb) {
  45. cb(null, file.originalname)
  46. }
  47. });
  48.  
  49.  
  50. /* GET home page. */
  51. router.get('/', function(req, res, next) {
  52. res.send('Express RESTful API');
  53. });
  54.  
  55.  
  56. router.post('/signup', function(req, res) {
  57. if (!req.body.username || !req.body.password) {
  58. res.json({success: false, msg: 'Please pass username and password.'});
  59. } else {
  60. var newUser = new User({
  61. username: req.body.username,
  62. password: req.body.password
  63. });
  64. // save the user
  65. newUser.save(function(err) {
  66. if (err) {
  67. return res.json({success: false, msg: 'Username already exists.'});
  68. }
  69. res.json({success: true, msg: 'Successful created new user.'});
  70. });
  71. }
  72. });
  73.  
  74. /* SAVE FILE */
  75. router.post('/uploadFileMongo', function(req, res, next) {
  76. FileMongo.create(req.body, function (err, post) {
  77. if (err){
  78. return next(err);
  79. }
  80. res.json(post);
  81. });
  82. });
  83.  
  84. /* SAVE URL FILE */
  85. router.post('/saveURLFileMongo', function(req, res, next) {
  86. FileMongo.findOneAndUpdate({_id : req.body._id, owner: req.body.owner}, {url: req.body.url},{new: true}).then((data) =>{
  87. if(data === null){
  88. throw new Error('File Not Found');
  89. }
  90. res.json({ message: 'File updated!' });
  91. }).catch( (error) => {
  92. //Deal with all your errors here with your preferred error handle middleware / method
  93. res.status(500).json({ message: 'Some Error!' });
  94. console.log(error);
  95. });
  96. });
  97.  
  98. /* SAVE FOLDER */
  99. router.post('/createFolder', function(req, res, next) {
  100. FolderMongo.create(req.body, function (err, post) {
  101. if (err){
  102. return next(err);
  103. }
  104. res.json(post);
  105. });
  106. });
  107.  
  108. /* DELETE FILE */
  109. router.post('/deleteFileMongo', function(req, res, next) {
  110. FileMongo.remove(req.body, function (err, post) {
  111. if (err){
  112. return next(err);
  113. }
  114. //Delete file multer dans Public
  115. fs.unlink('./public/' + req.body._id);
  116. res.json(post);
  117.  
  118. });
  119. });
  120.  
  121. /* DELETE FOLDER */
  122. router.post('/deleteFolderMongo', function(req, res, next) {
  123. FolderMongo.remove({_id : req.body._id, name: req.body.name, owner: req.body.owner}, function (err, post) {
  124. if (err){
  125. return next(err);
  126. }
  127. res.json(post);
  128.  
  129. });
  130. });
  131.  
  132. /* Rename FOLDER */
  133. router.post('/renameFolderMongo', function(req, res, next) {
  134. FolderMongo.findOneAndUpdate({_id : req.body._id, owner: req.body.owner}, {name: req.body.name},{new: true}).then((data) =>{
  135. if(data === null){
  136. throw new Error('Folder Not Found');
  137. }
  138. res.json({ message: 'Folder updated!' });
  139. }).catch( (error) => {
  140. //Deal with all your errors here with your preferred error handle middleware / method
  141. res.status(500).json({ message: 'Some Error!' });
  142. console.log(error);
  143. });
  144. });
  145.  
  146. /* Move Folder */
  147. router.post('/moveFolder', function(req, res, next) {
  148. FolderMongo.findOneAndUpdate({_id : req.body._id, owner: req.body.owner}, {path: req.body.path, parent: req.body.parent},{new: true}).then((data) =>{
  149. if(data === null){
  150. throw new Error('Folder Not Found');
  151. }
  152. res.json({ message: 'Folder updated!' });
  153. }).catch( (error) => {
  154. //Deal with all your errors here with your preferred error handle middleware / method
  155. res.status(500).json({ message: 'Some Error!' });
  156. console.log(error);
  157. });
  158. });
  159.  
  160. /* Move File */
  161. router.post('/moveFile', function(req, res, next) {
  162. FileMongo.findOneAndUpdate({_id : req.body._id, owner: req.body.owner}, {path: req.body.path},{new: true}).then((data) =>{
  163. if(data === null){
  164. throw new Error('File Not Found');
  165. }
  166. res.json({ message: 'File updated!' });
  167. }).catch( (error) => {
  168. //Deal with all your errors here with your preferred error handle middleware / method
  169. res.status(500).json({ message: 'Some Error!' });
  170. console.log(error);
  171. });
  172. });
  173.  
  174.  
  175. /* Rename FILE */
  176. router.post('/renameFileMongo', function(req, res, next) {
  177. FileMongo.findOneAndUpdate({_id : req.body._id, owner: req.body.owner}, {name: req.body.name},{new: true}).then((data) =>{
  178. if(data === null){
  179. throw new Error('File Not Found');
  180. }
  181. res.json({ message: 'File updated!' });
  182. }).catch( (error) => {
  183. //Deal with all your errors here with your preferred error handle middleware / method
  184. res.status(500).json({ message: 'Some Error!' });
  185. console.log(error);
  186. });
  187. });
  188.  
  189. /* Get Current folder */
  190. router.post('/getMainFolder', function(req, res) {
  191. FolderMongo.findOne({
  192. path: req.body.path,
  193. owner: req.body.owner
  194. }, function(err, folder) {
  195. res.json(folder);
  196. });
  197.  
  198. });
  199.  
  200. /* Get tout les folders du mainFolder */
  201. router.post('/getFolderList', function(req, res) {
  202. FolderMongo.find({
  203. parent: req.body.mainPath,
  204. owner: req.body.owner
  205. }, function(err, folder) {
  206. res.json(folder);
  207. });
  208.  
  209. });
  210.  
  211. /* Get tout les folders du user */
  212. router.post('/getFolderAppList', function(req, res) {
  213. FolderMongo.find({
  214. owner: req.body.owner
  215. }, function(err, folder) {
  216. res.json(folder);
  217. });
  218. });
  219.  
  220. /* Get tout les files du mainFolder */
  221. router.post('/getFileList', function(req, res) {
  222. FileMongo.find({
  223. path: req.body.mainPath,
  224. owner: req.body.owner
  225. }, function(err, files) {
  226. res.json(files);
  227. });
  228.  
  229. });
  230.  
  231. /* Login */
  232. router.post('/signin', function(req, res) {
  233. User.findOne({
  234. username: req.body.username
  235. }, function(err, user) {
  236. if (err) throw err;
  237.  
  238. if (!user) {
  239. res.status(401).send({success: false, msg: 'Authentication failed. User not found.'});
  240. } else {
  241. // check if password matches
  242. user.comparePassword(req.body.password, function (err, isMatch) {
  243. if (isMatch && !err) {
  244. console.log('req.user.username log : ' + JSON.stringify(user));
  245. // if user is found and password is right create a token
  246. var token = jwt.sign(user.toJSON(), config.secret);
  247. // return the information including token as JSON
  248. res.json({success: true, token: 'JWT ' + token});
  249. } else {
  250. res.status(401).send({success: false, msg: 'Authentication failed. Wrong password.'});
  251. }
  252. });
  253. }
  254. });
  255. });
  256.  
  257.  
  258. /* Multer upload */
  259. router.post('/upload' , multer({storage: storage, limits: {fileSize: 30000000000}}).array("public[]", 12) ,function(req,res,next){
  260. res.send(req.files);
  261. });
  262.  
  263. /* Get utilisateur courant */
  264. router.get('/getCurrentUser', passport.authenticate('jwt', { session: false}), function(req, res) {
  265. var token = getToken(req.headers);
  266.  
  267. if (token) {
  268. res.json(req.user);
  269. } else {
  270. return res.status(403).send({success: false, msg: 'Unauthorized.'});
  271. }
  272. });
  273.  
  274.  
  275.  
  276. ////////////
  277.  
  278.  
  279.  
  280. /* GET users listing. */
  281. router.get('/', ensureAuthenticated, function(req, res, next) {
  282. res.render('user', { user: req.user });
  283. });
  284.  
  285. function ensureAuthenticated(req, res, next) {
  286. if (req.isAuthenticated()) { return next(); }
  287. res.redirect('/api/login');
  288. }
  289.  
  290. /* FACEBOOK ROUTER */
  291. router.get('/facebook', passportFacebook.authenticate('facebook'));
  292.  
  293.  
  294. ///////////////////
  295. router.get('/facebook/callback',
  296. passportFacebook.authenticate('facebook', { failureRedirect: 'api/' }),
  297. function(req, res) {
  298. console.log('faceeeeboookk !!');
  299. // Successful authentication, redirect home.
  300. res.redirect('/api/main');
  301. });
  302. // router.get('/facebook/callback/:id', passport.authenticate('facebook'), function(req, res, err, user, info){
  303. // console.log('faceeeeboookk !!');
  304. //
  305. // //console.log('faceeeeboookk !!' + JSON.stringify(req));
  306. // //console.log('faceeeeboookk !!' + JSON.stringify(res));
  307. // //console.log('faceeeeboookk !!' + next);
  308. //
  309. // // console.log('yaaaaaaTTTTa ' + JSON.stringify(user));
  310. // // if(err){
  311. // // console.log('errrrooor : ' + err);
  312. // // //if(res){
  313. // // //res.json({ error: err });
  314. // // return next(err);
  315. // // //}
  316. // //
  317. // // }
  318. // // console.log('req.user.username log : ' + err + info);
  319. // // // Successful authentication, redirect home.
  320. // // if(user){
  321. // // User.findOne({username: user.profile.displayName},function(err,result){
  322. // // if(!result){
  323. // // var newUser = new User({username: user.profile.displayName, id: user.profile.id, password: 'couille'});
  324. // // // save the user
  325. // // console.log('rererer : '+ JSON.stringify(newUser));
  326. // // newUser.save(function(err) {
  327. // // if (err) {
  328. // // console.log('err already exists.' + err);
  329. // // }
  330. // // console.log('Successful created new user.');
  331. // // return req.res.redirect('/main');
  332. // //
  333. // // });
  334. // // }else{
  335. // // return next(err);
  336. // // }
  337. // // });
  338. // // }else{
  339. // // return req.res.redirect('/login');
  340. // // }
  341. //
  342. //
  343. //
  344. // });
  345.  
  346.  
  347.  
  348. // router.get('/facebook',
  349. // passportFacebook.authenticate('facebook', { scope: ['read_stream', 'publish_actions'] })
  350. // );
  351.  
  352. /* GOOGLE ROUTER */
  353. router.get('/google', passportGoogle.authenticate('google', { scope: 'https://www.google.com/m8/feeds' }));
  354.  
  355. router.get('/google/callback', passportGoogle.authenticate('google', { successRedirect : '/', failureRedirect: '/login' }), function(req, res) {
  356. res.redirect('/');
  357. });
  358. router.get('/google',
  359. passport.authenticate('google', { scope: ['read_stream', 'publish_actions'] })
  360. );
  361.  
  362. /* GITHUB ROUTER */
  363. router.get('/github', passportGitHub.authenticate('github', { scope: [ 'user:email' ] }));
  364.  
  365. router.get('/auth/github/callback', passportGitHub.authenticate('github', { successRedirect : '/', failureRedirect: '/login' }), function(req, res) {
  366. // Successful authentication, redirect home.
  367. res.redirect('/');
  368. });
  369. router.get('/github',
  370. passport.authenticate('github', { scope: ['read_stream', 'publish_actions'] })
  371. );
  372.  
  373.  
  374. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement