SAP CAP 项目 cds watch 生成的 index.html 的模板位置和权限控制

举报
汪子熙 发表于 2022/10/31 23:26:47 2022/10/31
【摘要】 使用 cds init 初始化一个 CAP 应用,然后 npm install, cds watch 启动服务器。创建一个 schema 文件,内容如下:namespace sap.ui.riskmanagement;using { managed } from '@sap/cds/common'; entity Risks : managed { key ID : UUI...

使用 cds init 初始化一个 CAP 应用,然后 npm install, cds watch 启动服务器。

创建一个 schema 文件,内容如下:

namespace sap.ui.riskmanagement;
using { managed } from '@sap/cds/common';
  entity Risks : managed {
    key ID      : UUID  @(Core.Computed : true);
    title       : String(100);
  }
  entity Mitigations : managed {
    key ID       : UUID  @(Core.Computed : true);
    risks        : Association to many Risks on risks.miti = $self;
  }

注意,schema 文件可以定义 namespace.

这两个模型的 key 由 CAP 服务器自动填充,该服务器使用注释 @(Core.Computed : true) 向服务用户公开。

只有 entity 还无法被 end user 消费,需要通过 service 暴露给外部。

srv 文件夹里新建一个文件 risk-service.cds,注意这个文件和 entity schema 文件在不同的文件夹(前者在 db):

using { sap.ui.riskmanagement as my } from '../db/schema';
@path: 'service/risk'
service RiskService {
  entity Risks as projection on my.Risks;
    annotate Risks with @odata.draft.enabled;
  entity Mitigations as projection on my.Mitigations;
    annotate Mitigations with @odata.draft.enabled;
}

使用 cds watch 看到的自动生成的页面:

这个 index.html 的模板文件位置:

node_modules@sap\cds-dk\node_modules@sap\cds\app\index.html

在应用程序安全文件 (xs-security.json) 中,role templates 属性使您能够定义一个数组,其中列出了访问特定应用程序模块所需的一个或多个 roles(具有相应的范围和任何必需的属性)。可以定义多个角色模板,每个模板都有自己的范围和属性。

一个例子:

"role-templates": [ 
     { 
      "name"                : "Editor", 
      "description"         : "View, edit, delete books", 
      "scope-references"    : [ 
                              "$XSAPPNAME.Edit", "$XSAPPNAME.Delete"  
                              ], 
      "attribute-references": [ 
                              "Country", "CostCenter" 
                              ]  
     },
]

必须实例化角色模板。 对于角色模板中定义的任何属性和具体的属性值尤其如此,这些属性需要定制,因此无法自动提供。 只包含“本地”范围的角色模板可以在没有用户交互的情况下被实例化。 对于 foreign scope 也是如此,其中范围所有者已在某种白名单中声明同意(例如,供“公共”使用或已知“朋友”使用)。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。