summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package.json3
-rw-r--r--public/assets/javascripts/mx/primitives/mx.youtube.js2
-rw-r--r--public/assets/javascripts/ui/_router.js21
-rw-r--r--public/assets/javascripts/ui/site/PasswordForgot.js2
-rw-r--r--public/assets/javascripts/ui/site/PasswordReset.js6
-rw-r--r--public/assets/javascripts/ui/site/UsernameTaken.js6
-rwxr-xr-xpublic/assets/stylesheets/app.css4
-rw-r--r--server/index.js4
-rw-r--r--server/lib/auth/views.js2
-rw-r--r--server/lib/util.js2
-rw-r--r--views/modal.ejs1
-rw-r--r--views/partials/sign-in.ejs12
12 files changed, 53 insertions, 12 deletions
diff --git a/package.json b/package.json
index 95af2ab..ca45bff 100644
--- a/package.json
+++ b/package.json
@@ -29,7 +29,8 @@
"html-entities": "~1.0.10",
"multer": "~0.1.0",
"body-parser": "1.3.0",
- "marked": "~0.3.2"
+ "marked": "~0.3.2",
+ "emailjs": "~0.3.6"
},
"devDependencies": {
"grunt": "~0.4.1",
diff --git a/public/assets/javascripts/mx/primitives/mx.youtube.js b/public/assets/javascripts/mx/primitives/mx.youtube.js
index 3662d7b..b1d3dfb 100644
--- a/public/assets/javascripts/mx/primitives/mx.youtube.js
+++ b/public/assets/javascripts/mx/primitives/mx.youtube.js
@@ -120,5 +120,5 @@ MX.Youtube = MX.Object3D.extend({
})
window.onYouTubePlayerAPIReady = function(){
- console.log("youtube ready")
+ // console.log("youtube ready")
}
diff --git a/public/assets/javascripts/ui/_router.js b/public/assets/javascripts/ui/_router.js
index 6d41d5b..fdeafd5 100644
--- a/public/assets/javascripts/ui/_router.js
+++ b/public/assets/javascripts/ui/_router.js
@@ -5,6 +5,7 @@ var SiteRouter = Router.extend({
events: {
"click [data-role='show-signup-modal']": 'signup',
"click [data-role='show-signin-modal']": 'signin',
+ "click [data-role='forgot-password']": 'passwordForgot',
"click [data-role='new-project-modal']": 'newProject',
"click [data-role='edit-project-modal']": 'editProject',
"click [data-role='edit-profile-modal']": 'editProfile',
@@ -18,6 +19,11 @@ var SiteRouter = Router.extend({
routes: {
"/login": 'signin',
"/signup": 'signup',
+
+ "/auth/usernameTaken": 'usernameTaken',
+ "/auth/password": 'passwordReset',
+ "/auth/forgotPassword": 'passwordForgot',
+
"/profile": 'profile',
"/profile/edit": 'editProfile',
"/about/:name/edit": 'editDocument',
@@ -40,6 +46,7 @@ var SiteRouter = Router.extend({
this.newProjectModal = new NewProjectModal()
this.editProjectModal = new EditProjectModal()
this.editProfileModal = new EditProfileModal()
+ this.passwordForgotModal = new PasswordForgot()
this.documentModal = new DocumentModal()
this.route()
@@ -122,6 +129,20 @@ var SiteRouter = Router.extend({
this.signInModal.load()
},
+ usernameTaken: function(e){
+ this.usernameTakenModal = new UsernameTaken ()
+ this.usernameTakenModal.load()
+ },
+ passwordForgot: function(e){
+ e && e.preventDefault()
+ window.history.pushState(null, document.title, "/auth/forgotPassword")
+ this.passwordForgotModal.load()
+ },
+ passwordReset: function(e){
+ this.passwordResetModal = new PasswordReset ()
+ this.passwordResetModal.load()
+ },
+
profile: function(e){
var classes = ['one', 'two', 'three', 'four',
'five', 'six', 'seven', 'eight',
diff --git a/public/assets/javascripts/ui/site/PasswordForgot.js b/public/assets/javascripts/ui/site/PasswordForgot.js
index 6ac23c0..ecbfc07 100644
--- a/public/assets/javascripts/ui/site/PasswordForgot.js
+++ b/public/assets/javascripts/ui/site/PasswordForgot.js
@@ -1,6 +1,6 @@
var PasswordForgot = ModalFormView.extend({
el: ".mediaDrawer.passwordForgot",
- action: "/auth/passwordForgot",
+ action: "/auth/forgotPassword",
validate: function(){
var errors = []
diff --git a/public/assets/javascripts/ui/site/PasswordReset.js b/public/assets/javascripts/ui/site/PasswordReset.js
index 77e8684..9b87d37 100644
--- a/public/assets/javascripts/ui/site/PasswordReset.js
+++ b/public/assets/javascripts/ui/site/PasswordReset.js
@@ -2,6 +2,12 @@ var PasswordReset = ModalFormView.extend({
el: ".mediaDrawer.passwordReset",
action: "/auth/password",
+ load: function(){
+ var opt = JSON.parse( $("#opt").html() )
+ this.$("[name=nonce]").val( opt.nonce )
+ this.__super__.load.call(this)
+ },
+
validate: function(){
var errors = []
diff --git a/public/assets/javascripts/ui/site/UsernameTaken.js b/public/assets/javascripts/ui/site/UsernameTaken.js
index fc651e3..fc9f50a 100644
--- a/public/assets/javascripts/ui/site/UsernameTaken.js
+++ b/public/assets/javascripts/ui/site/UsernameTaken.js
@@ -2,6 +2,12 @@ var UsernameTaken = ModalFormView.extend({
el: ".mediaDrawer.usernameTaken",
action: "/auth/usernameTaken",
+ load: function(){
+ var opt = JSON.parse( $("#opt").html() )
+ this.$("#usernameThatIsTaken").html( opt.username )
+ this.__super__.load.call(this)
+ },
+
validate: function(){
var errors = []
diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css
index 9c80987..937e5c4 100755
--- a/public/assets/stylesheets/app.css
+++ b/public/assets/stylesheets/app.css
@@ -729,8 +729,10 @@ h5 {
-webkit-transform:translateY(0%);
transform:translateY(0%);
}
+.mediaDrawer.table, .mediaDrawer.error,
.mediaDrawer.signin, .mediaDrawer.signup,
-.mediaDrawer.alert, .mediaDrawer.confirm, .mediaDrawer.error,
+.mediaDrawer.alert, .mediaDrawer.confirm,
+.mediaDrawer.passwordForgot, .mediaDrawer.passwordReset, .mediaDrawer.usernameTaken,
.mediaDrawer.layouts, .mediaDrawer.projects, .mediaDrawer.newProject {
display:table;
}
diff --git a/server/index.js b/server/index.js
index 4b628e4..1db7e04 100644
--- a/server/index.js
+++ b/server/index.js
@@ -92,8 +92,8 @@ site.route = function () {
app.post('/auth/usernameTaken', auth.usernameFixed);
app.get('/auth/password', auth.views.resetPassword);
app.post('/auth/password', auth.resetPassword);
- app.post('/auth/passwordForgot', auth.forgotPassword);
-
+ app.get('/auth/forgotPassword', views.modal);
+ app.post('/auth/forgotPassword', auth.forgotPassword);
app.get('/profile', views.profile)
app.get('/profile/edit', views.profile)
diff --git a/server/lib/auth/views.js b/server/lib/auth/views.js
index 591b06a..cd31248 100644
--- a/server/lib/auth/views.js
+++ b/server/lib/auth/views.js
@@ -26,7 +26,7 @@ views.resetPassword = function (req, res) {
if (err || ! user) {
return res.redirect("/")
}
- res.render("reset-password", { username: user.username, nonce: user.passwordNonce })
+ res.render("modal", { opt: { username: user.username, nonce: user.passwordNonce } })
})
}
diff --git a/server/lib/util.js b/server/lib/util.js
index 6604abe..87e2d54 100644
--- a/server/lib/util.js
+++ b/server/lib/util.js
@@ -25,7 +25,7 @@ util.capitalize = function (s) {
util.capitalizeWord = function (s) {
return s.charAt(0).toUpperCase() + s.slice(1);
}
-util.escapeRegExp: function (s) {
+util.escapeRegExp = function (s) {
return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
}
diff --git a/views/modal.ejs b/views/modal.ejs
index 4550aff..6ed3fa1 100644
--- a/views/modal.ejs
+++ b/views/modal.ejs
@@ -19,5 +19,6 @@
</div>
</body>
[[ include partials/scripts ]]
+<script id="opt" type="text/json">[[- JSON.stringify(opt) ]]</script>
<script>window.isModalView = true</script>
</html>
diff --git a/views/partials/sign-in.ejs b/views/partials/sign-in.ejs
index 11b930f..3f05fff 100644
--- a/views/partials/sign-in.ejs
+++ b/views/partials/sign-in.ejs
@@ -27,7 +27,8 @@
<div class="errorList"></div>
</div>
<br><br>
- <a data-role="show-signup-modal" href="#">Make a new account</a>
+ <a data-role="show-signup-modal" href="#">Make a new account</a><br>
+ <a data-role="forgot-password" href="#">Forgot your password?</a>
</form>
</div>
</div>
@@ -74,9 +75,11 @@
</div>
</div>
-<div class="mediaDrawer fixed animate forgotPassword">
+<div class="mediaDrawer fixed animate passwordForgot">
+ <span class="close">X</span>
<div class="box">
<form id="forgotPw" method="post" autocomplete="off">
+ <input type="hidden" name="_csrf" value="[[- token ]]">
<li>
Forgot your password? Enter the email address you used to sign up
and we can reset it for you.
@@ -98,9 +101,10 @@
</div>
</div>
-<div class="mediaDrawer fixed animate resetPassword">
+<div class="mediaDrawer fixed animate passwordReset">
<div class="box">
<form id="resetPassword" method="post">
+ <input type="hidden" name="_csrf" value="[[- token ]]">
<input type="hidden" name="nonce">
Please reset your password.
<br><br>
@@ -129,7 +133,7 @@
<div class="mediaDrawer fixed animate usernameTaken">
<div class="box">
<form id="usernameTaken" method="post" autocomplete="off">
- We're sorry, the username <b>[[- username ]]</b> is already being used.
+ We're sorry, the username <b id="usernameThatIsTaken"></b> is already being used.
<br><br>
Please choose another username.
<br><br>