127.0.0.1:8000 budget / 0fbdb87
rip out unused html Seva Luchianov 1 year, 7 months ago
8 changed file(s) with 19 addition(s) and 281 deletion(s). Raw diff Collapse all Expand all
+0
-55
src/js/confirm-email.js less more
0 require('../scss/style.scss');
1 require('../scss/confirm-email.scss');
2 require('./utils/logger');
3 const ui = require('./ui/common');
4 const $ = require('jquery');
5 const utils = require('./utils');
6 const api = require('./utils/api');
7 const query_string = require('query-string');
8 const qs = query_string.parse(location.search);
9
10 $("#request_new_confirmation").on("click", function() {
11 utils.validate.keys({
12 token: qs.token
13 }, [
14 ["token", {
15 message: "No confirmation token",
16 color: "red",
17 persistent: true
18 }, utils.validate.uuid]
19 ]).then(function(data) {
20 return api.post("/registration/confirm-email/request", data, {
21 add_captcha_token: {}
22 });
23 }).then(function(data) {
24 ui.show_banner(data);
25 if (data.show_login) {
26 $("#goto_login").on("click", function() {
27 window.location = "/login";
28 });
29 $("#request_wrapper").hide();
30 $("#login_wrapper").show();
31 }
32 }).catch(api.handle_error_message);
33 });
34
35 utils.validate.keys({
36 token: qs.token
37 }, [
38 ["token", {
39 message: "No confirmation token",
40 color: "red",
41 persistent: true
42 }, utils.validate.uuid]
43 ]).then(function(data) {
44 return api.post("/registration/confirm-email", data);
45 }).then(function(data) {
46 $("#success_message").text(data.message);
47 $("#goto_login").on("click", function() {
48 window.location = "/login?" + query_string.stringify({
49 email: data.email
50 });
51 });
52 $("#loading").hide();
53 $("#login_wrapper").show();
54 }).catch(api.handle_error_message);
+0
-36
src/js/password-reset.js less more
0 require('../scss/style.scss');
1 require('./utils/logger');
2 const ui = require('./ui/common');
3 const $ = require('jquery');
4 const utils = require('./utils');
5 const api = require('./utils/api');
6 const query_string = require('query-string');
7
8 let qs = query_string.parse(location.search);
9 logger.log(qs);
10
11 ui.init_new_password();
12
13 $("#update_password_button").on("click", function() {
14 let new_password = $("#new_password").val()
15 utils.validate.keys({
16 token: qs.token,
17 new_password: new_password
18 }, [
19 ["token", "Password reset token required", utils.validate.uuid],
20 ["new_password", "Passwords don't match", password => password === $("#confirm_password").val()],
21 ["new_password", "You must appease the password strength meter", password => utils.validate.password(password).score]
22 ]).then(function(data) {
23 return api.post("/account/password-reset", data, {
24 add_captcha_token: {}
25 });
26 }).then(function(data) {
27 return api.post("/account/login", {
28 captcha_bypass_token: data.captcha_bypass_token,
29 email: data.email,
30 password: new_password
31 });
32 }).then(function() {
33 window.location = "/";
34 }).catch(api.handle_error_message);
35 });
+0
-35
src/js/register.js less more
0 require('../scss/style.scss');
1 require('./utils/logger');
2 const ui = require('./ui/common');
3 const $ = require('jquery');
4 const utils = require('./utils');
5 const api = require('./utils/api');
6 const query_string = require('query-string');
7
8 let qs = query_string.parse(location.search);
9 logger.log(qs);
10
11 ui.init_new_password();
12
13 $("#register_button").on("click", function() {
14 utils.validate.keys({
15 token: qs.token,
16 email: $("#email").val().trim(),
17 display_name: $("#display_name").val().trim(),
18 password: $("#new_password").val()
19 }, [
20 ["token", "Registration token required", utils.validate.uuid],
21 ["email", "Email required"],
22 ["email", "Invalid email", utils.validate.email],
23 ["display_name", "You must pick a username"],
24 ["password", "Passwords don't match", password => password === $("#confirm_password").val()],
25 ["password", "You must appease the password strength meter", password => utils.validate.password(password).score]
26 ]).then(function(data) {
27 return api.post("/registration", data, {
28 add_captcha_token: {}
29 });
30 }).then(function(data) {
31 logger.log(data);
32 ui.show_banner(data);
33 }).catch(api.handle_error_message);
34 });
2828 height: target_height,
2929 opacity: 0.85
3030 }, 250);
31 },
32 init_new_password: function() {
33 $(".password-strength-message").text(default_password_message);
34 $("#new_password").on("input", function(event) {
35 let password = event.target.value;
36 if (password) {
37 const result = utils.validate.password(password.slice(0, Math.min(password.length, 100)));
38 logger.log(result);
39 $(".password-strength-meter").val(result.score);
40 let message = `Crackable in ${result.crack_times_display.online_throttling_100_per_hour}`;
41 if (!result.score) {
42 message += `. ${result.feedback.warning || result.feedback.suggestions[0] || "Do better"}`;
43 }
44 $(".password-strength-message").text(message);
45 } else {
46 $(".password-strength-meter").val(0);
47 $(".password-strength-message").text(default_password_message);
48 }
49 });
5031 }
5132 };
+0
-12
views/confirm-email.handlebars less more
0 <div class="centered-form">
1 <img id="loading" style="width:100px; height:100px;" src="/images/loading.gif">
2 <div class="confirmation-wrapper" id="login_wrapper">
3 <div class="confirmation-message" id="success_message"></div>
4 <button id="goto_login">Log In</button>
5 </div>
6 <div class="confirmation-wrapper" id="request_wrapper">
7 <div class="confirmation-message" id="error_message"></div>
8 <button id="request_new_confirmation">Resend Confirmation Email</button>
9 </div>
10 </div>
11 <script src="/js/confirm-email.js"></script>
11 <img class="mobile-menu-icon left" src="/images/hamburger-icon.svg">
22 <img class="mobile-menu-icon right" src="/images/watchrooms-icon.svg">
33 <div class="torso">
4 {{> page/chart}}
54 <div class="left-sidebar">
6 <div class="sidebar-item selected" id="library">Library</div>
7 <div class="sidebar-item" id="account">Account</div>
5 <div class="sidebar-item selected" id="transactions">Transactions</div>
6 <div class="sidebar-item" id="withdrawals">Withdrawals</div>
7 <div class="sidebar-item" id="credit_cards">Credit Cards</div>
8 <div class="sidebar-item" id="savings">Savings</div>
9 <div class="sidebar-item" id="income">Income</div>
810 <div class="sidebar-item" id="settings">Settings</div>
9 <div class="sidebar-item" id="registration">Register a Friend</div>
1011 <div class="sidebar-item" id="logout">Logout</div>
1112 </div>
12 <div class="content" id="library_content">
13 <div class="file-upload-wrapper">
14 <div class="field-header file-upload-header">
15 Upload Videos<span class="server-storage-info">Server Storage Remaining: <span id="server-storage"></span></span>
16 </div>
17 <div class="file-upload-controls">
18 <label for="file-upload" class="custom-file-upload">Select Files</label>
19 <input type="file" id="file-upload" name="video" multiple>
20 <span class="file-upload-total"></span>
21 <div class="queued-files queued-files-empty">No Files Selected</div>
22 <button class="upload-button">Upload</button>
23 </div>
24 </div>
25 <div class="field-header">My Videos</div>
26 <div class="library"></div>
13 {{> page/chart}}
14 <div class="content" id="transactions_content">
15
2716 </div>
28 <div class="content" style="display: none;" id="account_content">
29 <div class="field-header">Change Username</div>
30 <div class="account-field-group">
31 <div class="field-wrapper">
32 <input type="text" id="display_name" />
33 </div>
34 <button class="account-button" id="save_display_name">Save</button>
35 </div>
36 <div class="field-header">Change Password</div>
37 <div class="account-field-group">
38 <div class="field-wrapper">
39 <label>Current Password:</label>
40 <input type="password" id="current_password" />
41 </div>
42 <div class="field-wrapper">
43 <label>New Password:</label>
44 <input type="password" id="new_password" />
45 <progress class="password-strength-meter" max="4" value="0"></progress>
46 <div class="password-strength-message"></div>
47 </div>
48 <div class="field-wrapper">
49 <label>Confirm Password:</label>
50 <input type="password" id="confirm_password" />
51 </div>
52 <button class="account-button" id="save_new_password">Save</button>
53 </div>
54 <div class="field-header">Delete Account</div>
55 <div class="account-field-group">
56 <div class="field-wrapper">
57 I understand that deleting my account will result in:
58 <div style="margin-left: 20px;">
59 <li>The removal of all my videos from the server</li>
60 <li>The removal of all my user data from the server</li>
61 <li>The inability to register for a new account without a referral link from an existing Watch Together user</li>
62 </div>
63 <button class="scary" id="request_account_deletion">Request Account Deletion Code</button>
64 <div id="deletion_code_wrapper" style="display: none;">
65 <div class="align-with-buttons">
66 <label>Deletion Code:</label>
67 <input type="text" id="deletion_code" />
68 <label>Current Password:</label>
69 <input type="password" id="deletion_current_password" />
70 </div>
71 <button class="scary" id="submit_account_deletion">Confirm Account Deletion</button>
72 </div>
73 </div>
74 </div>
17 <div class="content" id="withdrawals_content">
18
19 </div>
20 <div class="content" id="credit_cards_content">
21
22 </div>
23 <div class="content" id="savings_content">
24
25 </div>
26 <div class="content" id="income_content">
27
7528 </div>
7629 <div class="content" style="display: none;" id="settings_content">
7730 <div class="field-header">Logs</div>
9245 <button id="export_logs">Export Logs</button>
9346 </div>
9447 </div>
95 <div class="field-header">Ads</div>
96 <div class="account-field-group">
97 <div class="field-wrapper">
98 If you want to support Watch Together you can opt in to unobtrusive ads.
99 By opting in, you agree to Google's <a href="https://policies.google.com/technologies/ads">Advertising Policy</a><br>
100 <button id="toggle_ads"></button>
101 </div>
102 </div>
10348 </div>
104 <div class="content" style="display: none;" id="registration_content">
105 <div style="text-align: center;">
106 <div class="field-header">
107 Click the button below to generate a registration link.<br>
108 Links expire after one day and are only valid for a single use.<br>
109 If you want to register multiple people,<br>
110 you must generate a new link for each user.
111 </div>
112 <div>
113 <span id="registration-link"></span>
114 </div>
115 <button id="generate_registration_link">Generate Link</button>
116 <button id="registration-link-copy" style="display: none;">Copy</button>
117 </div>
11849 </div>
11950 </div>
12051 <script src="/js/home.js"></script>
+0
-14
views/password-reset.handlebars less more
0 <div class="centered-form">
1 <div class="field-wrapper">
2 <label>New Password:</label>
3 <input type="password" id="new_password" />
4 <progress class="password-strength-meter" max="4" value="0"></progress>
5 <div class="password-strength-message"></div>
6 </div>
7 <div class="field-wrapper">
8 <label>Confirm Password:</label>
9 <input type="password" id="confirm_password" />
10 </div>
11 <button style="float: right; margin: 10px;" id="update_password_button">Update Password</button>
12 </div>
13 <script src="/js/password-reset.js"></script>
+0
-22
views/register.handlebars less more
0 <div class="centered-form">
1 <div class="field-wrapper">
2 <label>Email:</label>
3 <input type="email" id="email" />
4 </div>
5 <div class="field-wrapper">
6 <label>Username:</label>
7 <input type="text" id="display_name" />
8 </div>
9 <div class="field-wrapper">
10 <label>Password:</label>
11 <input type="password" id="new_password" />
12 <progress class="password-strength-meter" max="4" value="0"></progress>
13 <div class="password-strength-message"></div>
14 </div>
15 <div class="field-wrapper">
16 <label>Confirm Password:</label>
17 <input type="password" id="confirm_password" />
18 </div>
19 <button style="float: right; margin: 10px;" id="register_button">Register</button>
20 </div>
21 <script src="/js/register.js"></script>