Skip to content

Commit baf0221

Browse files
Merge pull request #2137 from iamfaran/fix/2133-datasource-access
[Fix]: #2133 Data Source access control
2 parents 24c5250 + a18f621 commit baf0221

File tree

2 files changed

+55
-5
lines changed

2 files changed

+55
-5
lines changed

client/packages/lowcoder/src/components/PermissionDialog/DatasourcePermissionDialog.tsx

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,44 @@ import { getDataSourcePermissionInfo } from "../../redux/selectors/datasourceSel
1414
import { StyledLoading } from "./commonComponents";
1515
import { PermissionRole } from "./Permission";
1616
import { getUser } from "../../redux/selectors/usersSelectors";
17+
import styled from "styled-components";
18+
import { TacoButton } from "components/button";
19+
import { AddIcon } from "icons";
20+
import { GreyTextColor } from "constants/style";
21+
22+
const BottomWrapper = styled.div`
23+
margin: 12px 16px 0 16px;
24+
display: flex;
25+
justify-content: flex-start;
26+
`;
27+
28+
const AddPermissionButton = styled(TacoButton)`
29+
&,
30+
&:hover,
31+
&:focus {
32+
border: none;
33+
box-shadow: none;
34+
padding: 0;
35+
display: flex;
36+
align-items: center;
37+
font-size: 14px;
38+
line-height: 14px;
39+
background: #ffffff;
40+
transition: unset;
41+
}
42+
43+
svg {
44+
margin-right: 4px;
45+
}
46+
47+
&:hover {
48+
color: #315efb;
49+
50+
svg g path {
51+
fill: #315efb;
52+
}
53+
}
54+
`;
1755

1856
export const DatasourcePermissionDialog = (props: {
1957
datasourceId: string;
@@ -85,6 +123,19 @@ export const DatasourcePermissionDialog = (props: {
85123
}
86124
return list;
87125
}}
126+
viewFooterRender={(_primaryModelProps, stepProps) => (
127+
<BottomWrapper>
128+
<AddPermissionButton
129+
style={{ height: 28 }}
130+
icon={<AddIcon style={{ color: GreyTextColor }} />}
131+
onClick={() => {
132+
stepProps.next();
133+
}}
134+
>
135+
{trans("home.addMember")}
136+
</AddPermissionButton>
137+
</BottomWrapper>
138+
)}
88139
addPermission={(userIds, groupIds, role, onSuccess) => {
89140
dispatch(
90141
grantDatasourcePermission(

client/packages/lowcoder/src/redux/sagas/datasourcePermissionSagas.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,17 @@ import { validateResponse } from "api/apiUtils";
1010
import log from "loglevel";
1111
import { messageInstance } from "lowcoder-design/src/components/GlobalInstances";
1212

13-
import { LibraryQuery } from "../../api/queryLibraryApi";
1413
import {
1514
DeleteDatasourcePermissionPayload,
1615
FetchDatasourcePermissionsPayload,
1716
GrantDatasourcePermissionPayload,
1817
UpdateDatasourcePermissionPayload,
1918
} from "../reduxActions/datasourcePermissionActions";
20-
import { DatasourcePermissionApi } from "../../api/datasourcePermissionApi";
19+
import { DatasourcePermissionApi, DatasourcePermissionInfo } from "../../api/datasourcePermissionApi";
2120

2221
function* fetchPermissionsSaga(action: ReduxAction<FetchDatasourcePermissionsPayload>) {
2322
try {
24-
const response: AxiosResponse<GenericApiResponse<LibraryQuery[]>> =
23+
const response: AxiosResponse<GenericApiResponse<DatasourcePermissionInfo>> =
2524
yield DatasourcePermissionApi.fetchPermissions(action.payload.datasourceId);
2625
const isValidResponse: boolean = validateResponse(response);
2726
if (isValidResponse) {
@@ -61,13 +60,13 @@ function* grantPermissionSaga(
6160

6261
function* updatePermissionSaga(action: ReduxAction<UpdateDatasourcePermissionPayload>) {
6362
try {
64-
const response: AxiosResponse<GenericApiResponse<LibraryQuery>> =
63+
const response: AxiosResponse<GenericApiResponse<boolean>> =
6564
yield DatasourcePermissionApi.updatePermission(action.payload);
6665
const isValidResponse: boolean = validateResponse(response);
6766

6867
if (isValidResponse) {
6968
yield put({
70-
type: ReduxActionTypes.UPDATE_QUERY_LIBRARY_SUCCESS,
69+
type: ReduxActionTypes.UPDATE_DATASOURCE_PERMISSION_SUCCESS,
7170
payload: action.payload,
7271
});
7372
}

0 commit comments

Comments
 (0)