diff --git a/LesionTracker/.meteor/packages b/LesionTracker/.meteor/packages index a4152e136..39a7bdedb 100644 --- a/LesionTracker/.meteor/packages +++ b/LesionTracker/.meteor/packages @@ -52,3 +52,4 @@ aldeed:template-extension@4.0.0 zuuk:stale-session gilbertwat:bootstrap3-daterangepicker silentcicero:jszip +email diff --git a/LesionTracker/activeEntry.js b/LesionTracker/activeEntry.js index cdde9557d..04acdba62 100644 --- a/LesionTracker/activeEntry.js +++ b/LesionTracker/activeEntry.js @@ -25,6 +25,7 @@ if (Meteor.isClient){ }); } +/* if (Meteor.isServer){ Accounts.emailTemplates.siteName = 'AwesomeSite'; Accounts.emailTemplates.from = 'AwesomeSite Admin '; @@ -42,3 +43,4 @@ if (Meteor.isServer){ //process.env.MAIL_URL = 'smtp://sandboxid.mailgun.org:mypassword@smtp.mailgun.org:587'; }); } +*/ diff --git a/LesionTracker/client/components/emailVerification/emailVerification.html b/LesionTracker/client/components/emailVerification/emailVerification.html new file mode 100644 index 000000000..2afdad44c --- /dev/null +++ b/LesionTracker/client/components/emailVerification/emailVerification.html @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/LesionTracker/client/components/emailVerification/emailVerification.js b/LesionTracker/client/components/emailVerification/emailVerification.js new file mode 100644 index 000000000..444359bd4 --- /dev/null +++ b/LesionTracker/client/components/emailVerification/emailVerification.js @@ -0,0 +1,5 @@ +Template.emailVerification.helpers({ + emailAddress: function() { + return Meteor.user().emails[0].address; + } +}); \ No newline at end of file diff --git a/LesionTracker/client/components/emailVerification/emailVerification.styl b/LesionTracker/client/components/emailVerification/emailVerification.styl new file mode 100644 index 000000000..2e33fb124 --- /dev/null +++ b/LesionTracker/client/components/emailVerification/emailVerification.styl @@ -0,0 +1,15 @@ +#emailVerification + #emailVerificationContent + position: absolute + top: 0 + bottom: 0 + left: 0 + right: 0 + margin: auto + width: 60% + height: 20% + z-index: 100 + border-radius: 5px + padding: 10px 20px 10px 20px + background-color: rgba(255,255,255,1) + outline: none \ No newline at end of file diff --git a/LesionTracker/client/components/viewer.js b/LesionTracker/client/components/viewer.js index b4bc48a93..ca930afda 100644 --- a/LesionTracker/client/components/viewer.js +++ b/LesionTracker/client/components/viewer.js @@ -263,10 +263,13 @@ Template.viewer.onCreated(function() { }); // Set active tool for timepoint - dataContext.timepointIds.forEach(function(timepointId) { - var timepoint = Timepoints.findOne({timepointId: timepointId}); - setTimepointActiveTool(timepoint); - }); + if (dataContext && dataContext.timepointIds) { + dataContext.timepointIds.forEach(function(timepointId) { + var timepoint = Timepoints.findOne({timepointId: timepointId}); + setTimepointActiveTool(timepoint); + }); + } + } }); }); diff --git a/LesionTracker/client/routes.js b/LesionTracker/client/routes.js index e4af04d3a..98942694c 100644 --- a/LesionTracker/client/routes.js +++ b/LesionTracker/client/routes.js @@ -1,5 +1,10 @@ Session.setDefault('ViewerData', {}); +// TODO: verifyEmail variable will be removed when mail server is set. +// verifyEmail controls email verification template +// set verifyEmail as false if email server settings are not ready +Session.setDefault('verifyEmail', false); + // Re-add any tab data saved in the Session Object.keys(ViewerData).forEach(function(contentId) { var tabData = ViewerData[contentId]; @@ -29,21 +34,33 @@ var routerOptions = { data: data }; + + Router.route('/', function() { // Check user is logged in - if (!Meteor.user() || !Meteor.userId()) { - this.render('entrySignIn', routerOptions); + if(Meteor.user() && Meteor.userId()) { + if (!Meteor.user().emails[0].verified && Session.get("verifyEmail")) { + this.render('emailVerification', routerOptions); + } else { + this.render('worklist', routerOptions); + } + } else { - this.render('worklist', routerOptions); + this.render('entrySignIn', routerOptions); } }); Router.route('/worklist', function() { // Check user is logged in - if (!Meteor.user() || !Meteor.userId()) { - this.render('entrySignIn', routerOptions); + if(Meteor.user() && Meteor.userId()) { + if (!Meteor.user().emails[0].verified && Session.get("verifyEmail")) { + this.render('emailVerification', routerOptions); + } else { + this.render('worklist', routerOptions); + } + } else { - this.render('worklist', routerOptions); + this.render('entrySignIn', routerOptions); } }); diff --git a/LesionTracker/server/email.js b/LesionTracker/server/email.js new file mode 100644 index 000000000..a4f775c42 --- /dev/null +++ b/LesionTracker/server/email.js @@ -0,0 +1,34 @@ + + /*Meteor.startup(function () { + + // Mail server settings + var username = ""; + var password = ""; + var server = ""; + var port = ""; + + Accounts.emailTemplates.siteName = 'Lesion Tracker'; + Accounts.emailTemplates.from = 'Lesion Tracker Admin <'+username+'>'; + + + process.env.MAIL_URL = 'smtp://' + + encodeURIComponent(username) + ':' + + encodeURIComponent(password) + '@' + + encodeURIComponent(server) + ':' + port; + + // Subject line of the email. + Accounts.emailTemplates.verifyEmail.subject = function(user) { + return 'Confirm Your Email Address for Lesion Tracker'; + }; + + // Email text + Accounts.emailTemplates.verifyEmail.text = function(user, url) { + return 'Thank you for registering. Please click on the following link to verify your email address: \r\n' + url; + }; + + // Send email when account is created + Accounts.config({ + sendVerificationEmail: true + }); +}); +*/ \ No newline at end of file diff --git a/Packages/lesiontracker/client/components/activeEntry/activeEntry.styl b/Packages/lesiontracker/client/components/activeEntry/activeEntry.styl index 4a0d8c647..c64163c85 100644 --- a/Packages/lesiontracker/client/components/activeEntry/activeEntry.styl +++ b/Packages/lesiontracker/client/components/activeEntry/activeEntry.styl @@ -10,5 +10,5 @@ width: 50px // TODO: Fix theming in active-entry so we don't have to do this -.entryPage .wrapper-auth +.entryPage .wrapper-auth,.subtitle-auth color: white !important \ No newline at end of file diff --git a/Packages/lesiontracker/client/components/lesionTrackerLayout/lesionTrackerLayout.js b/Packages/lesiontracker/client/components/lesionTrackerLayout/lesionTrackerLayout.js index 92529c0ef..53b780850 100644 --- a/Packages/lesiontracker/client/components/lesionTrackerLayout/lesionTrackerLayout.js +++ b/Packages/lesiontracker/client/components/lesionTrackerLayout/lesionTrackerLayout.js @@ -21,6 +21,19 @@ Template.lesionTrackerLayout.helpers({ showWorklistMenu: function() { return Template.instance().showWorklistMenu.get(); + }, + + currentUser: function() { + if (Meteor.user() && Meteor.userId()) { + if (Session.get("verifyEmail")) { + if (Meteor.user().emails[0].verified) { + return true; + } + return false; + } + return true; + } + return false; } }); diff --git a/Packages/worklist/client/components/worklistResult/worklistResult.js b/Packages/worklist/client/components/worklistResult/worklistResult.js index a43325c0f..573c58e3a 100644 --- a/Packages/worklist/client/components/worklistResult/worklistResult.js +++ b/Packages/worklist/client/components/worklistResult/worklistResult.js @@ -155,8 +155,6 @@ function search() { Session.set("searchResults", searchResults); } - - }); } @@ -186,7 +184,7 @@ Template.worklistResult.onRendered(function() { ranges: { 'Today': [moment(), moment()], 'Last 7 Days': [moment().subtract(6, 'days'), moment()], - 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()] } }); });