From 8c275a69bdd73baaed50faf194248d4219d9f0f2 Mon Sep 17 00:00:00 2001 From: Jim Ewald Date: Fri, 14 Jul 2017 09:30:54 -0700 Subject: [PATCH 1/8] Add database update script to exclusion list --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index fa45eca..3b5e2b3 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ build copy-test deploy-test deploy2coppa +dbupdate.sh /CloudSession-Templates.tar.gz From 3cbdf7fb004301d31171fff8c4b35f688a4be061 Mon Sep 17 00:00:00 2001 From: Jim Ewald Date: Mon, 24 Jul 2017 12:59:21 -0700 Subject: [PATCH 2/8] Create script to dump cloudsession database. Create patch to change character set and collation to utf8 --- .../0004-update-cs-default-char-col.sql | 79 +++++++++++++++++++ database/tools/dumpdb.sh | 8 ++ 2 files changed, 87 insertions(+) create mode 100644 database/patches/0004-update-cs-default-char-col.sql create mode 100755 database/tools/dumpdb.sh diff --git a/database/patches/0004-update-cs-default-char-col.sql b/database/patches/0004-update-cs-default-char-col.sql new file mode 100644 index 0000000..e9a0084 --- /dev/null +++ b/database/patches/0004-update-cs-default-char-col.sql @@ -0,0 +1,79 @@ +/* +Script: 0004-update-cs-default-char-col.sql + +This script corrects an issue in the cloud session database +where the default character set and collation were set to +'latin1' and 'latin1_swedish_ci'. These settings should be +'utf8' and 'utf8_general_ci'. + +This script updates the character set and collation settings +on the cloudsession database, all cloudsession tables and +affected columns within each of these tables. + */ + +# Select the target database +USE cloudsession + +# Set the database defaults +# This also sets the collation for individual table columns +ALTER DATABASE cloudsession CHARACTER SET utf8 COLLATE utf8_general_ci; + +# Update the authentication_token table +SET foreign_key_checks = 0; +# Default table settings +ALTER TABLE cloudsession.authentication_token DEFAULT CHARACTER SET utf8; + +# Column settings +ALTER TABLE cloudsession.authentication_token MODIFY browser VARCHAR(200) CHARACTER SET utf8; +ALTER TABLE cloudsession.authentication_token MODIFY server VARCHAR(1000) CHARACTER SET utf8; +ALTER TABLE cloudsession.authentication_token MODIFY ip_address VARCHAR(200) CHARACTER SET utf8; +ALTER TABLE cloudsession.authentication_token MODIFY token VARCHAR(200) CHARACTER SET utf8; + +SET foreign_key_checks = 1; + + +# Update the bucket table +SET foreign_key_checks = 0; +ALTER TABLE cloudsession.bucket DEFAULT CHARACTER SET utf8; + +# Reset fields +ALTER TABLE cloudsession.bucket MODIFY type VARCHAR(200) CHARACTER SET utf8; + +SET foreign_key_checks = 1; + + +# Update the confirm_token table +SET foreign_key_checks = 0; +ALTER TABLE cloudsession.confirm_token DEFAULT CHARACTER SET utf8; + +# Reset fields +ALTER TABLE cloudsession.confirm_token MODIFY token VARCHAR(200) CHARACTER SET utf8; + +SET foreign_key_checks = 1; + + +# Update the reset_token table +SET foreign_key_checks = 0; +ALTER TABLE cloudsession.reset_token DEFAULT CHARACTER SET utf8; + +# Reset fields +ALTER TABLE cloudsession.reset_token MODIFY token VARCHAR(200) CHARACTER SET utf8; + +SET foreign_key_checks = 1; + + +# Update the user table +SET foreign_key_checks = 0; +ALTER TABLE cloudsession.user DEFAULT CHARACTER SET utf8; + +# Reset fields +ALTER TABLE cloudsession.user MODIFY email VARCHAR(250) CHARACTER SET utf8; +ALTER TABLE cloudsession.user MODIFY password VARCHAR(100) CHARACTER SET utf8; +ALTER TABLE cloudsession.user MODIFY salt VARCHAR(50) CHARACTER SET utf8; +ALTER TABLE cloudsession.user MODIFY auth_source VARCHAR(250) CHARACTER SET utf8; +ALTER TABLE cloudsession.user MODIFY locale VARCHAR(50) CHARACTER SET utf8; +ALTER TABLE cloudsession.user MODIFY screen_name VARCHAR(250) CHARACTER SET utf8; +ALTER TABLE cloudsession.user MODIFY parent_email VARCHAR(250) CHARACTER SET utf8; + +SET foreign_key_checks = 1; + diff --git a/database/tools/dumpdb.sh b/database/tools/dumpdb.sh new file mode 100755 index 0000000..cc2a24e --- /dev/null +++ b/database/tools/dumpdb.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# +# Dump the local cloudsession database to a .sql file +# + +echo 'Enter the MySQL user account password below' +mysqldump --single-transaction -u blocklydb -p cloudsession > cs-backup.sql + From 16a3ccc34151d97cd13b228791a09e933dc60573 Mon Sep 17 00:00:00 2001 From: Jim Ewald Date: Tue, 5 Dec 2017 10:34:44 -0800 Subject: [PATCH 3/8] Update script to correct SQL errors --- database/patches/0004-update-cs-default-char-col.sql | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/database/patches/0004-update-cs-default-char-col.sql b/database/patches/0004-update-cs-default-char-col.sql index e9a0084..bcfd383 100644 --- a/database/patches/0004-update-cs-default-char-col.sql +++ b/database/patches/0004-update-cs-default-char-col.sql @@ -12,12 +12,16 @@ affected columns within each of these tables. */ # Select the target database -USE cloudsession +USE cloudsession; # Set the database defaults # This also sets the collation for individual table columns +;ALTER DATABASE blocklyprop CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER DATABASE cloudsession CHARACTER SET utf8 COLLATE utf8_general_ci; +# latin1_general_ci +# ALTER DATABASE cloudsession CHARACTER SET latin1 COLLATE latin1_general_ci; + # Update the authentication_token table SET foreign_key_checks = 0; # Default table settings From 1d14097440ca4834d5b0f881d6fab8aabaef1f73 Mon Sep 17 00:00:00 2001 From: Jim Ewald Date: Thu, 7 Dec 2017 10:32:21 -0800 Subject: [PATCH 4/8] Add support for individual or alternate email confirmation address --- .gitignore | 2 ++ app/Email/services.py | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2459a51..a3496dd 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,5 @@ nbactions.xml build deploy-test /CloudSession-Templates.tar.gz +/copy-test +/deploy2coppa diff --git a/app/Email/services.py b/app/Email/services.py index be15412..96d568b 100644 --- a/app/Email/services.py +++ b/app/Email/services.py @@ -62,7 +62,13 @@ def send_email_template_for_user(id_user, template, server, **kwargs): return else: - # Registration not subject to COPPA regulations + # Registration not subject to COPPA regulations. + # + # Evaluate user wanting to use an alternate email address to register + # the account. + if user.parent_email_source == SponsorType.INDIVIDUAL or user.parent_email: + user_email = user.parent_email + send_email_template_to_address(user_email, template, server, user.locale, params) return From 4d8c75b3c30dd3cced44cbe5401d381c32f35297 Mon Sep 17 00:00:00 2001 From: Jim Ewald Date: Thu, 7 Dec 2017 11:32:52 -0800 Subject: [PATCH 5/8] Update to support alternate email confirmation address --- app/Email/services.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/Email/services.py b/app/Email/services.py index 96d568b..1d44c8b 100644 --- a/app/Email/services.py +++ b/app/Email/services.py @@ -32,7 +32,6 @@ def send_email_template_for_user(id_user, template, server, **kwargs): logging.debug("Logging parameter %s = %s", key, value) params[key] = value - # The elements in the params array represent the data elements that are # available to the email templates. params['screenname'] = user.screen_name @@ -40,7 +39,7 @@ def send_email_template_for_user(id_user, template, server, **kwargs): params['registrant-email'] = user.email params['sponsoremail'] = user.parent_email - #Default the recipient email address + # Default the recipient email address user_email = user.email coppa = Coppa() From 9e6f7f164d08d6717c32bae7a6d03f9c58714e3b Mon Sep 17 00:00:00 2001 From: Jim Ewald Date: Thu, 7 Dec 2017 11:34:31 -0800 Subject: [PATCH 6/8] Correct error where template used wrong email address in URL --- templates/en/confirm/blocklyprop/plain.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/en/confirm/blocklyprop/plain.mustache b/templates/en/confirm/blocklyprop/plain.mustache index 023480c..294f76c 100644 --- a/templates/en/confirm/blocklyprop/plain.mustache +++ b/templates/en/confirm/blocklyprop/plain.mustache @@ -1,9 +1,9 @@ {{! This is the text body of the email}} Dear {{screenname}}, -Please go to http://localhost:8080/blockly/confirm?locale={{locale}}&email={{email}}&token={{token}} to confirm your email address. +Please go to http://localhost:8080/blockly/confirm?locale={{locale}}&email={{registrant-email}}&token={{token}} to confirm your email address. -If the url does not work, please go to http://localhost:8080/blockly/confirm and enter your email address and the token: {{token}} +If the url does not work, please go to http://localhost:8080/blockly/confirm, then enter your email address and the token: {{token}} The Parallax team From 43b18e03b5af30bace49057651ca422dffceb236 Mon Sep 17 00:00:00 2001 From: Jim Ewald Date: Thu, 7 Dec 2017 11:54:54 -0800 Subject: [PATCH 7/8] Corrent error where localhost was hard-coded into templates. --- templates/en/confirm-parent/blocklyprop/plain.mustache | 6 +++--- templates/en/confirm-teacher/blocklyprop/plain.mustache | 4 ++-- templates/en/confirm/blocklyprop/plain.mustache | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/templates/en/confirm-parent/blocklyprop/plain.mustache b/templates/en/confirm-parent/blocklyprop/plain.mustache index 3840702..13f3172 100644 --- a/templates/en/confirm-parent/blocklyprop/plain.mustache +++ b/templates/en/confirm-parent/blocklyprop/plain.mustache @@ -22,7 +22,7 @@ the link provided below. This action will close the account and remove any projects that are associated with the account. A full copy of our Child Privacy Policy is available online at: -http://localhost:8080/blockly/child-privacy-policy +http://{{blocklyprop-host}}//blockly/child-privacy-policy If this is your child, please confirm the registration by copying the link below into @@ -30,10 +30,10 @@ your browser or by navigating to the second link and confirming the student's em Confirm account registration: Copy and paste into your browser -http://localhost:8080/blockly/confirm?locale={{locale}}&email={{registrant-email}}&token={{token}} to confirm your email address. +http://{{blocklyprop-host}}//blockly/confirm?locale={{locale}}&email={{registrant-email}}&token={{token}} to confirm your email address. If the above link is unable to complete your registration, please go to -http://localhost:8080/blockly/confirm and enter your email address and the token: {{token}} +http://{{blocklyprop-host}}//blockly/confirm and enter your email address and the token: {{token}} You may also elect to cancel the registration process immediately. To do diff --git a/templates/en/confirm-teacher/blocklyprop/plain.mustache b/templates/en/confirm-teacher/blocklyprop/plain.mustache index 1e76d32..7d10691 100644 --- a/templates/en/confirm-teacher/blocklyprop/plain.mustache +++ b/templates/en/confirm-teacher/blocklyprop/plain.mustache @@ -12,10 +12,10 @@ If this is your student, please confirm the registration by copying the link bel your browser or by navigating to the second link and confirming the student's email address. Copy and paste into your browser -http://localhost:8080/blockly/confirm?locale={{locale}}&email={{registrant-email}}&token={{token}} to confirm your email address. +http://{{blocklyprop-host}}//blockly/confirm?locale={{locale}}&email={{registrant-email}}&token={{token}} to confirm your email address. If the above link is unable to complete your registration, please go to -http://localhost:8080/blockly/confirm and enter your student's email address ({{registrant-email}}) and the token: {{token}} +http://{{blocklyprop-host}}//blockly/confirm and enter your student's email address ({{registrant-email}}) and the token: {{token}} Regards, diff --git a/templates/en/confirm/blocklyprop/plain.mustache b/templates/en/confirm/blocklyprop/plain.mustache index 294f76c..d414bf0 100644 --- a/templates/en/confirm/blocklyprop/plain.mustache +++ b/templates/en/confirm/blocklyprop/plain.mustache @@ -1,9 +1,9 @@ {{! This is the text body of the email}} Dear {{screenname}}, -Please go to http://localhost:8080/blockly/confirm?locale={{locale}}&email={{registrant-email}}&token={{token}} to confirm your email address. +Please go to http://{{blocklyprop-host}}//blockly/confirm?locale={{locale}}&email={{registrant-email}}&token={{token}} to confirm your email address. -If the url does not work, please go to http://localhost:8080/blockly/confirm, then enter your email address and the token: {{token}} +If the url does not work, please go to http://{{blocklyprop-host}}//blockly/confirm, then enter your email address ({{email}}), and the token: {{token}} The Parallax team From 618d644a1fbb13c5f0dcbd5f6d36009236beb726 Mon Sep 17 00:00:00 2001 From: Jim Ewald Date: Thu, 7 Dec 2017 12:07:44 -0800 Subject: [PATCH 8/8] Correct local merge error --- .../confirm-parent/blocklyprop/plain.mustache | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/templates/en/confirm-parent/blocklyprop/plain.mustache b/templates/en/confirm-parent/blocklyprop/plain.mustache index 9ddd228..8c7de6c 100644 --- a/templates/en/confirm-parent/blocklyprop/plain.mustache +++ b/templates/en/confirm-parent/blocklyprop/plain.mustache @@ -11,13 +11,10 @@ }} Hello, -<<<<<<< HEAD -A person under age 13 has requested a new account on the Parallax BlocklyProp web site http://{{blocklyprop-host}} under the screen name {{screenname}}. In the request, your email address was provided as the parent or guardian of the requester. -======= Someone, perhaps your child, has requested a new account on the Parallax BlocklyProp web site (http://blockly.parallax.com) under the screen name {{screenname}}. When the account was created, your email address was -received as the parent or guardian of the registrant. If this is incorrect, +submitted as the parent or guardian of the registrant. If this is incorrect, please accept our apologies. There is nothing more you need to do. The request will automatically expire. @@ -32,12 +29,11 @@ the link provided below. This action will close the account and remove any projects that are associated with the account. A full copy of our Child Privacy Policy is available online at: -http://{{blocklyprop-host}}//blockly/child-privacy-policy ->>>>>>> 1.1 +http://{{blocklyprop-host}}/blockly/child-privacy-policy -BlocklyProp is a free, online programming tool designed for education. See Getting Started with BlocklyProp for more information. +BlocklyProp is a free, online programming tool designed for education. See +Getting Started with BlocklyProp for more information. -Why are we sending this? In the US, the federal Children's Online Privacy Protection Act (COPPA) requires that we communicate with a parent or guardian of any person under age 13 that requests a BlocklyProp account. A full copy of our Child Privacy Policy is available online at: http://{{blocklyprop-host}}/blockly/privacy-policy Confirm account registration: Copy and paste into your browser @@ -46,11 +42,17 @@ http://{{blocklyprop-host}}/blockly/confirm?locale={{locale}}&email={{registrant If the above link is unable to complete your registration, please go to http://{{blocklyprop-host}}/blockly/confirm and enter your email address and the token: {{token}} -If the above link is unable to complete the registration, please go to http://{{blocklyprop-host}}/blockly/confirm and enter your email address and the token: {{token}} +If the above link is unable to complete the registration, please go to +http://{{blocklyprop-host}}/blockly/confirm and enter your email address and the token: {{token}} -If you do NOT want to complete your child's account registration, you need do nothing more; this confirmation request will automatically expire in 7 days and the account will not be created. +If you do NOT want to complete your child's account registration, you need do +nothing more; this confirmation request will automatically expire in 7 days and +the account will not be created. -If you do complete your child's account registration, you may close the account in the future. Email a request for closure and your child's screen name to blocklyadmin@parallax.com. We will confirm your request and then close the account and remove any projects that are associated with the account. +If you do complete your child's account registration, you may close the account +in the future. Email a request for closure and your child's screen name to +blocklyadmin@parallax.com. We will confirm your request and then close the account +and remove any projects that are associated with the account. Regards,