Skip to content

Commit 36eaebc

Browse files
committed
add OnlyGuest mixin
1 parent 7870c60 commit 36eaebc

5 files changed

Lines changed: 52 additions & 44 deletions

File tree

browser/main/Containers/LoginContainer.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1+
/* global localStorage */
12
var React = require('react/addons')
23
var ReactRouter = require('react-router')
34
var Link = ReactRouter.Link
45

56
var AuthStore = require('../Stores/AuthStore')
67
var login = require('../Actions/login')
78

9+
var OnlyGuest = require('../Mixins/OnlyGuest')
10+
811
module.exports = React.createClass({
9-
mixins: [React.addons.LinkedStateMixin, ReactRouter.Navigation],
12+
mixins: [React.addons.LinkedStateMixin, ReactRouter.Navigation, OnlyGuest],
1013
getInitialState: function () {
1114
return {
1215
email: '',

browser/main/Containers/RegisterContainer.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ var Link = ReactRouter.Link
55
var AuthStore = require('../Stores/AuthStore')
66
var register = require('../Actions/register')
77

8+
var OnlyGuest = require('../Mixins/OnlyGuest')
9+
810
module.exports = React.createClass({
9-
mixins: [React.addons.LinkedStateMixin, ReactRouter.Navigation],
11+
mixins: [React.addons.LinkedStateMixin, ReactRouter.Navigation, OnlyGuest],
1012
getInitialState: function () {
1113
return {
1214
email: '',

browser/main/Mixins/OnlyGuest.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
var AuthStore = require('../Stores/AuthStore')
2+
3+
var OnlyGuest = {
4+
componentDidMount: function () {
5+
if (AuthStore.check()) {
6+
var user = AuthStore.getUser()
7+
console.log(user)
8+
var planet = user.Planets.length > 0 ? user.Planets[0] : null
9+
if (planet == null) {
10+
this.transitionTo('user', {userName: user.name})
11+
return
12+
}
13+
this.transitionTo('dashboard', {userName: user.name, planetName: planet.name})
14+
}
15+
}
16+
}
17+
18+
module.exports = OnlyGuest

browser/main/Services/Auth.js

Lines changed: 0 additions & 40 deletions
This file was deleted.

browser/main/Stores/AuthStore.js

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,23 @@ var AuthStore = Reflux.createStore({
1010
this.listenTo(login, this.login)
1111
this.listenTo(register, this.register)
1212
},
13+
// Reflux Store
1314
login: function (input) {
1415
request
1516
.post('http://localhost:8000/auth/login')
1617
.send(input)
1718
.set('Accept', 'application/json')
1819
.end(function (err, res) {
19-
if (err) console.error(err)
20+
if (err) {
21+
console.error(err)
22+
this.trigger(null)
23+
return
24+
}
25+
2026
var user = res.body.user
2127
localStorage.setItem('token', res.body.token)
28+
localStorage.setItem('user', JSON.stringify(res.body.user))
29+
2230
this.trigger(user)
2331
}.bind(this))
2432
},
@@ -28,11 +36,28 @@ var AuthStore = Reflux.createStore({
2836
.send(input)
2937
.set('Accept', 'application/json')
3038
.end(function (err, res) {
31-
if (err) console.error(err)
39+
if (err) {
40+
console.error(err)
41+
this.trigger(null)
42+
return
43+
}
44+
3245
var user = res.body.user
3346
localStorage.setItem('token', res.body.token)
47+
localStorage.setItem('user', JSON.stringify(res.body.user))
48+
3449
this.trigger(user)
3550
}.bind(this))
51+
},
52+
// Methods
53+
check: function () {
54+
if (localStorage.getItem('token')) return true
55+
return false
56+
},
57+
getUser: function () {
58+
var userJSON = localStorage.getItem('user')
59+
if (userJSON == null) return null
60+
return JSON.parse(userJSON)
3661
}
3762
})
3863

0 commit comments

Comments
 (0)