環境
- Docker 運用
v0.23 2017-05-21
状況
アカウントを登録してから送られてくるメールの中の、認証URLにアクセスしても何も起きない。
結論
現状普通ではどうしようもないみたいです(下掲の Opened Issue 参照)。Minor bug
とありますが、結構やっかいなバグだと思います。
むりやり対応策(概略)
データベースを直接書き換える。
むりやり対応策(具体例)
Wekan のデータベースはMongoDB
なのでさっさと該当箇所を書き換えましょう。以下、Docker 運用の場合ですが、それ以外でも似た感じだと思います。
1. データベースのコンテナに入る
$ sudo docker exec -it [データベースのコンテナ名] bash
2. MongoDB
に入る
# mongo
2-1. MongoDB の中身を確かめる(以下、「3.」まで飛ばしても良いです)
MongoDB のデータの中身を確認しておきます。冗長な部分を含みますので、MongoDB に習熟している方なら飛ばしてよいと思います。
2-2. データベース一覧を確かめる
データベース一覧を表示します。
> show dbs local 0.000GB wekan 0.005GB
2-3. 使用するデータベースを指定する
wekan
というデータベースを使うように指定します。
> use wekan switched to db wekan
2-4. コレクションの一覧を表示する
コレクションの一覧を表示してみましょう。
> show collections accountSettings activities announcements boards card_comments cards cfs._tempstore.chunks cfs.attachments.filerecord cfs.avatars.filerecord cfs_gridfs._tempstore.chunks cfs_gridfs._tempstore.files cfs_gridfs.attachments.chunks cfs_gridfs.attachments.files cfs_gridfs.avatars.chunks cfs_gridfs.avatars.files checklists esCounts invitation_codes lists meteor-migrations meteor_accounts_loginServiceConfiguration presences settings unsaved-edits users
2-5. usersコレクション の中の ドキュメント一覧 を表示する
users
コレクションに利用ユーザのデータが入っています。この中のドキュメント一覧を表示してみましょう。
> db.users.find() { "_id" : "maWafjsGg4nkakr4q", "createdAt" : 'ISODate("2018-02-09T03:39:26.857Z")', "services" : { "password" : { "bcrypt" : (中略) "username" : "foobar", "emails" : [ { "address" : "foobar@foo.bar", "verified" : false } ], "profile" : { }, "isAdmin" : true }
表示対象件数が多すぎる場合は途中で止まります。そして Type "it" for more
と表示されますので、続きを見たければ it
とコマンドを送ればよいです。
2-6. wekan データベースの概要がつかめた
「2-1.」から「2-6.」までの操作で、wekan
データベースの概要が理解できたと思います。
3. "verified"
の値をtrue
に書き換える
users
コレクション中のドキュメントの中のemails
内、verified
というキーに認証が行われたかどうかの値が格納されています。
以下のようにして、ユーザ名がmy_username
の人のverified
の値をtrue
にしましょう。"address"
の値には登録しているメールアドレスをそのまま入れます
> db.users.update( { "username" : "my_username" }, { $set : { "emails" : [ { "address" : "your@mail.address", "verified" : true } ] } } )
4. 完了
これでメールアドレスの認証が完了したことになりました。「通知」を有効にすれば、設定に従って以下のような通知メールが届くはずです。
補足
"verified"の値の更新の際、"verified" : "true"
のような指定だとエラーになります。同様に"verified" : 1
でもエラーになります。
"verified" : true
と指定しなければいけません。
参考(その1)
MongoDB
のコマンドに関しては以下のページがめちゃくちゃ分かりやすかったです(感謝!)。
参考(その2)
以下の Issue が参考になりました。