VC/Zoom: Add option to require registered participants

This commit is contained in:
Adrian Moennich 2020-12-02 16:56:29 +01:00
parent 65c9f54aca
commit 7bf2dfac8e
5 changed files with 35 additions and 7 deletions

View File

@ -18,6 +18,8 @@
- Allow using the same name for multiple Zoom rooms
- Update the join url when changing the passcode
- Provide an alternative method of looking up the Zoom user corresponding to an Indico user
- Always show the full join link and passcode to event managers
- The meeting passcode can be restricted to registered participants
**Breaking change:** The email domains are now stored as a list of strings instead of a comma-separated list. You need to update them in the plugin settings.

View File

@ -22,7 +22,6 @@ from indico.web.forms.validators import HiddenUnless, IndicoRegexp
from indico.web.forms.widgets import SwitchWidget
from indico_vc_zoom import _
from indico_vc_zoom.api.client import ZoomIndicoClient
from indico_vc_zoom.util import find_enterprise_email
@ -33,6 +32,7 @@ class VCRoomAttachForm(VCRoomAttachFormBase):
choices=[
('everyone', _('Everyone')),
('logged_in', _('Logged-in users')),
('registered', _('Registered participants')),
('no_one', _('No one'))])
@ -66,6 +66,7 @@ class VCRoomForm(VCRoomFormBase):
choices=[
('everyone', _('Everyone')),
('logged_in', _('Logged-in users')),
('registered', _('Registered participants')),
('no_one', _('No one'))])
mute_audio = BooleanField(_('Mute audio'),

View File

@ -14,9 +14,11 @@
{% endif %}
{% endmacro %}
{% macro render_join_button(vc_room, event_vc_room, extra_classes="", is_manager=false) %}
{% if event_vc_room.data.password_visibility == 'everyone' or is_manager or
(session.user and event_vc_room.data.password_visibility == 'logged_in') %}
{% macro render_join_button(vc_room, event_vc_room, extra_classes='') %}
{% if event_vc_room.data.password_visibility == 'everyone' or
event_vc_room.event.can_manage(session.user) or
(session.user and event_vc_room.data.password_visibility == 'logged_in') or
(session.user and event_vc_room.data.password_visibility == 'registered' and event_vc_room.event.is_user_registered(session.user)) %}
<a class="i-button icon-play highlight {{ extra_classes }}"
href="{{ vc_room.data.url }}" target="_blank">
{% trans %}Join{% endtrans %}
@ -27,6 +29,27 @@
href="{{ vc_room.data.public_url }}">
{% trans %}Join{% endtrans %}
</a>
{% elif event_vc_room.data.password_visibility == 'registered' %}
{% if session.user %}
{% if event_vc_room.event.type == 'conference' %}
<a class="i-button icon-ticket {{ extra_classes }}"
title="{% trans %}This Zoom Meeting can only be seen by registered participants{% endtrans %}"
href="{{ url_for('event_registration.display_regform_list', event) }}">
{% trans %}Please register{% endtrans %}
</a>
{% else %}
<a class="i-button icon-ticket disabled {{ extra_classes }}"
title="{% trans %}This Zoom Meeting can only be seen by registered participants{% endtrans %}">
{% trans %}Registration required{% endtrans %}
</a>
{% endif %}
{% else %}
<a class="i-button icon-ticket {{ extra_classes }}"
title="{% trans %}This Zoom Meeting can only be seen by registered participants{% endtrans %}"
href="{{ url_for_login(request.relative_url) }}">
{% trans %}Please log in and register{% endtrans %}
</a>
{% endif %}
{% else %}
<a class="i-button icon-lock-center {{ extra_classes }}"
title="{% trans %}This Zoom Meeting can only be seen by logged in users{% endtrans %}"

View File

@ -11,8 +11,10 @@
<dt>{% trans %}Host{% endtrans %}</dt>
<dd>{{ (host|decodeprincipal).full_name }}</dd>
{% endif %}
{% if event_vc_room.data.password_visibility == 'everyone' or is_manager or
(session.user and event_vc_room.data.password_visibility == 'logged_in') %}
{% if event_vc_room.data.password_visibility == 'everyone' or
event_vc_room.event.can_manage(session.user) or
(session.user and event_vc_room.data.password_visibility == 'logged_in') or
(session.user and event_vc_room.data.password_visibility == 'registered' and event_vc_room.event.is_user_registered(session.user)) %}
<dt>{% trans %}Passcode{% endtrans %}</dt>
<dd>{{ vc_room.data.password }}</dd>
{% endif %}

View File

@ -2,5 +2,5 @@
{% from 'vc_zoom:buttons.html' import render_join_button %}
{% block buttons %}
{{ render_join_button(vc_room, event_vc_room, extra_classes="icon-play", is_manager=true) }}
{{ render_join_button(vc_room, event_vc_room, extra_classes='icon-play') }}
{% endblock %}