def complete_zoom_user_in_realm( request: HttpRequest, code: str = REQ(), state: Dict[str, str] = REQ( json_validator=check_dict([("sid", check_string)], value_validator=check_string) ), ) -> HttpResponse: assert request.user.is_authenticated if not constant_time_compare(state["sid"], get_zoom_sid(request)): raise JsonableError(_("Invalid Zoom session identifier")) client_secret = settings.VIDEO_ZOOM_CLIENT_SECRET oauth = get_zoom_session(request.user) try: token = oauth.fetch_token( "https://zoom.us/oauth/token", code=code, client_secret=client_secret, ) except OAuth2Error: raise JsonableError(_("Invalid Zoom credentials")) do_set_zoom_token(request.user, token) return render(request, "zerver/close_window.html")
def clear_zoom_token_on_logout(sender: object, *, user: Optional[UserProfile], **kwargs: object) -> None: # Loaded lazily so django.setup() succeeds before static asset generation from zerver.lib.actions import do_set_zoom_token if user is not None and user.zoom_token is not None: do_set_zoom_token(user, None)
def make_zoom_video_call(request: HttpRequest, user: UserProfile) -> HttpResponse: oauth = get_zoom_session(user) if not oauth.authorized: raise InvalidZoomTokenError try: res = oauth.post("https://api.zoom.us/v2/users/me/meetings", json={}) except OAuth2Error: do_set_zoom_token(user, None) raise InvalidZoomTokenError if res.status_code == 401: do_set_zoom_token(user, None) raise InvalidZoomTokenError elif not res.ok: raise JsonableError(_("Failed to create Zoom call")) return json_success({"url": res.json()["join_url"]})
def clear_zoom_token_on_logout(sender: object, *, user: Optional[UserProfile], **kwargs: object) -> None: if user is not None and user.zoom_token is not None: do_set_zoom_token(user, None)