|
@@ -5,12 +5,14 @@ import { LayoutMode } from '../../../core/components/LayoutSelector/LayoutSelect
|
|
|
import { updateLocation, updateNavIndex, UpdateNavIndexAction } from '../../../core/actions';
|
|
import { updateLocation, updateNavIndex, UpdateNavIndexAction } from '../../../core/actions';
|
|
|
import { UpdateLocationAction } from '../../../core/actions/location';
|
|
import { UpdateLocationAction } from '../../../core/actions/location';
|
|
|
import { buildNavModel } from './navModel';
|
|
import { buildNavModel } from './navModel';
|
|
|
|
|
+import { DataSourcePermission } from '../../../types/datasources';
|
|
|
|
|
|
|
|
export enum ActionTypes {
|
|
export enum ActionTypes {
|
|
|
LoadDataSources = 'LOAD_DATA_SOURCES',
|
|
LoadDataSources = 'LOAD_DATA_SOURCES',
|
|
|
LoadDataSourceTypes = 'LOAD_DATA_SOURCE_TYPES',
|
|
LoadDataSourceTypes = 'LOAD_DATA_SOURCE_TYPES',
|
|
|
LoadDataSource = 'LOAD_DATA_SOURCE',
|
|
LoadDataSource = 'LOAD_DATA_SOURCE',
|
|
|
LoadDataSourceMeta = 'LOAD_DATA_SOURCE_META',
|
|
LoadDataSourceMeta = 'LOAD_DATA_SOURCE_META',
|
|
|
|
|
+ LoadDataSourcePermissions = 'LOAD_DATA_SOURCE_PERMISSIONS',
|
|
|
SetDataSourcesSearchQuery = 'SET_DATA_SOURCES_SEARCH_QUERY',
|
|
SetDataSourcesSearchQuery = 'SET_DATA_SOURCES_SEARCH_QUERY',
|
|
|
SetDataSourcesLayoutMode = 'SET_DATA_SOURCES_LAYOUT_MODE',
|
|
SetDataSourcesLayoutMode = 'SET_DATA_SOURCES_LAYOUT_MODE',
|
|
|
SetDataSourceTypeSearchQuery = 'SET_DATA_SOURCE_TYPE_SEARCH_QUERY',
|
|
SetDataSourceTypeSearchQuery = 'SET_DATA_SOURCE_TYPE_SEARCH_QUERY',
|
|
@@ -51,6 +53,11 @@ export interface LoadDataSourceMetaAction {
|
|
|
payload: Plugin;
|
|
payload: Plugin;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+export interface LoadDataSourcePermissionsAction {
|
|
|
|
|
+ type: ActionTypes.LoadDataSourcePermissions;
|
|
|
|
|
+ payload: DataSourcePermission[];
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const dataSourcesLoaded = (dataSources: DataSource[]): LoadDataSourcesAction => ({
|
|
const dataSourcesLoaded = (dataSources: DataSource[]): LoadDataSourcesAction => ({
|
|
|
type: ActionTypes.LoadDataSources,
|
|
type: ActionTypes.LoadDataSources,
|
|
|
payload: dataSources,
|
|
payload: dataSources,
|
|
@@ -71,6 +78,13 @@ const dataSourceTypesLoaded = (dataSourceTypes: Plugin[]): LoadDataSourceTypesAc
|
|
|
payload: dataSourceTypes,
|
|
payload: dataSourceTypes,
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+const dataSourcePermissionsLoaded = (
|
|
|
|
|
+ dataSourcePermissions: DataSourcePermission[]
|
|
|
|
|
+): LoadDataSourcePermissionsAction => ({
|
|
|
|
|
+ type: ActionTypes.LoadDataSourcePermissions,
|
|
|
|
|
+ payload: dataSourcePermissions,
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
export const setDataSourcesSearchQuery = (searchQuery: string): SetDataSourcesSearchQueryAction => ({
|
|
export const setDataSourcesSearchQuery = (searchQuery: string): SetDataSourcesSearchQueryAction => ({
|
|
|
type: ActionTypes.SetDataSourcesSearchQuery,
|
|
type: ActionTypes.SetDataSourcesSearchQuery,
|
|
|
payload: searchQuery,
|
|
payload: searchQuery,
|
|
@@ -95,7 +109,8 @@ export type Action =
|
|
|
| SetDataSourceTypeSearchQueryAction
|
|
| SetDataSourceTypeSearchQueryAction
|
|
|
| LoadDataSourceAction
|
|
| LoadDataSourceAction
|
|
|
| UpdateNavIndexAction
|
|
| UpdateNavIndexAction
|
|
|
- | LoadDataSourceMetaAction;
|
|
|
|
|
|
|
+ | LoadDataSourceMetaAction
|
|
|
|
|
+ | LoadDataSourcePermissionsAction;
|
|
|
|
|
|
|
|
type ThunkResult<R> = ThunkAction<R, StoreState, undefined, Action>;
|
|
type ThunkResult<R> = ThunkAction<R, StoreState, undefined, Action>;
|
|
|
|
|
|
|
@@ -145,6 +160,28 @@ export function loadDataSourceTypes(): ThunkResult<void> {
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+export function loadDataSourcePermissions(id: number): ThunkResult<void> {
|
|
|
|
|
+ return async dispatch => {
|
|
|
|
|
+ const response = await getBackendSrv().get(`/api/datasources/${id}/permissions`);
|
|
|
|
|
+ dispatch(dataSourcePermissionsLoaded(response.permissions));
|
|
|
|
|
+ };
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+export function addDataSourcePermission(id: number, data: object): ThunkResult<void> {
|
|
|
|
|
+ return async dispatch => {
|
|
|
|
|
+ await getBackendSrv().post(`/api/datasources/${id}/permissions`, data);
|
|
|
|
|
+
|
|
|
|
|
+ dispatch(loadDataSourcePermissions(id));
|
|
|
|
|
+ };
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+export function removeDataSourcePermission(id: number, permissionId: number): ThunkResult<void> {
|
|
|
|
|
+ return async dispatch => {
|
|
|
|
|
+ await getBackendSrv().delete(`/api/datasources/${id}/permissions/${permissionId}`);
|
|
|
|
|
+ dispatch(loadDataSourcePermissions(id));
|
|
|
|
|
+ };
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
export function nameExits(dataSources, name) {
|
|
export function nameExits(dataSources, name) {
|
|
|
return (
|
|
return (
|
|
|
dataSources.filter(dataSource => {
|
|
dataSources.filter(dataSource => {
|