1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-14 02:06:29 +00:00

改善:立ち上げたらUserの情報(PlanetのSnippetsなどを含めた)を検証して、データを全部リロードする

This commit is contained in:
Rokt33r
2015-07-29 02:18:44 +09:00
parent 51fb43d624
commit 714b5f7b4b
3 changed files with 39 additions and 4 deletions

View File

@@ -4,5 +4,6 @@ module.exports = Reflux.createActions([
'login',
'register',
'logout',
'updateProfile'
'updateProfile',
'refreshUser'
])

View File

@@ -4,6 +4,8 @@ var ReactRouter = require('react-router')
var RouteHandler = ReactRouter.RouteHandler
var request = require('superagent')
var AuthActions = require('../Actions/AuthActions')
var AuthStore = require('../Stores/AuthStore')
var apiUrl = require('../../../config').apiUrl
@@ -43,7 +45,7 @@ module.exports = React.createClass({
var user = JSON.parse(localStorage.getItem('user'))
if (user != null) {
user.Planets.forEach(fetchPlanet)
AuthActions.refreshUser()
return
}
this.transitionTo('login')
@@ -55,9 +57,9 @@ module.exports = React.createClass({
if (res == null || res.status == null) {
return
}
var user
if (res.status === 'loggedIn' || res.status === 'registered') {
var user = res.data
user = res.data
var planet = user.Planets.length > 0 ? user.Planets[0] : null
if (planet == null) {
this.transitionTo('user', {userName: user.name})
@@ -72,6 +74,13 @@ module.exports = React.createClass({
this.transitionTo('login')
return
}
if (res.status === 'userRefreshed') {
console.log('refreshed')
user = res.data
user.Planets.forEach(fetchPlanet)
return
}
},
render: function () {
// Redirect Login state

View File

@@ -12,6 +12,7 @@ var AuthStore = Reflux.createStore({
this.listenTo(AuthActions.register, this.register)
this.listenTo(AuthActions.logout, this.logout)
this.listenTo(AuthActions.updateProfile, this.updateProfile)
this.listenTo(AuthActions.refreshUser, this.refreshUser)
},
// Reflux Store
login: function (input) {
@@ -58,6 +59,30 @@ var AuthStore = Reflux.createStore({
})
}.bind(this))
},
refreshUser: function () {
request
.get(apiUrl + 'auth/user')
.set({
Authorization: 'Bearer ' + localStorage.getItem('token')
})
.end(function (err, res) {
if (err) {
console.error(err)
if (res.status === 401 || res.status === 403) {
AuthActions.logout()
}
return
}
var user = res.body
localStorage.setItem('user', JSON.stringify(user))
this.trigger({
status: 'userRefreshed',
data: user
})
}.bind(this))
},
logout: function () {
localStorage.removeItem('token')
localStorage.removeItem('user')