2017-07-26 1 views
0

Meteorアカウント - パスワードパッケージでパスワードをリセットした後にログインを無効にするにはどうすればいいですか?数秒後Meteorアカウントのパスワードをリセットした後にログインを無効にする - パスワード

ゲストのメールにリセットのリンクを送信した後、私はパスワードをリセットするには、このコードを持って、

Accounts.resetPassword(this.props.params.token, this.refs.password.value.trim(),(err) => { 
      if(err){ 
       Bert.alert(err, 'danger', 'growl-top-right'); 
      } else { 
       Bert.alert("Password is successfully changed.", 'success', 'growl-top-right'); 
      } 
      this.setState({resetPassword:false}); 
      this.refs.password.value = ""; 
     }); 

、それはダッシュボードページへのユーザーのログインオートます。ここでの問題は、ユーザーの種類、ゲスト(ログインできない)、管理者(ユーザーの管理にアクセスできるユーザー)、スタッフ(アプリケーションの確認ユーザー)です。 ゲストがパスワードをリセットした場合、自動的にログインしていますが間違っています。

自動ログインを無効にするにはどうすればよいですか?

ところで、私はMeteor + React JSをReact-routerと併用しています。ここで

あなたは、コールバックに渡されたオブジェクトのuserがゲストで、もしそうなら、falsy値を返すかどうかをテストするためにAccountsServer#validateLoginAttempt(func)メソッドを使用することができます

Accounts.validateLoginAttempt((data)=>{ 
    if(data.error) 
     return data.error; 
    if(!data.user.emails[0].verified) 
     throw new Meteor.Error(403, 'Verify email account first'); 
    if((data.user.profile && data.user.profile.retired) || (data.user.roles.company.includes("guest"))) 
     throw new Meteor.Error(403, 'Account must be accepted by an admin'); 
    else 
     return true; 
}); 
+0

私はそれを行う方法があると確信していますが、それはあなたのアプリが適切に計画されていないように聞こえます。すべてのユーザーをログインできるようにして、その権限レベルに基づいて機能を制限できないのはなぜですか?検証されたアドレスを持っているかどうかに基づいて、アクセス許可を設定する代わりに。 – d4nyll

+0

ゲストは、企業アカウントを使用して登録できます。だから公開ページに登録することができました。ログインする前に登録ユーザーがスタッフであることを確認する必要があります。 – JMA

答えて

0

、私の検証ログイン試行コードです。

これはサーバー側で行われます。

このanswerは、ユーザーに確認済みのメールがあるかどうかに基づいて実装例が示されています。

+0

validateLoginAttemptコードを追加しました。しかし、動作していないようです。 – JMA

関連する問題