mirror of
https://github.com/certd/certd.git
synced 2026-04-03 14:10:54 +08:00
fix: cname provider授权修改为sys级别
This commit is contained in:
@@ -18,6 +18,7 @@ export type PluginRequestHandleReq<T = any> = {
|
||||
input: T;
|
||||
data: any;
|
||||
record: { id: number; type: string; title: string };
|
||||
fromType?: "sys" | "user"; // sys、user
|
||||
};
|
||||
|
||||
export type UserInfo = {
|
||||
|
||||
@@ -19,6 +19,7 @@ defineOptions({
|
||||
name: "ApiTest",
|
||||
});
|
||||
|
||||
const fromType: any = inject("getFromType");
|
||||
const getScope: any = inject("get:scope");
|
||||
const getPluginType: any = inject("get:plugin:type", () => {
|
||||
return "access";
|
||||
@@ -55,6 +56,7 @@ const doTest = async () => {
|
||||
action: props.action,
|
||||
input,
|
||||
record,
|
||||
fromType,
|
||||
},
|
||||
{
|
||||
onError(err: any) {
|
||||
|
||||
@@ -13,11 +13,12 @@ export type RequestHandleReq<T = any> = {
|
||||
data?: any;
|
||||
input: T;
|
||||
record?: any;
|
||||
fromType?: string; // sys、user
|
||||
};
|
||||
|
||||
export async function doRequest(req: RequestHandleReq, opts: any = {}) {
|
||||
const url = `/pi/handle/${req.type}`;
|
||||
const { typeName, action, data, input, record } = req;
|
||||
const { typeName, action, data, input, record, fromType } = req;
|
||||
const res = await request({
|
||||
url,
|
||||
method: "post",
|
||||
@@ -27,6 +28,7 @@ export async function doRequest(req: RequestHandleReq, opts: any = {}) {
|
||||
data,
|
||||
input,
|
||||
record,
|
||||
fromType,
|
||||
},
|
||||
...opts,
|
||||
});
|
||||
|
||||
@@ -3,6 +3,7 @@ import { request } from "/src/api/service";
|
||||
export function createAccessApi(from = "user") {
|
||||
const apiPrefix = from === "sys" ? "/sys/access" : "/pi/access";
|
||||
return {
|
||||
from,
|
||||
async GetList(query: any) {
|
||||
if (query?.query) {
|
||||
delete query.query.access;
|
||||
|
||||
@@ -6,6 +6,7 @@ import SecretPlainGetter from "/@/views/certd/access/access-selector/access/secr
|
||||
import { utils } from "/@/utils";
|
||||
|
||||
export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any) {
|
||||
provide("getFromType", api.from);
|
||||
provide("accessApi", api);
|
||||
provide("get:plugin:type", () => {
|
||||
return "access";
|
||||
|
||||
@@ -122,7 +122,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
||||
title: t("certd.dnsProviderAuthorization"),
|
||||
type: "dict-select",
|
||||
dict: dict({
|
||||
url: "/pi/access/list",
|
||||
url: "/sys/access/list",
|
||||
value: "id",
|
||||
label: "name",
|
||||
}),
|
||||
@@ -133,6 +133,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
||||
type: compute(({ form }) => {
|
||||
return form.dnsProviderType;
|
||||
}),
|
||||
from: "sys",
|
||||
},
|
||||
rules: [{ required: true, message: t("certd.requiredField") }],
|
||||
},
|
||||
|
||||
@@ -17,6 +17,7 @@ import {NotificationService} from '../../../modules/pipeline/service/notificatio
|
||||
import {TaskServiceBuilder} from "../../../modules/pipeline/service/getter/task-service-getter.js";
|
||||
import { cloneDeep } from 'lodash-es';
|
||||
import { ApiTags } from '@midwayjs/swagger';
|
||||
import { AuthService } from '../../../modules/sys/authority/service/auth-service.js';
|
||||
|
||||
@Provide()
|
||||
@Controller('/api/pi/handle')
|
||||
@@ -28,6 +29,9 @@ export class HandleController extends BaseController {
|
||||
@Inject()
|
||||
emailService: EmailService;
|
||||
|
||||
@Inject()
|
||||
authService: AuthService;
|
||||
|
||||
@Inject()
|
||||
taskServiceBuilder: TaskServiceBuilder;
|
||||
|
||||
@@ -36,16 +40,26 @@ export class HandleController extends BaseController {
|
||||
|
||||
@Post('/access', { description: Constants.per.authOnly, summary: "处理授权请求" })
|
||||
async accessRequest(@Body(ALL) body: AccessRequestHandleReq) {
|
||||
const {projectId,userId} = await this.getProjectUserIdRead()
|
||||
let {projectId,userId} = await this.getProjectUserIdRead()
|
||||
if (body.fromType === 'sys') {
|
||||
//系统级别的请求
|
||||
const pass = await this.authService.checkPermission(this.ctx, "sys:settings:view");
|
||||
if (!pass) {
|
||||
throw new Error('权限不足');
|
||||
}
|
||||
projectId = null
|
||||
userId = 0
|
||||
}
|
||||
|
||||
let inputAccess = body.input;
|
||||
if (body.record.id > 0) {
|
||||
const oldEntity = await this.accessService.info(body.record.id);
|
||||
if (oldEntity) {
|
||||
if (oldEntity.userId !== userId) {
|
||||
throw new Error('access not found');
|
||||
if (oldEntity.userId !== userId && oldEntity.userId !== this.getUserId()) {
|
||||
throw new Error('您没有权限使用该授权');
|
||||
}
|
||||
if (oldEntity.projectId && oldEntity.projectId !== projectId) {
|
||||
throw new Error('access not found');
|
||||
throw new Error('您没有权限使用该授权(projectId不匹配)');
|
||||
}
|
||||
const param: any = {
|
||||
type: body.typeName,
|
||||
|
||||
Reference in New Issue
Block a user