7.7. ユーザーおよびクエリー機能インターフェイスの追加/削除
今回の例で対応していない内容の 1 つとして、ユーザーやパスワードの追加および削除を可能にする操作です。また、この例で定義されたユーザーは、管理コンソールでクエリーや表示ができません。このような拡張機能を追加するには、example プロバイダーが UserQueryMethodsProvider インターフェイス (または UserQueryProvider) および UserRegistrationProviderインターフェイスを実装する必要があります。
7.7.1. UserRegistrationProvider の実装 リンクのコピーリンクがクリップボードにコピーされました!
この手順を使用して、特定のストアからユーザーの追加および削除を実装します。その場合、最初にプロパティーファイルをディスクに保存する必要があります。
PropertyFileUserStorageProvider
次に、addUser() メソッドおよび removeUser() メソッドの実装が簡単になります。
PropertyFileUserStorageProvider
ユーザーを追加する場合は、プロパティーマップのパスワード値を UNSET_PASSWORD に設定することに注意してください。これを実行するのは、プロパティー値に null 値を指定できないためです。また、これを反映するように CredentialInputValidator メソッドを変更する必要もあります。
プロバイダーが UserRegistrationProvider インターフェイスを実装している場合は、addUser() メソッドが呼び出されます。プロバイダーにユーザーの追加をオフにする設定スイッチがある場合は、このメソッドから null を返すとこのプロバイダーが飛ばされ、次のプロバイダーを呼び出します。
PropertyFileUserStorageProvider
プロパティーファイルを保存できるようになったため、パスワードの更新を許可しても問題ありません。
PropertyFileUserStorageProvider
パスワードの無効化も実装できるようになりました。
PropertyFileUserStorageProvider
これらのメソッドを実装すると、管理コンソールでユーザーのパスワードを変更および無効化できるようになりました。
7.7.2. UserQueryProvider の実装 リンクのコピーリンクがクリップボードにコピーされました!
UserQueryProvider は、UserQueryMethodsProvider と UserCountMethodsProvider を組み合わせたものです。UserQueryMethodsProvider を実装しないと、管理コンソールは example プロバイダーによって読み込まれたユーザーを表示および管理できません。このインターフェイスの実装を見てみましょう。
PropertyFileUserStorageProvider
searchForUserStream() の最初の宣言は、String パラメーターを受け取ります。この例では、パラメーターは検索に使用するユーザー名を表します。この文字列は部分文字列にすることができます。そのため、検索を行う際には String.contains() メソッドを選択します。すべてのユーザーのリストを要求することを示すために * を使用していることに注目してください。このメソッドはプロパティーファイルのキーセットを繰り返し処理し、getUserByUsername() にユーザーを読み込みます。firstResult パラメーターおよび maxResults パラメーターに基づいてこの呼び出しにインデックス化していることに留意してください。外部ストアがページネーションをサポートしない場合には、同様のロジックを実行する必要があります。
PropertyFileUserStorageProvider
Map パラメーターを取る searchForUserStream() メソッドは、姓名、ユーザー名、およびメールに基づいてユーザーを検索できます。ユーザー名のみが保存されるため、Map パラメーターに username 属性が含まれていない場合を除き、検索はユーザー名のみに基づいて行われます。この場合、すべてのユーザーが返されます。このような場合、searchForUserStream(realm, search, firstResult, maxResults) が使用されます。
PropertyFileUserStorageProvider
グループまたは属性は保存されないため、他のメソッドは空のストリームを返します。