diff --git a/app/components/forms/session-speaker-form.js b/app/components/forms/session-speaker-form.js index a6e15b98cf7..a126c9ad382 100644 --- a/app/components/forms/session-speaker-form.js +++ b/app/components/forms/session-speaker-form.js @@ -501,6 +501,15 @@ export default Component.extend(FormMixin, { return this.speakers.length === 1; }), + isUserOwnerOrAdmin: computed('event.owner.email', 'authManager.currentUser', function() { + return (this.authManager.currentUser.isAnAdmin || (this.event.owner.get('email') === this.authManager.currentUser.get('email'))); + }), + + isUserOrganiser: computed('event.organizers', 'authManager.currentUser', function() { + let { currentUser } = this.authManager; + return this.event.organizers.includes(currentUser); + }), + // Clicking on the add speaker button creates a blank record which increases the length of the session's list by 1. noSessionExists: computed('sessions', function() { return this.sessions.length === 1; diff --git a/app/routes/public.js b/app/routes/public.js index 291e2f836c1..ee490bf381e 100644 --- a/app/routes/public.js +++ b/app/routes/public.js @@ -8,7 +8,7 @@ export default Route.extend({ model(params) { return this.store.findRecord('event', params.event_id, { - include: 'social-links,event-copyright,speakers-call,tax' + include: 'social-links,event-copyright,speakers-call,tax,owner,organizers' }); } }); diff --git a/app/templates/components/forms/session-speaker-form.hbs b/app/templates/components/forms/session-speaker-form.hbs index b09d5cf11f7..c26082079fc 100644 --- a/app/templates/components/forms/session-speaker-form.hbs +++ b/app/templates/components/forms/session-speaker-form.hbs @@ -122,8 +122,10 @@ {{widgets/forms/rich-text-editor value=(mut (get data.speaker field.fieldIdentifier)) textareaId=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))}} {{else if (eq field.fieldIdentifier 'email')}} - {{ui-checkbox label=(t 'Do not require email for this speaker.') checked=data.speaker.isEmailOverridden - onChange=(action (mut data.speaker.isEmailOverridden))}} + {{#if (or isUserOwnerOrAdmin isUserOrganiser)}} + {{ui-checkbox label=(t 'Do not require email for this speaker.') checked=data.speaker.isEmailOverridden + onChange=(action (mut data.speaker.isEmailOverridden))}} + {{/if}} {{#if (not data.speaker.isEmailOverridden)}} {{input type=field.type value=(mut (get data.speaker field.fieldIdentifier)) id=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))}} @@ -193,8 +195,10 @@ {{widgets/forms/rich-text-editor value=(mut (get data.speaker field.fieldIdentifier)) textareaId=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))}} {{else if (eq field.fieldIdentifier 'email')}} - {{ui-checkbox label=(t 'Do not require email for this speaker.') checked=data.speaker.isEmailOverridden - onChange=(action (mut data.speaker.isEmailOverridden))}} + {{#if (or isUserOwnerOrAdmin isUserOrganiser)}} + {{ui-checkbox label=(t 'Do not require email for this speaker.') checked=data.speaker.isEmailOverridden + onChange=(action (mut data.speaker.isEmailOverridden))}} + {{/if}} {{#if (not data.speaker.isEmailOverridden)}} {{input type=field.type value=(mut (get data.speaker field.fieldIdentifier)) id=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))}} diff --git a/app/templates/public/cfs/edit-speaker.hbs b/app/templates/public/cfs/edit-speaker.hbs index d65cd0e8248..7ebd5fc443c 100644 --- a/app/templates/public/cfs/edit-speaker.hbs +++ b/app/templates/public/cfs/edit-speaker.hbs @@ -4,7 +4,7 @@ {{t 'Edit Speaker'}}