2017-06-27 27 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); 

可以使用具有逻辑的函数来代替简单的重映射。