]>
Commit | Line | Data |
---|---|---|
7a9e5112 | 1 | 'use strict'; |
2 | ||
989fb5c7 | 3 | import cookies from './cookies.js'; |
4 | import page from 'page'; | |
5 | import React from 'react'; | |
6 | import ReactDOM from 'react-dom'; | |
87b6d05e | 7 | import {Header, Footer} from './header_footer.js'; |
7a9e5112 | 8 | |
9 | var App = {}; | |
b94f3416 | 10 | var cookieExpire = 60 * 60 * 24 * 7; |
7a9e5112 | 11 | |
12 | App.errorCodeToMessage = function(code) { | |
13 | switch (code) { | |
14 | case 'invalid_email': | |
15 | return 'The email is not valid'; | |
16 | case 'invalid_password': | |
17 | return 'The password is not valid'; | |
18 | case 'email_exists': | |
19 | return 'This email is already registered'; | |
20 | case 'invalid_credentials': | |
21 | return 'Invalid credentials'; | |
22 | case 'invalid_otp': | |
23 | return 'Invalid code !'; | |
24 | case 'user_not_confirmed': | |
25 | return 'Your account is being confirmed. Should be very soon !'; | |
26 | } | |
27 | ||
28 | return code; | |
29 | }; | |
30 | ||
31 | App.isUserSignedIn = function() { | |
32 | return cookies.hasItem('jwt'); | |
33 | }; | |
34 | ||
35 | App.getUserToken = function() { | |
36 | return cookies.getItem('jwt'); | |
37 | }; | |
38 | ||
39 | App.onUserSignIn = function(token) { | |
40 | if (!token || token === '') { | |
41 | page('/signin'); | |
42 | return; | |
43 | } | |
44 | ||
45 | cookies.setItem('jwt', token, cookieExpire); | |
46 | page('/me'); | |
47 | }; | |
48 | ||
49 | App.onUserValidateOtp = function(token) { | |
50 | if (!token || token === '') { | |
51 | page('/signin'); | |
52 | return; | |
53 | } | |
54 | ||
55 | cookies.setItem('jwt', token, cookieExpire); | |
56 | page('/me'); | |
57 | }; | |
58 | ||
59 | App.onUserSignUp = function(token) { | |
60 | if (!token || token === '') { | |
61 | page('/signin'); | |
62 | return; | |
63 | } | |
64 | ||
65 | cookies.setItem('jwt', token, cookieExpire); | |
adf936f6 | 66 | page('/not_confirmed'); |
7a9e5112 | 67 | }; |
68 | ||
69 | App.getUserJWT = function() { | |
70 | return cookies.getItem('jwt'); | |
71 | }; | |
72 | ||
73 | App.page = function(path, needsAuth, fn) { | |
74 | page(path, function(context) { | |
75 | if (needsAuth && !App.isUserSignedIn()) { | |
76 | page('/signin'); | |
77 | return; | |
78 | } | |
79 | ||
80 | fn(context); | |
81 | }); | |
82 | }; | |
83 | ||
84 | App.go = function(path) { | |
85 | page(path); | |
86 | }; | |
87 | ||
88 | App.start = function() { | |
89 | page(); | |
90 | }; | |
91 | ||
92 | App.onInternNavigation = function(href, e) { | |
93 | e.preventDefault(); | |
94 | page(href); | |
95 | }; | |
96 | ||
97 | App.onUserNotAuthorized = function(httpCode, apiCode) { | |
98 | switch (apiCode) { | |
99 | case 'not_authorized': | |
100 | cookies.removeItem('jwt'); | |
101 | page('/signin'); | |
102 | return false; | |
103 | case 'otp_not_setup': | |
104 | page('/otp/setup'); | |
105 | return false; | |
106 | case 'need_otp_validation': | |
107 | page('/otp/validate'); | |
108 | return false; | |
adf936f6 | 109 | case 'user_not_confirmed': |
110 | page('/not_confirmed'); | |
111 | return false; | |
7a9e5112 | 112 | default: |
113 | return true; | |
114 | } | |
115 | }; | |
116 | ||
117 | App.mount = function(app) { | |
118 | var root = React.createElement( | |
119 | 'div', | |
120 | {className: 'container'}, | |
87b6d05e | 121 | [ |
122 | React.createElement(Header, {key: 'header', isLoggedIn: App.isUserSignedIn()}), | |
123 | React.createElement(React.Fragment, {key: 'app'}, app), | |
124 | React.createElement(Footer, {key: 'footer', isLoggedIn: App.isUserSignedIn()}) | |
125 | ], | |
7a9e5112 | 126 | ); |
127 | ||
128 | ReactDOM.unmountComponentAtNode(document.getElementById('app')); | |
129 | ReactDOM.render(root, document.getElementById('app')); | |
130 | }; | |
131 | ||
989fb5c7 | 132 | export default App; |