2017-06-27 67 views
2

我已經在下面的資源是基於用戶登錄的類型訪問的要求如何在admin-on-rest中爲資源設置動態網址?

R1:/mit/oss/12345/peers

R2:/mit/md/6879/ngrp

R1應該使用ID的用戶可訪問: 12345.並且R2應該可以由id-6879的用戶訪問。

問題是 - 如何根據記錄用戶的動態值(如:URL中的userId)定義資源URL。我知道aor-permissions庫根據用戶權限切換菜單,但是可以使用URL中的id動態定義資源本身嗎?

回答

1

你可以在你的休息客戶端上編寫一個封裝器,它可以攔截這個調用並動態生成URL。

基本上裝點其餘客戶喜歡在這裏的文檔 - >https://marmelab.com/admin-on-rest/RestClients.html#decorating-your-rest-client-example-of-file-upload

然後,您可以在下面的僞代碼

if (type === 'AOR_REST_TYPE' && resource === 'BASE_RESOURCE') { 
    if (getUserFromLocalStorage === usr1) { 
     url = url1 
    } else { 
     url = url2 
    } 
    options.method = 'GET'; 
    // other options  
    } 
+0

完美的作品!謝謝。 –

0

這裏檢查的情況下,就像是重新映射資源URL的一個簡單的例子使用地圖。

import {simpleRestClient} from 'admin-on-rest'; 

// Update the remap table appropriately to map from a resource name to a different path 
const remap = { 
    "resource1" : "resource1Remapped", 
    "releasepresets" : "productionintents/releasepresets" 
} 

const simpleRestClientWithResourceUrlRemap = (apiUrl) => { 

    var client = simpleRestClient(apiUrl); 

    return (type, resource, params) => { 

     if (remap[resource]) { 
      console.log('remapping resource from ' + resource + ' to ' + remap[resource]); 
      resource = remap[resource]; 
     } 
     return client(type, resource, params); 
    } 

} 

export default (simpleRestClientWithResourceUrlRemap); 

可以使用具有邏輯的函數來代替簡單的重映射。