UNPKG

2.22 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _promise = require('babel-runtime/core-js/promise');
8
9var _promise2 = _interopRequireDefault(_promise);
10
11function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
13var get = function get(url, cookie) {
14 return fetch('' + url, {
15 credentials: 'include',
16 headers: {
17 cookie: 'connect.sid=' + cookie.get('connect.sid')
18 }
19 }).then(function (res) {
20 if (res.ok) {
21 return res.json();
22 }
23 return (0, _promise2.default)(function (resolve, reject) {
24 return reject('User does not logged in yet');
25 });
26 });
27};
28
29var check = function check(store, cookie) {
30 var origin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'http://localhost:3000';
31 var setUser = arguments[3];
32
33 return function (nextState, replace, cb) {
34 var isLogin = store.getState().user && store.getState().user.item && store.getState().user.item.id;
35 if (isLogin) {
36 cb();
37 } else {
38 get(origin + '/auth', cookie).then(
39 // login user
40 function (res) {
41 store.dispatch(setUser({
42 id: res.id,
43 token: res.token
44 }));
45 cb();
46 }, function () {
47 cb();
48 });
49 }
50 };
51};
52
53var login = function login(store, cookie) {
54 var origin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'http://localhost:3000';
55 var authenticator = arguments[3];
56 var setUser = arguments[4];
57
58 var connectedCheck = check(store, cookie, origin, setUser);
59 return function (nextState, replace, cb) {
60 connectedCheck(nextState, replace, function () {
61 var isLogin = store.getState().user && store.getState().user.item && store.getState().user.item.id;
62 if (isLogin) {
63 cb();
64 } else {
65 cookie.set('redirect', nextState.location.pathname, {
66 path: '/'
67 });
68 if (__SERVER__) {
69 replace('/auth/' + authenticator);
70 cb();
71 } else {
72 location.href = origin + '/auth/' + authenticator;
73 }
74 }
75 });
76 };
77};
78
79exports.default = {
80 check: check,
81 login: login
82};
83module.exports = exports['default'];
\No newline at end of file