Advertisement
Guest User

Untitled

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