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