Merge pull request #1314 from matrix-org/rxl881/securityWarning

Don't show widget security warning to the person that added it to the room
This commit is contained in:
Matthew Hodgson 2017-08-18 12:08:23 +01:00 committed by GitHub
commit 0c99abc89b
2 changed files with 10 additions and 3 deletions

View file

@ -44,6 +44,10 @@ export default React.createClass({
// Specifying 'fullWidth' as true will render the app tile to fill the width of the app drawer continer. // Specifying 'fullWidth' as true will render the app tile to fill the width of the app drawer continer.
// This should be set to true when there is only one widget in the app drawer, otherwise it should be false. // This should be set to true when there is only one widget in the app drawer, otherwise it should be false.
fullWidth: React.PropTypes.bool, fullWidth: React.PropTypes.bool,
// UserId of the current user
userId: React.PropTypes.string.isRequired,
// UserId of the entity that added / modified the widget
creatorUserId: React.PropTypes.string,
}, },
getDefaultProps: function() { getDefaultProps: function() {
@ -59,7 +63,8 @@ export default React.createClass({
loading: false, loading: false,
widgetUrl: this.props.url, widgetUrl: this.props.url,
widgetPermissionId: widgetPermissionId, widgetPermissionId: widgetPermissionId,
hasPermissionToLoad: Boolean(hasPermissionToLoad === 'true'), // Assume that widget has permission to load if we are the user who added it to the room, or if explicitly granted by the user
hasPermissionToLoad: hasPermissionToLoad === 'true' || this.props.userId === this.props.creatorUserId,
error: null, error: null,
deleting: false, deleting: false,
}; };

View file

@ -93,7 +93,7 @@ module.exports = React.createClass({
return pathTemplate; return pathTemplate;
}, },
_initAppConfig: function(appId, app) { _initAppConfig: function(appId, app, sender) {
const user = MatrixClientPeg.get().getUser(this.props.userId); const user = MatrixClientPeg.get().getUser(this.props.userId);
const params = { const params = {
'$matrix_user_id': this.props.userId, '$matrix_user_id': this.props.userId,
@ -111,6 +111,7 @@ module.exports = React.createClass({
app.id = appId; app.id = appId;
app.name = app.name || app.type; app.name = app.name || app.type;
app.url = this.encodeUri(app.url, params); app.url = this.encodeUri(app.url, params);
app.creatorUserId = (sender && sender.userId) ? sender.userId : null;
return app; return app;
}, },
@ -131,7 +132,7 @@ module.exports = React.createClass({
return appsStateEvents.filter((ev) => { return appsStateEvents.filter((ev) => {
return ev.getContent().type && ev.getContent().url; return ev.getContent().type && ev.getContent().url;
}).map((ev) => { }).map((ev) => {
return this._initAppConfig(ev.getStateKey(), ev.getContent()); return this._initAppConfig(ev.getStateKey(), ev.getContent(), ev.sender);
}); });
}, },
@ -183,6 +184,7 @@ module.exports = React.createClass({
fullWidth={arr.length<2 ? true : false} fullWidth={arr.length<2 ? true : false}
room={this.props.room} room={this.props.room}
userId={this.props.userId} userId={this.props.userId}
creatorUserId={app.creatorUserId}
/>); />);
}); });