diff --git a/browser/main/Containers/LoginContainer.jsx b/browser/main/Containers/LoginContainer.jsx index 8597bf1f..271a86e4 100644 --- a/browser/main/Containers/LoginContainer.jsx +++ b/browser/main/Containers/LoginContainer.jsx @@ -1,3 +1,4 @@ +/* global localStorage */ var React = require('react/addons') var ReactRouter = require('react-router') var Link = ReactRouter.Link @@ -5,8 +6,10 @@ var Link = ReactRouter.Link var AuthStore = require('../Stores/AuthStore') var login = require('../Actions/login') +var OnlyGuest = require('../Mixins/OnlyGuest') + module.exports = React.createClass({ - mixins: [React.addons.LinkedStateMixin, ReactRouter.Navigation], + mixins: [React.addons.LinkedStateMixin, ReactRouter.Navigation, OnlyGuest], getInitialState: function () { return { email: '', diff --git a/browser/main/Containers/RegisterContainer.jsx b/browser/main/Containers/RegisterContainer.jsx index 6215c998..0efaf76a 100644 --- a/browser/main/Containers/RegisterContainer.jsx +++ b/browser/main/Containers/RegisterContainer.jsx @@ -5,8 +5,10 @@ var Link = ReactRouter.Link var AuthStore = require('../Stores/AuthStore') var register = require('../Actions/register') +var OnlyGuest = require('../Mixins/OnlyGuest') + module.exports = React.createClass({ - mixins: [React.addons.LinkedStateMixin, ReactRouter.Navigation], + mixins: [React.addons.LinkedStateMixin, ReactRouter.Navigation, OnlyGuest], getInitialState: function () { return { email: '', diff --git a/browser/main/Mixins/OnlyGuest.js b/browser/main/Mixins/OnlyGuest.js new file mode 100644 index 00000000..4c48aff9 --- /dev/null +++ b/browser/main/Mixins/OnlyGuest.js @@ -0,0 +1,18 @@ +var AuthStore = require('../Stores/AuthStore') + +var OnlyGuest = { + componentDidMount: function () { + if (AuthStore.check()) { + var user = AuthStore.getUser() + console.log(user) + var planet = user.Planets.length > 0 ? user.Planets[0] : null + if (planet == null) { + this.transitionTo('user', {userName: user.name}) + return + } + this.transitionTo('dashboard', {userName: user.name, planetName: planet.name}) + } + } +} + +module.exports = OnlyGuest diff --git a/browser/main/Services/Auth.js b/browser/main/Services/Auth.js deleted file mode 100644 index f8af1ad3..00000000 --- a/browser/main/Services/Auth.js +++ /dev/null @@ -1,40 +0,0 @@ -/* global localStorage */ -var Auth = {} - -var currentUser = null -Auth.attempt = function (params) { - return new Promise(function (resolve, reject) { - var token = 'some token' - var user = { - name: 'testcat', - email: 'testcat@example.com', - profileName: 'Test Cat' - } - localStorage.setItem('token', token) - - resolve(user) - }) -} - -Auth.register = function (params) { - return new Promise(function (resolve, reject) { - var token = 'some token' - var user = { - name: 'testcat', - email: 'testcat@example.com', - profileName: 'Test Cat' - } - localStorage.setItem('token', token) - - resolve(user) - }) -} - -Auth.getUser = function () { - return new Promise(function (resolve, reject) { - - resolve(currentUser) - }) -} - -module.exports = Auth diff --git a/browser/main/Stores/AuthStore.js b/browser/main/Stores/AuthStore.js index 25feb6c9..6cc12d0c 100644 --- a/browser/main/Stores/AuthStore.js +++ b/browser/main/Stores/AuthStore.js @@ -10,15 +10,23 @@ var AuthStore = Reflux.createStore({ this.listenTo(login, this.login) this.listenTo(register, this.register) }, + // Reflux Store login: function (input) { request .post('http://localhost:8000/auth/login') .send(input) .set('Accept', 'application/json') .end(function (err, res) { - if (err) console.error(err) + if (err) { + console.error(err) + this.trigger(null) + return + } + var user = res.body.user localStorage.setItem('token', res.body.token) + localStorage.setItem('user', JSON.stringify(res.body.user)) + this.trigger(user) }.bind(this)) }, @@ -28,11 +36,28 @@ var AuthStore = Reflux.createStore({ .send(input) .set('Accept', 'application/json') .end(function (err, res) { - if (err) console.error(err) + if (err) { + console.error(err) + this.trigger(null) + return + } + var user = res.body.user localStorage.setItem('token', res.body.token) + localStorage.setItem('user', JSON.stringify(res.body.user)) + this.trigger(user) }.bind(this)) + }, + // Methods + check: function () { + if (localStorage.getItem('token')) return true + return false + }, + getUser: function () { + var userJSON = localStorage.getItem('user') + if (userJSON == null) return null + return JSON.parse(userJSON) } })