2016-08-29 8 views
1

クライアント側の言語がAngular 2のプロジェクトがあります。アプリケーションにはいくつかのページがあり、それらのすべてに異なるアクセス許可があります。たとえば、従業員ページ、書籍ページ、ロケーションページ、クロッキングページなどがあります。許可されていないユーザーのフィールドを無効にするための一般的なソリューション

このページにはそれぞれ、CanEditとCanViewのアクセス許可があります。ログインしたユーザーは、場所のCanEdit権限を持っている可能性がありますが、書籍ページのCanEdit権限を持っていない可能性があります。

私は、1か所に書いて、すべてのページで動作する汎用ソリューションを作りたいと思います。すべてのページでコードを繰り返す必要はありません。次のようなものがあります。ユーザーが現在のページに対してCanEdit権限を持っている場合は、すべての入力に対して読み取り専用属性を削除し、CanEdit権限を持っていない場合は読み取り専用属性を追加します。

現時点では、プロジェクトには役割はありませんが、私は提案をすることができます。

これは可能ですか?

答えて

1

私が想像できる最良の解決策は、ユーザーのCanEditとCanViewのステータスでサービスを作成することです。その後、HTMLページ、使用上:

<button *ngIf="userService.CanView">a button</button> 

/非表示を表示する(実際には、それが存在するかどう作るために)あなたが

+0

サービスでは、 CanViewLocations、CanEditLocations、CanViewBooks、CanEditBooksはアプリケーションのすべてのページに対応していますか? –

+0

権利に必要な精度のレベルに依存します。最も基本的な方法は、CanViewとCanEditの2つのステータスのみを使用し、いずれかのページでそれらを使用することです。保護したいボタン/フィールド/ divに* ngIf条件を設定するだけです –

1

を表示させたい要素は、あなたがCanViewのようなディレクティブを使用してそれを行うことができます、CanRead、およびユーザーがページを読んだり編集したりできるかどうかをチェックする共有サービスを提供します。この指示文では、CanView権限がない場合はユーザーをリダイレクトでき、CanEdit権限を持っていない場合はすべての入力を無効にすることができます。

関連する問題