1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-14 10:16:26 +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', 'login',
'register', 'register',
'logout', 'logout',
'updateProfile' 'updateProfile',
'refreshUser'
]) ])

View File

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

View File

@@ -12,6 +12,7 @@ var AuthStore = Reflux.createStore({
this.listenTo(AuthActions.register, this.register) this.listenTo(AuthActions.register, this.register)
this.listenTo(AuthActions.logout, this.logout) this.listenTo(AuthActions.logout, this.logout)
this.listenTo(AuthActions.updateProfile, this.updateProfile) this.listenTo(AuthActions.updateProfile, this.updateProfile)
this.listenTo(AuthActions.refreshUser, this.refreshUser)
}, },
// Reflux Store // Reflux Store
login: function (input) { login: function (input) {
@@ -58,6 +59,30 @@ var AuthStore = Reflux.createStore({
}) })
}.bind(this)) }.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 () { logout: function () {
localStorage.removeItem('token') localStorage.removeItem('token')
localStorage.removeItem('user') localStorage.removeItem('user')