Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: plugin access 添加 getRole 接口 #207

Merged
merged 1 commit into from
Aug 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions docs/reference/plugin/plugins/access.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,16 @@ import { access } from '@fesjs/fes';
access.setRole('admin');
```

#### access.getRole

- **类型**:函数
- **详情**:获取当前的角色。

```js
import { access } from '@fesjs/fes';
access.getRole();
```

#### access.setAccess

- **类型**:函数

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

根据您提供的代码补丁进行简要代码审查,以下是我的建议:

  1. access.setRole('admin'); 之前应该先检查是否已经存在角色。如果通过 access.getRole() 获取到的值不为 undefined,则不需要再调用 access.setRole('admin');
  2. 对于 access.getRole() 方法,可以添加一个返回类型的注释,以提高代码的可读性。

改进后的代码如下:

import { access } from '@fesjs/fes';

// 检查是否已经设置了角色
if (access.getRole() === undefined) {
    access.setRole('admin');
}

对于 access.getRole() 方法的文档说明已经足够清晰,无需做其他修改。

对于 access.setAccess 方法没有提供详细信息,无法给出进一步的建议。

请注意,我在回答中使用了简体中文。如果您有任何进一步的问题,请随时提问!

Expand Down
3 changes: 3 additions & 0 deletions packages/fes-plugin-access/src/runtime/core.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,9 @@ export const access = {
hasAccess,
isDataReady,
setRole,
getRole: () => {
return state.currentRoleId
},
setAccess,
match,
getAccess: getAllowAccessIds,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

对于给出的代码补丁,以下是我的简要代码审查:

存在的问题:

  1. 缺少state对象的定义:在代码中找不到state对象的定义。可能该代码片段只是部分补丁,而实际使用中应该有其他地方定义了state对象。
  2. 变量命名不一致:getRole函数返回值为state.currentRoleId,但在整个代码片段中没有看到与之相关的初始化或更新代码。这可能会导致返回的角色ID不正确或未定义。

改进建议:

  1. 确保state对象的定义:在该代码片段中,需要引入一个正确定义的state对象来获取currentRoleId
  2. 添加注释和文档:提供代码的注释可以增加可读性和可维护性,并且可以解释每个函数的用途和预期的输入输出。

请注意,由于我是一种自然语言处理模型,所以提供的建议和意见仅基于对代码片段的理解。最佳的代码审查和改进可能需要考虑更多上下文和详细信息。

Expand Down
3 changes: 2 additions & 1 deletion packages/fes-template/src/app.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@ import UserCenter from '@/components/userCenter.vue';
export const beforeRender = {
loading: <PageLoading />,
action() {
const { setRole } = accessApi;
const { setRole, getRole } = accessApi;
return new Promise((resolve) => {
setTimeout(() => {
setRole('admin');
resolve({
userName: '李雷',
});
console.log('currentRole', getRole());
createWatermark({ content: '万纯(harrywan)' });
}, 1000);
});

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

以下是您提供的代码片段,请允许我对其进行简要的代码审查。欢迎指出任何可能出现的错误风险和/或改进建议:

@@ -6,13 +6,14 @@ import UserCenter from '@/components/userCenter.vue';
export const beforeRender = {
loading: ,
action() {

  •    const { setRole } = accessApi;
    
  •    const { setRole, getRole } = accessApi;
      return new Promise((resolve) => {
          setTimeout(() => {
              setRole('admin');
              resolve({
                  userName: '李雷',
              });
    
  •            console.log('currentRole', getRole());
              createWatermark({ content: '万纯(harrywan)' });
          }, 1000);
      });
    

这段代码的主要目的是在渲染页面之前进行一些操作,包括设置用户角色、创建水印,并在延迟1秒后完成操作。

根据代码内容,以下是我的一些建议和注意事项:

  1. 代码片段中添加了 getRole 函数的解构赋值。可能是为了获取当前用户的角色信息。但是,在代码中并没有使用到此函数的返回值。如果不需要获取角色信息,可以考虑删除无用的代码。
  2. setTimeout 延时结束后,调用了 resolve 方法,并传递了一个对象给它。该对象包含一个 userName 属性,但是这个属性只是个硬编码的值。如果有必要,可以考虑将其改为动态获取真实的用户名。
  3. 在延迟结束后,代码添加了一个输出语句 console.log('currentRole', getRole());。如果确实需要输出角色信息到控制台进行调试,可以保留这行代码。否则,也可以考虑删除它,以避免不必要的输出。
  4. 代码中调用了 createWatermark 函数来创建水印。如果此功能在代码其他地方没有使用,并且没有提供 createWatermark 函数的实现,那么可能是缺失了相关代码或依赖。请确保在代码的其余部分正常处理这个函数。

总体来说,除了上述建议和注意事项之外,这段代码看起来没有明显的错误风险。您可以根据需求进行进一步的修改和优化。

Expand Down