From bfbdfc645e0b76f61e4a1315bbdc62f13d4364c4 Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Fri, 3 Feb 2017 18:23:32 -0500 Subject: [PATCH 1/3] update routes file --- app/controllers/landing_controller.rb | 4 ++- config/routes.rb | 36 ++++++++++++--------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/app/controllers/landing_controller.rb b/app/controllers/landing_controller.rb index d6e63224..b8da6142 100644 --- a/app/controllers/landing_controller.rb +++ b/app/controllers/landing_controller.rb @@ -72,7 +72,9 @@ class LandingController < ApplicationController return end - @meeting_id = params[:id] + if @user.encrypted_id != params[:id] + @meeting_id = params[:id] + end @meeting_running = bbb_get_meeting_info("#{@user.encrypted_id}-#{@meeting_id}")[:returncode] @main_room = @meeting_id.blank? || @meeting_id == @user.encrypted_id diff --git a/config/routes.rb b/config/routes.rb index 5817bb61..c2d446c1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -28,29 +28,25 @@ Rails.application.routes.draw do # There are two resources [meetings|rooms] # meetings offer a landing page for NON authenticated users to create and join session in BigBlueButton # rooms offer a customized landing page for authenticated users to create and join session in BigBlueButton + scope '/:resource' do + scope '/:room_id' do + # recording routes for updating, deleting and viewing recordings + get '/(:id)/recordings', to: 'bbb#recordings', defaults: {id: nil, format: 'json'} + patch '/(:id)/recordings/:record_id', to: 'bbb#update_recordings', defaults: {id: nil, format: 'json'} + delete '/(:id)/recordings/:record_id', to: 'bbb#delete_recordings', defaults: {id: nil, format: 'json'} - # recording routes for updating, deleting and viewing recordings - get '/rooms/:room_id/recordings', to: 'bbb#recordings', defaults: {format: 'json'} - patch '/rooms/:room_id/recordings/:record_id', to: 'bbb#update_recordings', defaults: {format: 'json'} - delete '/rooms/:room_id/recordings/:record_id', to: 'bbb#delete_recordings', defaults: {format: 'json'} - get '/rooms/:room_id/:id/recordings', to: 'bbb#recordings', defaults: {format: 'json'} - patch '/rooms/:room_id/:id/recordings/:record_id', to: 'bbb#update_recordings', defaults: {format: 'json'} - delete '/rooms/:room_id/:id/recordings/:record_id', to: 'bbb#delete_recordings', defaults: {format: 'json'} + # room specific routes + delete '/:id/end', to: 'bbb#end', defaults: {format: 'json'} + get '/:id/wait', to: 'landing#wait_for_moderator' + get '/:id/session_status_refresh', to: 'landing#session_status_refresh' + end - # room routes for joining, ending, waiting and refreshing authenticated meetings - get '/rooms/:room_id', to: 'landing#resource', resource: 'rooms' - get '/rooms/:room_id/:id', to: 'landing#resource', resource: 'rooms' - get '/rooms/:room_id/:id/join', to: 'bbb#join', resource: 'rooms', defaults: {format: 'json'} - delete '/rooms/:room_id/:id/end', to: 'bbb#end', defaults: {format: 'json'} - - # routes shared between meetings and rooms - get '/:resource/:id', to: 'landing#resource', as: :resource - get '/:resource/:id/join', to: 'bbb#join', as: :bbb_join, defaults: {format: 'json'} - post '/:resource/:id/callback', to: 'bbb#callback' #, defaults: {format: 'json'} - - get '/:resource/:room_id/:id/wait', to: 'landing#wait_for_moderator' - get '/:resource/:room_id/:id/session_status_refresh', to: 'landing#session_status_refresh' + # routes shared between meetings and rooms + get '/(:room_id)/:id', to: 'landing#resource', defaults: {room_id: nil} + get '/(:room_id)/:id/join', to: 'bbb#join', defaults: {room_id: nil, format: 'json'} + post '/:id/callback', to: 'bbb#callback' #, defaults: {format: 'json'} + end root to: 'landing#index', :resource => 'meetings' end From b09ec1fc691df7e199f7924a136625e70bf54b4b Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Tue, 7 Feb 2017 14:14:39 -0500 Subject: [PATCH 2/3] properly generate some urls --- app/assets/javascripts/meeting.coffee | 7 +++---- app/assets/javascripts/recordings.coffee | 2 +- app/helpers/application_helper.rb | 4 ++++ app/views/landing/_rooms_center_panel.html.erb | 2 +- app/views/layouts/application.html.erb | 2 +- app/views/sessions/new.erb | 4 ++-- app/views/shared/_signup.html.erb | 2 +- config/routes.rb | 10 +++++----- docker-compose.yml | 2 ++ 9 files changed, 20 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/meeting.coffee b/app/assets/javascripts/meeting.coffee index 4e678031..6f93c046 100644 --- a/app/assets/javascripts/meeting.coffee +++ b/app/assets/javascripts/meeting.coffee @@ -26,8 +26,7 @@ class @Meeting if _meetingInstance return _meetingInstance meetingId = $(".page-wrapper").data('id') - if (type = location.pathname.split('/')[1]) != 'rooms' - type = 'meetings' + type = $("body").data('resource') name = $('.meeting-user-name').val() adminId = $(".page-wrapper").data('admin-id') _meetingInstance = new Meeting(meetingId, type, name, adminId) @@ -42,9 +41,9 @@ class @Meeting fullId = encodeURIComponent(adminId) + '/' + encodeURIComponent(meetingId) else fullId = encodeURIComponent(meetingId) - return @buildFullDomainURL() + '/' + type + '/' + fullId + return @buildRootURL() + '/' + type + '/' + fullId - @buildFullDomainURL: -> + @buildRootURL: -> url = location.protocol + '//' + location.hostname if location.port url += ':' + location.port diff --git a/app/assets/javascripts/recordings.coffee b/app/assets/javascripts/recordings.coffee index d984c848..24c8814c 100644 --- a/app/assets/javascripts/recordings.coffee +++ b/app/assets/javascripts/recordings.coffee @@ -238,7 +238,7 @@ class @Recordings getRecordingsURL: -> if $(".page-wrapper.rooms").data('main-room') - base_url = '/rooms/'+Meeting.getInstance().getAdminId() + base_url = Meeting.buildRootURL()+'/'+$('body').data('resource')+'/'+Meeting.getInstance().getAdminId() else base_url = $('.meeting-url').val() base_url+'/recordings' diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index bacfc69a..01bdb262 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -43,6 +43,10 @@ module ApplicationHelper end end + def omniauth_login_url(provider) + "/auth/#{provider}" + end + # Whether the current page is the page of a room/meeting or not def on_room_or_meeting_page? params[:id].present? diff --git a/app/views/landing/_rooms_center_panel.html.erb b/app/views/landing/_rooms_center_panel.html.erb index 5cb7de7b..39b6618a 100644 --- a/app/views/landing/_rooms_center_panel.html.erb +++ b/app/views/landing/_rooms_center_panel.html.erb @@ -38,7 +38,7 @@ <% else %>
<%= t('are_you', name: @user.name) %>
-
<%= link_to t('login'), '/users/login' %>
+
<%= link_to t('login'), user_login_url %>
<% end %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 1cd6131b..fe415073 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -26,7 +26,7 @@ with BigBlueButton; if not, see . - +
diff --git a/app/views/sessions/new.erb b/app/views/sessions/new.erb index 5128d45c..5b5694b4 100644 --- a/app/views/sessions/new.erb +++ b/app/views/sessions/new.erb @@ -26,7 +26,7 @@ <%= render layout: 'shared/center_panel' do %>
<% if omniauth_providers_configured(:twitter) %> - <%= link_to '/auth/twitter', class: "signin-link signin-link-twitter" do %> + <%= link_to omniauth_login_url(:twitter), class: "signin-link signin-link-twitter" do %>