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