Skip to content

Commit 7e3a418

Browse files
committed
fix(ExternalProperties): only project admins should be able to modify sensitive AgencyId prop
1 parent 7583204 commit 7e3a418

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

lib/manager/components/ExternalPropertiesTable.js

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,23 @@ import EditableTextField from '../../common/components/EditableTextField'
55

66
export default class ExternalPropertiesTable extends Component {
77
static propTypes = {
8+
editingIsDisabled: PropTypes.bool,
9+
externalPropertyChanged: PropTypes.func,
10+
isProjectAdmin: PropTypes.bool,
11+
resourceProps: PropTypes.array,
812
resourceType: PropTypes.string
913
}
1014
render () {
15+
const {
16+
editingIsDisabled,
17+
externalPropertyChanged,
18+
isProjectAdmin,
19+
resourceProps,
20+
resourceType
21+
} = this.props
1122
return (
1223
<Panel
13-
header={<h3>{this.props.resourceType} properties</h3>}
24+
header={<h3>{resourceType} properties</h3>}
1425
>
1526
<Table striped fill>
1627
<thead>
@@ -20,16 +31,19 @@ export default class ExternalPropertiesTable extends Component {
2031
</tr>
2132
</thead>
2233
<tbody>
23-
{Object.keys(this.props.resourceProps).sort().map(propName => {
34+
{Object.keys(resourceProps).sort().map(propName => {
35+
const disabled = resourceType === 'MTC' && propName === 'AgencyId'
36+
? !isProjectAdmin
37+
: editingIsDisabled
2438
return (
2539
<tr>
2640
<td>{propName}</td>
2741
<td>
2842
<EditableTextField
2943
key={propName}
30-
disabled={this.props.editingIsDisabled}
31-
value={this.props.resourceProps[propName]}
32-
onChange={(value) => this.props.externalPropertyChanged(propName, value)}
44+
disabled={disabled}
45+
value={resourceProps[propName]}
46+
onChange={(value) => externalPropertyChanged(propName, value)}
3347
/>
3448
</td>
3549
</tr>

lib/manager/components/FeedSourceViewer.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export default class FeedSourceViewer extends Component {
6565
}
6666
}
6767
confirmDeleteFeedSource (feedSource) {
68-
this.refs['page'].showConfirmModal({
68+
this.refs.page.showConfirmModal({
6969
title: 'Delete Feed Source?',
7070
body: 'Are you sure you want to delete this feed source? This action cannot be undone and all feed versions will be deleted.',
7171
onConfirm: () => {
@@ -126,6 +126,7 @@ export default class FeedSourceViewer extends Component {
126126
} = this.props
127127
const messages = getComponentMessages('FeedSourceViewer')
128128
const disabled = !user.permissions.hasFeedPermission(project.organizationId, project.id, fs.id, 'manage-feed')
129+
const isProjectAdmin = user.permissions.isProjectAdmin(project.id, project.organizationId)
129130
// const editGtfsDisabled = !user.permissions.hasFeedPermission(project.organizationId, project.id, fs.id, 'edit-gtfs')
130131
const autoFetchFeed = fs.retrievalMethod === 'FETCHED_AUTOMATICALLY'
131132
const resourceType = activeComponent === 'settings' && activeSubComponent && activeSubComponent.toUpperCase()
@@ -218,6 +219,7 @@ export default class FeedSourceViewer extends Component {
218219
<ExternalPropertiesTable
219220
resourceType={resourceType}
220221
editingIsDisabled={disabled}
222+
isProjectAdmin={isProjectAdmin}
221223
resourceProps={fs.externalProperties[resourceType]}
222224
externalPropertyChanged={(name, value) => {
223225
externalPropertyChanged(fs, resourceType, name, value)

0 commit comments

Comments
 (0)