Skip to content

Commit 93f5c9a

Browse files
之瑛蚂蚁代码服务
authored andcommitted
PullRequest: 876 用户权限模块调整权限判断方式
Merge branch 'fix/user-auth of [email protected]:oceanbase/oceanbase-developer-center.git into dev-4.3.4 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/876 Reviewed-by: 晓康 <[email protected]> * feat: 权限判断更新 * feat: 团队空间 admin 判断 * feat: 自己无法编辑自己 * fix: delete 鉴权 * refactor: 删除多余代码
1 parent 3121b87 commit 93f5c9a

File tree

5 files changed

+23
-14
lines changed

5 files changed

+23
-14
lines changed

src/component/ODCSetting/index.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,7 @@ const ODCSetting: React.FC<IProps> = ({ modalStore }) => {
8888
const formBoxRef = React.createRef<HTMLDivElement>();
8989
const scrollSwitcher = useRef<Boolean>(true);
9090
const [spaceType, setSpaceType] = useState(ESpaceType.USER);
91-
const isAdmin = odc.appConfig.manage.user.isAdmin({
92-
roleIds: login.user?.roleIds,
93-
});
91+
const isAdmin = odc.appConfig.manage.user.isODCOrganizationConfig?.(login.user);
9492
const [searchValue, setSearchValue] = useState('');
9593

9694
const getData = useCallback(

src/d.ts/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ export enum IManagerResourceType {
183183
environment = 'ODC_ENVIRONMENT',
184184
individual_organization = 'ODC_INDIVIDUAL_ORGANIZATION',
185185
database = 'ODC_DATABASE',
186+
odc_organization_config = 'ODC_ORGANIZATION_CONFIG',
186187
}
187188

188189
export enum actionTypes {
@@ -234,6 +235,8 @@ export interface IManagerUser {
234235
resourceIdentifier: number;
235236
action: string;
236237
}[];
238+
systemOperationPermissions?: IPermission[];
239+
resourceManagementPermissions?: IPermission[];
237240
extraProperties?: Record<string, string>;
238241
errorMessage?: string;
239242
}

src/page/Auth/User/component/DetailContent/index.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,12 @@ const UserDetail: React.FC<{
176176
);
177177
};
178178

179+
const canDelete = () =>
180+
canAcess({
181+
resourceIdentifier: IManagerResourceType.user,
182+
action: actionTypes.delete,
183+
}).accessible;
184+
179185
return (
180186
<>
181187
<Descriptions column={1}>
@@ -283,7 +289,7 @@ const UserDetail: React.FC<{
283289
</Descriptions.Item>
284290
</Descriptions>
285291
<Divider />
286-
{odc.appConfig.manage.user.delete && (
292+
{odc.appConfig.manage.user.delete && canDelete() && (
287293
<Space size={5}>
288294
<span>
289295
{

src/page/Auth/User/index.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import { ResourceContext } from '../context';
4747
import DetailContent from './component/DetailContent';
4848
import FormModal from './component/FormModal';
4949
import styles from './index.less';
50+
import login from '@/store/login';
5051

5152
interface IProps {
5253
userStore?: UserStore;
@@ -180,7 +181,7 @@ class UserPage extends React.PureComponent<IProps, IState> {
180181
],
181182

182183
render: (enabled, record) => {
183-
const disabledOp = this.isAdminOrMe(record);
184+
const disabledOp = this.isMe(record);
184185
return (
185186
<StatusSwitch
186187
disabled={disabledOp}
@@ -202,7 +203,7 @@ class UserPage extends React.PureComponent<IProps, IState> {
202203
key: 'action',
203204
fixed: 'right' as FixedType,
204205
render: (value, record) => {
205-
const disabledOp = this.isAdminOrMe(record);
206+
const disabledOp = this.isMe(record);
206207
return (
207208
<Action.Group>
208209
<Action.Link
@@ -346,15 +347,11 @@ class UserPage extends React.PureComponent<IProps, IState> {
346347
this.tableRef.current.reload();
347348
};
348349

349-
private isAdminOrMe = (user: IManagerUser) => {
350+
private isMe = (user: IManagerUser) => {
350351
const {
351352
userStore: { user: me },
352353
} = this.props;
353-
const isAdmin = odc.appConfig.manage.user.isAdmin
354-
? odc.appConfig.manage.user.isAdmin(user)
355-
: user?.builtIn && user?.accountName === 'admin';
356-
const isMeUser = user?.id === me?.id;
357-
return isAdmin || isMeUser;
354+
return user?.id === me?.id;
358355
};
359356

360357
private handleCreate = () => {
@@ -403,7 +400,7 @@ class UserPage extends React.PureComponent<IProps, IState> {
403400
render() {
404401
const { formModalVisible, detailModalVisible, editId, detailId, users, roles, user } =
405402
this.state;
406-
const disabledOp = this.isAdminOrMe(user);
403+
const disabledOp = this.isMe(user);
407404
const canAcessCreate = canAcess({
408405
resourceIdentifier: IManagerResourceType.user,
409406
action: actionTypes.create,

src/plugins/defaultConfig.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { IRoles, type IManagerUser } from '@/d.ts';
17+
import { actionTypes, IManagerResourceType, IRoles, type IManagerUser } from '@/d.ts';
1818

1919
export default {
2020
login: {
@@ -42,6 +42,11 @@ export default {
4242
isAdmin: (user: Pick<IManagerUser, 'roleIds'>) => {
4343
return user?.roleIds?.includes(IRoles.SYSTEM_ADMIN);
4444
},
45+
isODCOrganizationConfig: (user: Pick<IManagerUser, 'systemOperationPermissions'>) => {
46+
return user?.systemOperationPermissions?.some(
47+
(item) => item?.resourceType === IManagerResourceType.odc_organization_config,
48+
);
49+
},
4550
tabInVisible: (setting) => {
4651
return false;
4752
},

0 commit comments

Comments
 (0)