開発ボックスにメールを接続していて、ユーザーを作成した後に確認メールを受け取ります。含まれているリンクをクリックすると、メイン ページに移動します。
1) リンクをクリックすると / にリダイレクトされるため、何らかの処理が行われるように見えますが、ユーザー アカウントの検証済みフラグは変更されません。
2) Accounts.config 設定を無視しているようで、明示的に呼び出した場合にのみ機能します
token = Accounts.sendVerificationEmail(userId)
詳細:
mrt --version
Meteorite version 0.6.11
Release 0.6.5.1
mrt list --using
standard-app-packages
preserve-inputs
less
coffeescript
iron-router
foundation
http
moment
email
spin
roles
accounts-base
accounts-password
accounts-ui
サーバー/lib/account.coffee
Accounts.config
sendVerificationEmail: true
forbidClientAccountCreation: true
サーバー方式:
Meteor.startup ->
create_user = (options) ->
console.log('create_user: ' + options.username)
userId = Accounts.createUser options
# should not be necessary, but I get email only when included
token = Accounts.sendVerificationEmail(userId)
Meteor.methods({ create_user: create_user })
上記の呼び出しの後、mongo は次のように表示します。
emails: [ { "address" : "jim@less2do.com" , "verified" : false}]
and
email: { "verificationTokens" : [ { "token" : "N3sLEDMsutTbjxyzX" , "address" : "jim@less2do.com" , "when" : 1.380616343673E12}]}
デフォルトのメールを取得:
Hello,
To verify your account email, simply click the link below.
http://localhost:3000/#/verify-email/N3sLEDMsutTbjxyzX
Thanks.
上記のリンクをクリックすると、次のようになります。
http://localhost:3000/
しかし、mongo db に変更はありません。
accounts-password によって処理された /#/verify-email/N3sLEDMsutTbjxyzX によって何かが取り込まれ、ユーザー ドキュメントが更新されることを期待していました。
accounts-base.js の試行、
match = window.location.hash.match(/^\#\/verify-email\/(.*)$/);
しかし、この時点ではロケーション ハッシュは空です。
ルートを手動で設定する必要がある場所がありませんか? 鉄のルーターの使用は物事を台無しにしていますか? 念のため、
Router.map ->
this.route 'home',
path: '/'
this.route 'inboxes'
this.route 'availability'
this.route 'find-agent'
this.route 'inbox-tour'
this.route 'availability-tour'
this.route 'find-agent-tour'
this.route 'inbox',
path: '/inbox/:_id'
data: () ->
m = Messages.findOne this.params._id
m._markRead()
fixed = _.map m.history.versions, (msg) =>
msg.left = (msg.author is 'offer')
msg.body = msg.body.replace( /[\r\n]+/g, "<br>")
msg
m.history.versions = fixed
Session.set 'messageVersions', fixed
m
waitOn: db.subscriptions.messages
loadingTemplate: 'loading'
notFoundTemplate: 'notFound'
this.route 'register',
this.route 'requested',
this.route 'blog',
this.route 'test',
this.route 'aboutUs'
Router.configure
layout: 'layout'
notFoundTemplate: 'notFound'
loadingTemplate: 'loading'
renderTemplates:
'footer': { to: 'footer' }
'sidebar': { to: 'sidebar' }
### Commented to rule out this routine
before: ->
routeName = @context.route.name
debugger
# no need to check at these URLs
#, etc
return if _.include(["request", "passwordReset","register", "tour"], routeName)
return if _.intersection(routeName.split('-'), ["tour"]).length > 0
return if routeName.indexOf('verify-email') != -''
user = Meteor.user()
unless user
#@render (if Meteor.loggingIn() then @loadingTemplate else "/")
if Meteor.loggingIn()
console.log('still logging in, no user, to ' + @loadingTemplate)
@render @loadingTemplate
console.log('!render ' + @loadingTemplate + ' completed' )
else
console.log('no user, / from router over ' + @loadingTemplate)
@render "home"
@stop()
###
ありがとう!