Skip to content

Commit 9aac00c

Browse files
committedJul 23, 2014
Create a basic clone of the resetPassword functionality for the purposes of using Meteor's account enrollment feature.
1 parent 6ea37af commit 9aac00c

File tree

6 files changed

+80
-0
lines changed

6 files changed

+80
-0
lines changed
 

‎client/t9n/english.coffee

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ en =
1010
dontHaveAnAccount: "Don't have an account?"
1111
resetYourPassword: "Reset your password"
1212
updateYourPassword: "Update your password"
13+
enrollYourAccount: "Enroll your account"
14+
setYourPassword: "Set your password"
1315
password: "Password"
1416
usernameOrEmail: "Username or email"
1517
email: "Email"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
Template.entryEnrollAccount.helpers
2+
error: -> Session.get('entryError')
3+
4+
logo: ->
5+
AccountsEntry.settings.logo
6+
7+
Template.entryEnrollAccount.events
8+
9+
'submit #setPassword': (event) ->
10+
event.preventDefault()
11+
password = $('input[type="password"]').val()
12+
13+
passwordErrors = do (password)->
14+
errMsg = []
15+
msg = false
16+
if password.length < 7
17+
errMsg.push t9n("error.minChar")
18+
if password.search(/[a-z]/i) < 0
19+
errMsg.push t9n("error.pwOneLetter")
20+
if password.search(/[0-9]/) < 0
21+
errMsg.push t9n("error.pwOneDigit")
22+
23+
if errMsg.length > 0
24+
msg = ""
25+
errMsg.forEach (e) ->
26+
msg = msg.concat "#{e}\r\n"
27+
28+
Session.set 'entryError', msg
29+
return true
30+
31+
return false
32+
33+
if passwordErrors then return
34+
35+
Accounts.resetPassword Session.get('resetToken'), password, (error) ->
36+
if error
37+
Session.set('entryError', (error.reason || "Unknown error"))
38+
else
39+
Session.set('resetToken', null)
40+
Router.go AccountsEntry.settings.dashboardRoute
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<template name='entryEnrollAccount'>
2+
<div class="container">
3+
<div class="row">
4+
{{#if logo}}
5+
<div class="entry-logo">
6+
<a href="/"><img src="{{logo}}" alt="logo"></a>
7+
</div>
8+
{{/if}}
9+
<div class="entry col-md-4 col-md-offset-4">
10+
{{#if error}}
11+
<div class='alert alert-danger'>{{error}}</div>
12+
{{/if}}
13+
<h3>{{t9n "enrollYourAccount"}}</h3>
14+
<form id='setPassword'>
15+
<div class="form-group">
16+
<input type="password" name="new-password" class="form-control" value=''>
17+
</div>
18+
<button type="submit" class="btn btn-default">{{t9n "setYourPassword"}}</button>
19+
</form>
20+
{{#if showSignupCode}}
21+
<p class="entry-signup-cta">{{t9n 'dontHaveAnAccount'}} <a href="/sign-up">{{t9n 'signUp'}}</a></p>
22+
{{/if}}
23+
</div>
24+
</div>
25+
</div>
26+
</template>

‎package.js

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ Package.on_use(function(api) {
3434
'client/views/forgotPassword/forgotPassword.coffee',
3535
'client/views/resetPassword/resetPassword.html',
3636
'client/views/resetPassword/resetPassword.coffee',
37+
'client/views/enrollAccount/enrollAccount.html',
38+
'client/views/enrollAccount/enrollAccount.coffee',
3739
'client/views/social/social.html',
3840
'client/views/social/social.coffee',
3941
'client/views/error/error.html',

‎server/entry.coffee

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ Meteor.startup ->
22
Accounts.urls.resetPassword = (token) ->
33
Meteor.absoluteUrl('reset-password/' + token)
44

5+
Accounts.urls.enrollAccount = (token) ->
6+
Meteor.absoluteUrl('enroll-account/' + token)
7+
58
AccountsEntry =
69
settings: {}
710

‎shared/router.coffee

+7
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,10 @@ Router.map ->
7575
onBeforeAction: ->
7676
Session.set('entryError', undefined)
7777
Session.set('resetToken', @params.resetToken)
78+
79+
@route 'entryEnrollAccount',
80+
path: 'enroll-account/:resetToken'
81+
onBeforeAction: ->
82+
Session.set('entryError', undefined)
83+
Session.set('resetToken', @params.resetToken)
84+

0 commit comments

Comments
 (0)