]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blob - cmd/web/js/main.jsx
Admin minimal dashboard.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / cmd / web / js / main.jsx
1 import SignupForm from './signup.js';
2 import SigninForm from './signin.js';
3 import PasswordResetForm from './password_reset.js';
4 import ChangePasswordForm from './change_password.js';
5 import OtpEnrollForm from './otp.js';
6 import PoloniexController from './poloniex.js';
7 import UserAccount from './account.js';
8 import AdminDashboard from './admin.js';
9 import App from './app.js';
10 import Api from './api.js';
11 import cookies from './cookies.js';
12 import React from 'react';
13 import qs from 'qs';
14
15 App.page('/signup', false, function(context) {
16 if (App.isUserSignedIn()) {
17 App.go('/me');
18 return;
19 }
20
21 App.mount(<div>
22 <SignupForm onSuccess={App.onUserSignUp}/>
23 </div>);
24 });
25
26 App.page('/signin', false, function(context) {
27 if (App.isUserSignedIn()) {
28 App.go('/me');
29 return;
30 }
31
32 App.mount(<div>
33 <SigninForm onSuccess={App.onUserSignIn}/>
34 </div>);
35 });
36
37 App.page('/reset-password', false, function(context) {
38 if (App.isUserSignedIn()) {
39 App.go('/me');
40 return;
41 }
42
43 App.mount(<div>
44 <PasswordResetForm />
45 </div>);
46 });
47
48 App.page('/change-password', false, function(context) {
49 if (App.isUserSignedIn()) {
50 App.go('/me');
51 return;
52 }
53
54 var token = qs.parse(context.querystring).token;
55
56 if (token === undefined) {
57 App.go('/');
58 return;
59 }
60
61 App.mount(<div>
62 <ChangePasswordForm token={token} onSuccess={App.go.bind(App, '/signin')}/>
63 </div>);
64 });
65
66 App.page('/confirm', false, function(context) {
67 var token = qs.parse(context.querystring).token;
68
69 if (token === undefined) {
70 App.go('/');
71 return;
72 }
73
74 Api.Call(
75 'CONFIRM_EMAIL',
76 {'token': token},
77 function(err, status, data) {
78 if (err) {
79 console.error(err, data);
80 }
81
82 App.go('/me');
83 }
84 );
85 });
86
87 App.page('/signout', true, function(context) {
88 cookies.removeItem('jwt');
89
90 App.go('/');
91 });
92
93 App.page('/me', true, function(context) {
94 App.mount(<div>
95 <PoloniexController/>
96 </div>);
97 });
98
99 App.page('/account', true, function(context) {
100 App.mount(<div>
101 <UserAccount/>
102 </div>);
103 });
104
105 App.page('/admin', true, function(context) {
106 App.mount(<div>
107 <AdminDashboard/>
108 </div>);
109 });
110
111 App.page('/not_confirmed', true, function(context) {
112 App.mount(<div>
113 <div className="row">
114 <div className="box offset-3 col-6 text-center">
115 <p>An email has now been sent to your email address.</p>
116 <p>{'Please click the \'Confirm your account\' button to validate your email.'}</p>
117 </div>
118 </div>
119 </div>);
120 });
121
122 App.page('/otp/setup', true, function(context) {
123 Api.Call('OTP_ENROLL', {}, function(err, status, data) {
124 if (err) {
125 console.error(err, data);
126 return;
127 }
128
129 App.mount(<div>
130 <OtpEnrollForm onSuccess={App.onUserValidateOtp} img={'data:image/png;base64,' + data.base64img} secret={data.secret}/>
131 </div>);
132
133 });
134 });
135
136 App.page('/otp/validate', true, function(context) {
137 App.mount(<div>
138 <OtpEnrollForm onSuccess={App.onUserValidateOtp} />
139 </div>);
140 });
141
142 App.page('/', false, function(context) {
143 App.go('/me');
144 });
145
146 $(document).ready(function() {
147 App.start();
148 });