forked from OpenStackweb/summit-admin
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathaudit-log-actions.js
More file actions
121 lines (103 loc) · 3.2 KB
/
audit-log-actions.js
File metadata and controls
121 lines (103 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/**
* Copyright 2022 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* */
import {
getRequest,
createAction,
stopLoading,
startLoading,
authErrorHandler,
escapeFilterValue
} from "openstack-uicore-foundation/lib/utils/actions";
import {
getAccessTokenSafely,
isNumericString,
parseDateRangeFilter
} from "../utils/methods";
import { DEFAULT_CURRENT_PAGE, DEFAULT_ORDER_DIR } from "../utils/constants";
export const CLEAR_LOG_PARAMS = "CLEAR_LOG_PARAMS";
export const REQUEST_LOG = "REQUEST_LOG";
export const RECEIVE_LOG = "RECEIVE_LOG";
const DEFAULT_PER_PAGE_AUDIT_LOG = 100;
const parseFilters = (filters, term = null) => {
const filter = [];
if (filters.created_date_filter) {
parseDateRangeFilter(filter, filters.created_date_filter, "created");
}
if (
filters.hasOwnProperty("user_id_filter") &&
Array.isArray(filters.user_id_filter) &&
filters.user_id_filter.length > 0
) {
filter.push(
`user_id==${filters.user_id_filter.map((t) => t.id).join("||")}`
);
}
if (term) {
const escapedTerm = escapeFilterValue(term);
let searchString = "";
if (isNumericString(term)) {
searchString += `entity_id==${term}`;
} else {
searchString += `action=@${escapedTerm}`;
}
filter.push(searchString);
}
return filter;
};
export const getAuditLog =
(
entityFilter = [],
term = null,
page = DEFAULT_CURRENT_PAGE,
perPage = DEFAULT_PER_PAGE_AUDIT_LOG,
order = null,
orderDir = DEFAULT_ORDER_DIR,
filters = {}
) =>
async (dispatch, getState) => {
const { currentSummitState } = getState();
const accessToken = await getAccessTokenSafely();
const { currentSummit } = currentSummitState;
const summitTZ = currentSummit.time_zone_id;
const summitFilter = [`summit_id==${currentSummit.id}`];
dispatch(startLoading());
const params = {
page,
per_page: perPage,
expand: "user",
access_token: accessToken
};
const parsedFilters = [
...summitFilter,
...entityFilter,
...parseFilters(filters, term)
];
params["filter[]"] = parsedFilters;
// order
if (order != null && orderDir != null) {
const orderDirSign = orderDir === DEFAULT_ORDER_DIR ? "+" : "-";
params.order = `${orderDirSign}${order}`;
}
return getRequest(
createAction(REQUEST_LOG),
createAction(RECEIVE_LOG),
`${window.API_BASE_URL}/api/v1/audit-logs`,
authErrorHandler,
{ page, perPage, order, orderDir, term, summitTZ, filters }
)(params)(dispatch).then(() => {
dispatch(stopLoading());
});
};
export const clearAuditLogParams = () => async (dispatch) => {
dispatch(createAction(CLEAR_LOG_PARAMS)());
};