Advertisement
Guest User

Untitled

a guest
May 11th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.88 KB | None | 0 0
  1. /**
  2. * Created by guusv on 2/8/2017.
  3. */
  4. // fmon version 2 - (Mains Frequency Monitoring API)
  5. var express = require('express');
  6. var router = express.Router();
  7. var jwt = require('jwt-simple');
  8. var path = require('path');
  9. var mysql = require('mysql');
  10.  
  11.  
  12. //
  13. // Alle endpoint behalve /apiv2/login require X-Access-Token
  14. //
  15. // Ook kan (weg laten van newRegExp):
  16. // router.all(/[^(\/login)]/, function (req, res, next)
  17. // Let op ! zonder ' (quotes)
  18. //
  19. router.all( new RegExp("[^(\/login)]"), function (req, res, next) {
  20.  
  21. // Zonder reguliere expressie een if gebruiken om router eruit
  22. // te filteren:
  23. // if( req.url.indexOf('/login') > -1) {
  24. // return next();
  25. // }
  26.  
  27. // For all the others
  28. var token = (req.header('X-Access-Token')) || '';
  29. if (token) {
  30. try {
  31. var decoded = jwt.decode(token, req.app.get('secretkey'));
  32.  
  33. var connection = mysql.createConnection(
  34. {
  35. host : 'localhost',
  36. user : 'root',
  37. password : 'root123',
  38. database : 'meetopstelling',
  39. }
  40. );
  41.  
  42. connection.connect();
  43.  
  44. var usernameCheck = 'SELECT * FROM gebruiker WHERE gebruikersnaam = ?';
  45.  
  46. connection.query(usernameCheck,[decoded.iss], function(err, rows, fields) {
  47. if (err) throw err;
  48.  
  49. if (rows.length > -1){
  50. req.app.set("userid", decoded.iss);
  51. console.log("Userid: " + req.app.get('userid'));
  52. return next();
  53. } else {
  54. res.status(401);
  55. res.json({
  56. "status": 401, "message": "unknown userid, bye"
  57. });
  58. }
  59. });
  60. connection.end();
  61. }
  62. catch (err) {
  63. console.log("Authorization failed: " + err);
  64. res.status(401);
  65. res.json({
  66. "status": 401, "message": "unknown userid, bye"
  67. });
  68. }
  69. }
  70. });
  71.  
  72.  
  73. // Restfull login
  74. router.post('/login', function (req, res) {
  75.  
  76. var username = req.body.username || '';
  77. var password = req.body.password || '';
  78.  
  79.  
  80. // Check for empy body
  81. if (username == '' || password == '') {
  82. res.status(401);
  83. res.json({
  84. "status": 401,
  85. "message": "EMPTY FIELDS!"
  86. });
  87. return;
  88. }
  89.  
  90.  
  91. var connection = mysql.createConnection(
  92. {
  93. host : 'localhost',
  94. user : 'root',
  95. password : 'root123',
  96. database : 'meetopstelling',
  97. }
  98. );
  99.  
  100. connection.connect();
  101.  
  102. var loginQuery = 'SELECT * FROM gebruiker WHERE gebruikersnaam = ? && wachtwoord = ?';
  103.  
  104. // do db lookup
  105. connection.query(loginQuery,[username, password], function(err, rows, fields) {
  106. if (err) throw err;
  107. // Check for valid user/passwd combo
  108. if (rows.length > 0 ) {
  109. var now = new Date();
  110. var expires = now.setHours(now.getDay() + 5);
  111. var token = jwt.encode({
  112. iss: username,
  113. exp: expires
  114. }, req.app.get('secretkey'));
  115.  
  116. res.status(200);
  117. res.json({
  118. token: token,
  119. expires: expires,
  120. user: username
  121. });
  122. }
  123. else {
  124. res.status(401);
  125. res.json({
  126. "status": 401,
  127. "message": "INVALID USERNAME OR PASSWORD!"
  128. });
  129. }
  130. });
  131.  
  132. connection.end();
  133. });
  134.  
  135.  
  136. router.post('/test', function (req, res) {
  137. var data = req.body.data || '';
  138.  
  139. console.log(data);
  140.  
  141. var connection = mysql.createConnection(
  142. {
  143. host : 'localhost',
  144. user : 'root',
  145. password : 'root123',
  146. database : 'meetopstelling',
  147. }
  148. );
  149.  
  150. connection.connect();
  151.  
  152. var addQuery = 'INSERT INTO test(datastring) values(?)';
  153.  
  154. connection.query(addQuery,[data], function(err, rows, fields) {
  155. if (err) throw err;
  156.  
  157.  
  158. res.json({
  159. "status": 200,
  160. "message": "SUCCEEDED!"
  161. });
  162.  
  163. });
  164.  
  165. });
  166.  
  167.  
  168. router.post('/gegevens', function (req, res) {
  169. var username = req.app.get('userid');
  170.  
  171. var tijd = new Date();
  172. var waarde = req.body.waarde || '';
  173. var beschrijving = req.body.beschrijving || '';
  174. var locatieLong = req.body.locatieLong || '';
  175. var locatieLat = req.body.locatieLat || '';
  176.  
  177. var connection = mysql.createConnection(
  178. {
  179. host : 'localhost',
  180. user : 'root',
  181. password : 'root123',
  182. database : 'meetopstelling',
  183. }
  184. );
  185.  
  186. connection.connect();
  187.  
  188. var usernameQuery = 'select gebruiker.id from gebruiker WHERE gebruiker.gebruikersnaam = ?';
  189. var postDataQuery = 'INSERT INTO meetopstelling values(3,?,?,?,?,?,?)';
  190.  
  191. connection.query(usernameQuery,[username], function(err, rows, fields) {
  192. if (err) throw err;
  193.  
  194. if (rows.length > 0){
  195. var id = rows[0].id;
  196. console.log(id);
  197. connection.query(postDataQuery,[tijd, waarde, locatieLong, locatieLat, beschrijving, id], function(err, rows, fields) {
  198. if (err) throw err;
  199.  
  200. res.json({
  201. "status": 200,
  202. "message": "SUCCEEDED!"
  203. });
  204. });
  205. } else {
  206. res.json({
  207. "status": 400,
  208. "message": "FAILED!"
  209. });
  210. }
  211. });
  212. });
  213.  
  214.  
  215.  
  216. router.get('/freq', function (req, res) {
  217. var username = req.app.get('userid');
  218. var results = [];
  219.  
  220.  
  221. var connection = mysql.createConnection(
  222. {
  223. host : 'localhost',
  224. user : 'root',
  225. password : 'root123',
  226. database : 'meetopstelling',
  227. }
  228. );
  229.  
  230. connection.connect();
  231.  
  232. var meetingRows = 'SELECT meetopstelling.tijd, meetopstelling.waarde, meetopstelling.beschrijving, meetopstelling.locatieLat, meetopstelling.locatieLong, gebruiker.gebruikersnaam FROM meetopstelling INNER JOIN gebruiker ON meetopstelling.gebruiker_id=gebruiker.id WHERE gebruiker.gebruikersnaam = ?';
  233.  
  234.  
  235. // do db lookup
  236. connection.query(meetingRows,[username], function(err, rows, fields) {
  237. if (err) throw err;
  238.  
  239. for (var i in rows) {
  240. results.push(rows[i]);
  241. }
  242. res.json({
  243. "status": 200,
  244. "results": results
  245. });
  246. });
  247.  
  248. connection.end();
  249. });
  250.  
  251.  
  252. // Fall back, display some info
  253. router.get('/', function (req, res) {
  254. res.status(200);
  255. res.json({
  256. "description": "API Check"
  257. });
  258. });
  259.  
  260.  
  261. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement