2017-12-15 23 views
-3

私たちはノックアウトを使用してWebシングルページのビジネスアプリを持っています このアプリでは、すべてのユーザーの権限を持つ権限ページがあります。 など。 Alexはページ「Partners」で検索できますが、Ollaはこのページでパートナーを作成することもできます。 これは、アレックスの場合、ボタン "Create Partner"を非表示にする必要があることを意味します。 簡単なケースです。JavaScript認証(認証ではない)

動的に作成されたデータテーブルの複雑なケース。 各データ行は、actionnsを持つボタンまたはリンクを持つことができ、フロントエンドで作成されました。だから私たちも認可を適用する必要があります。

はい、私たちにはバックエンドの承認がありますが、許可されていないアクションボタンを非表示にしたいと考えています。

アイデア?

+2

これまで行っていることはありますか? – programtreasures

+0

Googleで「web application return users roles」のようなものを検索することができます。たとえば、ASP.NETではロールを使用します(https://msdn.microsoft.com/en-us/library/t32yf0a9.aspx)。これは、サーバーで作業が行われるため、ノックアウトの質問ではありません。一部のユーザーだけが見ることができるWebページを返すサーバーです。このWebページはjQuery、Knockout、...を持つことができます。 –

+0

これはロール権限ではありません。それはよりカスタマイズ可能です。同じユーザーグループ内の1人のユーザーがAction1を実行できますが、Action2は実行できません。 – RinatMegenbaev

答えて

1

ユーザーの役割をビューモデルにパラメータとして挿入し、htmlのifまたはvisibleバインディングで使用することができます。たとえば

var ViewModel = function(role) { 
    this.role = role; 
... }; 

ko.ApplyBindings(new ViewModel({inject user role into html here })); 

<button data-bind="if: role === 'createPartner'">Create</button> 
+0

このソリューションはこのオプションを隠すわけではありません。ブラウザーで、HTMLコードを表示すると、非表示のオプションが表示されます。解決策は、サーバーがユーザーに表示されるオプションのみを持つWebページを返すことです。 :-) –

+3

ホセ、もう一度。あなたが言うことは不可能です。多くのコントロールがフロントエンドで作成されます。たとえば、ajaxはクライアント側でデータを返し、発生をレンダリングします。すべての行には多くのコントロールがあります。いくつかのユーザーのためにそれらのいくつかを隠す必要があります – RinatMegenbaev

+0

20のオプションを持つメニューがあり、その中の4つしか見ることができない場合、ajaxリクエストはこの4つのオプションを返す必要があります。 20を返すと、ユーザーは隠れたものを見ることができます。これがあなたにとって正しいのであれば、私はあなたの質問を誤解しました、残念です。 :-) –

関連する問題