From 5bf9ad9f8d8dc9877c14c9db4be895ad596f2ae7 Mon Sep 17 00:00:00 2001 From: Markus Grigull Date: Thu, 16 Mar 2017 10:22:25 +0100 Subject: [PATCH] Add authentication Uses jwt tokens, token is stored locally between refreshes --- src/api/rest-api.js | 40 +++++++++++--- src/components/footer.js | 2 +- src/components/login-form.js | 72 +++++++++++++++++++++++++ src/components/menu-sidebar.js | 1 + src/containers/app.js | 19 ++++++- src/containers/login.js | 71 ++++++++++++++++++++++++ src/containers/logout.js | 51 ++++++++++++++++++ src/data-managers/users-data-manager.js | 48 +++++++++++++++++ src/router.js | 6 +++ src/stores/user-store.js | 58 ++++++++++++++++++++ src/styles/app.css | 20 +++++-- 11 files changed, 374 insertions(+), 14 deletions(-) create mode 100644 src/components/login-form.js create mode 100644 src/containers/login.js create mode 100644 src/containers/logout.js create mode 100644 src/data-managers/users-data-manager.js create mode 100644 src/stores/user-store.js diff --git a/src/api/rest-api.js b/src/api/rest-api.js index d01e996..e81ffa4 100644 --- a/src/api/rest-api.js +++ b/src/api/rest-api.js @@ -11,9 +11,15 @@ import request from 'superagent/lib/client'; import Promise from 'es6-promise'; class RestAPI { - get(url) { + get(url, token) { return new Promise(function (resolve, reject) { - request.get(url).set('Access-Control-Allow-Origin', '*').end(function (error, res) { + var req = request.get(url).set('Access-Control-Allow-Origin', '*'); + + if (token != null) { + req.set('x-access-token', token); + } + + req.end(function (error, res) { if (res == null || res.status !== 200) { reject(error); } else { @@ -23,9 +29,15 @@ class RestAPI { }); } - post(url, body) { + post(url, body, token) { return new Promise(function (resolve, reject) { - request.post(url).send(body).end(function (error, res) { + var req = request.post(url).send(body); + + if (token != null) { + req.set('x-access-token', token); + } + + req.end(function (error, res) { if (res == null || res.status !== 200) { reject(error); } else { @@ -35,9 +47,15 @@ class RestAPI { }); } - delete(url) { + delete(url, token) { return new Promise(function (resolve, reject) { - request.delete(url).end(function (error, res) { + var req = request.delete(url); + + if (token != null) { + req.set('x-access-token', token); + } + + req.end(function (error, res) { if (res == null || res.status !== 200) { reject(error); } else { @@ -47,9 +65,15 @@ class RestAPI { }); } - put(url, body) { + put(url, body, token) { return new Promise(function (resolve, reject) { - request.put(url).send(body).end(function (error, res) { + var req = request.put(url).send(body); + + if (token != null) { + req.set('x-access-token', token); + } + + req.end(function (error, res) { if (res == null || res.status !== 200) { reject(error); } else { diff --git a/src/components/footer.js b/src/components/footer.js index cc84ea7..77b7136 100644 --- a/src/components/footer.js +++ b/src/components/footer.js @@ -12,7 +12,7 @@ import React, { Component } from 'react'; class Footer extends Component { render() { return ( -