2017-08-25 12 views
1

私は、ユーザーが選択した国のみを検索するように制限できる管理セクションがあります。ですから、もし私が米国とフランスだけを検索できるようにユーザーを選ぶと、これらの国のIDは文字列としてテーブルに格納されます。したがって、1,2となります。URLのパラメータを変更するようにユーザーを制限する方法

しかし、ユーザーが、私は、この値を取得し、変数に格納、検索を開始するとIDが1

あるので、そのユーザーは米国のみで検索することができると言うことができます:

$searchableCountry = explode(",", Input::get('searchableCountry')); 

そして、これがあります検索条件: http://myapp.com/search?q=Adidas&searchableCountry=1

0:

if ($searchableCountry != null) { 
      $results = $cl->Filter('country', $searchableCountry); 
     } 

は、そして、私はこのようなURLの何かを得ます

しかし、ユーザーはURLを編集してsearchableCountryの値を変更し、他の国を検索することもできます。どうすればこれを避けることができますか?セッションでこれを行うことができますか?はいの場合は、私に例を教えてください。私は、このパッケージに私はメソッドをGET 使用する必要がhttps://github.com/sngrl/sphinxsearch

PSを使用した検索用ところで

答えて

0

ユーザーが何かしかできないように制限する場合は、自分が望むものを選択させるべきではなく、代わりにルールを修正する必要があります。

$results = $cl->Filter('country', $config['country']['us']); 

あなたは彼らがしているどのレベルによって、より多くの国で検索する権限を付与したい場合は、あなたがそのようなユーザレベルとして設定するいくつかのより多くの権限を追加しなければならないので、彼らはhttp://myapp.com/search?q=Adidas&searchableCountry=3にアクセスする場合、彼らは持っているので、あなたがエラーを返すことができます許可はありません。

私のアイデアの一例として、まだテストされていませんが、うまくいくはずです。

<?php 

//your user data 
$user = json_decode('{ 
    "user_id" : NumberLong(1004109307), 
    "fullname" : "Johnny", 
    "email" : "[email protected]", 
    "phone" : "123456789", 
    "role" : "basic", //wich user can search US,FRANCE for country id is [1,2] 
    "create_time" : NumberLong(1503537866) 
}', true); //retun an array 

//Your country id config somewhere 
$country_list = array(
    'US' => 1, 
    'FR' => 2, 
    'JP' => 3, 
    'CN' => 4, 
); 
//Your config somewhere 
$searchable_country_config = array(
    'basic' => array(
     $country_list['US'], //1 
     $country_list['FR'], //2 
    ), 
    'premium' => array(
     $country_list['JP'], 
     $country_list['CN'], 
    ), 
); 

$searchable_request = (Input::get('searchableCountry')) ? Input::get('searchableCountry') : 1; // 2 for example 
$searchable_permission = $searchable_country_config[$user['role']]; 

//lets check that does this user have permission on their request 
if(in_array($searchable_request,$searchable_permission)) 
{ 
    $results = $cl->Filter('country', $searchable_request); 
} else { 
    return response()->json(array(
     'status' => 'error', 
     'message' => 'You have not access for this country' 
    )); 
} 
+0

私はユーザーの役割(基本、プレミアム、管理者など)を持っています。しかし、私はどのようにURLの制限とこれを接続することができますか分からないのですか? – harunB10

+0

@ harunB10私の更新をチェックしてください – vietnguyen09

関連する問題