ユーザーを認証するために社内のユーザー管理システムを使用する必要があります。このシステムは、グループ、ロール、およびテナントへのユーザーのメンバーシップも保持します。これは、承認作業を行うときに最も役立ちます。
accounts-personaのコードを見ましたが、うまくいきません。したがって、私は何か間違ったことをしていると推測します。
サーバーには新しい LoginHandler があります。
Meteor.startup( function () {
var config = Accounts.loginServiceConfiguration.findOne( {service: 'sertal'} );
if ( !config ) {
Accounts.loginServiceConfiguration.insert( { service: 'sertal' } );
}
} );
Accounts.registerLoginHandler( function ( options ) {
if ( !options.sertal && !options.assertion )
return undefined; // don't handle
var url = "http://dev.sertal.ch/checkCredential";
var request = {
params: {
uname: options.email,
pword: options.password
}
};
var result = Meteor.http.get( url, request );
if ( result.statusCode !== 200 ) {
throw new Meteor.Error( Accounts.LoginCancelledError.numericError, 'Sertal Login Failed' );
} else {
var user = result.data.userrec;
user.groups = result.data.grprec;
user.id = user._id;
return Accounts.updateOrCreateUserFromExternalService( 'sertal', user );
}
} );
クライアントでは、ログイン ボタンが押された後に次のコードを使用します。
Accounts.callLoginMethod( {
methodName: 'login',
methodArguments: {sertal: true,
email: $( '#sertal-email' ).val(),
password: $( '#sertal-password' ).val(),
resume: false
},
userCallback: function ( error ) {
if ( error ) {
console.log( "error: " + error );
} else {
$( "#sertalLoginFormDiv" ).dropdown( 'toggle' );
}
}
} );
ただし、LoginHandler はトリガーされません。何かが欠けているに違いないのですが、私にはわかりません。
この件に関するドキュメントは見つかりませんでした。答えは、プロセスを説明するドキュメントを指摘することでもあります。