From a4831274e1cadbc2715dde99a69b2a01b7a96dc3 Mon Sep 17 00:00:00 2001 From: marihachi Date: Sun, 22 Apr 2018 06:06:07 +0900 Subject: [PATCH] update login --- src/client/index.js | 21 ++++++++++++++------- src/client/tags/frost-form-login.tag | 3 +++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/client/index.js b/src/client/index.js index 94cba05..d6c258e 100644 --- a/src/client/index.js +++ b/src/client/index.js @@ -2,11 +2,18 @@ const riot = require('riot'); const route = require('riot-route').default; const WebSocketEvents = require('./helpers/web-socket-events'); const StreamingRest = require('./helpers/streaming-rest'); +const fetchJson = require('./helpers/fetch-json'); (async () => { const mixin = {}; + // csrf + + const csrfElement = document.getElementsByName('frost-csrf').item(0); + if (csrfElement != null) + mixin.csrf = csrfElement.content; + // userId const userIdElement = document.getElementsByName('frost-userId').item(0); @@ -22,7 +29,9 @@ const StreamingRest = require('./helpers/streaming-rest'); let webSocket; try { - webSocket = await WebSocketEvents.connect(`${secure ? 'wss' : 'ws'}://${location.host}`); + const apiHost = 'localhost:8000'; // TODO + const accessToken = localStorage.getItem('accessToken'); + webSocket = await WebSocketEvents.connect(`${secure ? 'wss' : 'ws'}://${apiHost}?access_token=${accessToken}`); webSocket.addEventListener('close', (ev) => { console.log('close:', ev); }); webSocket.addEventListener('error', (ev) => { console.log('error:', ev); }); WebSocketEvents.init(webSocket); @@ -31,6 +40,10 @@ const StreamingRest = require('./helpers/streaming-rest'); catch (err) { alert('WebSocketの接続に失敗しました'); console.log(err); + // 念のためログアウト + await fetchJson('DELETE', '/session', { + _csrf: mixin.csrf + }); return; } @@ -52,12 +65,6 @@ const StreamingRest = require('./helpers/streaming-rest'); if (siteKeyElement != null) mixin.siteKey = siteKeyElement.content; - // csrf - - const csrfElement = document.getElementsByName('frost-csrf').item(0); - if (csrfElement != null) - mixin.csrf = csrfElement.content; - // central observer mixin.central = riot.observable(); diff --git a/src/client/tags/frost-form-login.tag b/src/client/tags/frost-form-login.tag index c05ef94..cab091d 100644 --- a/src/client/tags/frost-form-login.tag +++ b/src/client/tags/frost-form-login.tag @@ -33,7 +33,10 @@ _csrf: this.csrf }) .then(async (res) => { + const json = await res.json(); + if (res.ok) { + localStorage.setItem('accessToken', json.accessToken); location.reload(); return; }