1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 01:36:22 +00:00

add OnlyGuest mixin

This commit is contained in:
Rokt33r
2015-07-12 19:24:44 +09:00
parent 7870c60ab4
commit 36eaebcbc7
5 changed files with 52 additions and 44 deletions

View File

@@ -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: '',

View File

@@ -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: '',

View File

@@ -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

View File

@@ -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

View File

@@ -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)
}
})