forked from External/greenlight
		
	Merge pull request #13 from jfederico/master
Some rework for generalizing code that is used by the two resources
This commit is contained in:
		@@ -3,7 +3,6 @@ require 'digest/sha1'
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class ApplicationController < ActionController::Base
 | 
					class ApplicationController < ActionController::Base
 | 
				
			||||||
  protect_from_forgery with: :exception
 | 
					  protect_from_forgery with: :exception
 | 
				
			||||||
  include ApplicationHelper
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def current_user
 | 
					  def current_user
 | 
				
			||||||
    @current_user ||= User.find_by(id: session[:user_id])
 | 
					    @current_user ||= User.find_by(id: session[:user_id])
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,33 +1,51 @@
 | 
				
			|||||||
class LandingController < ApplicationController
 | 
					class LandingController < ApplicationController
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def meeting
 | 
					  def index
 | 
				
			||||||
    @refreshable = (params[:resource] == 'meetings' && !params.has_key?(:id))
 | 
					    if params[:resource] == 'meetings'
 | 
				
			||||||
    @meeting_token = params[:id] || @meeting_token = helpers.new_meeting_token
 | 
					      render_meeting
 | 
				
			||||||
    @resource = params[:resource]
 | 
					    elsif params[:resource] == 'rooms'
 | 
				
			||||||
    @resource_url = meeting_url(@meeting_token)
 | 
					      render_room
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      render 'errors/error'
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # GET /token.json
 | 
					  # GET /token.json
 | 
				
			||||||
  def new_meeting
 | 
					  def new_meeting
 | 
				
			||||||
    respond_to do |format|
 | 
					    respond_to do |format|
 | 
				
			||||||
      meeting_url = meeting_url(helpers.new_meeting_token)
 | 
					      meeting_url = resource_url('meetings', helpers.new_meeting_token)
 | 
				
			||||||
      format.json { render :json => { :messageKey => "ok", :message => "New meeting URL created", :status => :ok, :response => { :meeting_url => meeting_url} }, :status => status }
 | 
					      format.json { render :json => { :messageKey => "ok", :message => "New meeting URL created", :status => :ok, :response => { :meeting_url => meeting_url} }, :status => status }
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def meeting
 | 
				
			||||||
 | 
					    render_meeting
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def room
 | 
					  def room
 | 
				
			||||||
    @room_name = params[:name]
 | 
					    render_room
 | 
				
			||||||
    @user = User.find_by(username: @room_name)
 | 
					 | 
				
			||||||
    @meeting_token = @room_name
 | 
					 | 
				
			||||||
    @resource = "rooms"
 | 
					 | 
				
			||||||
    @resource_url = room_url(@meeting_token)
 | 
					 | 
				
			||||||
    if @user.nil?
 | 
					 | 
				
			||||||
      redirect_to root_path
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def admin?
 | 
					  def admin?
 | 
				
			||||||
    @user == current_user
 | 
					    @user == current_user
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  helper_method :admin?
 | 
					  helper_method :admin?
 | 
				
			||||||
 | 
					  private
 | 
				
			||||||
 | 
					  def render_meeting
 | 
				
			||||||
 | 
					    @resource = params[:resource]
 | 
				
			||||||
 | 
					    @meeting_token = params[:id] || @meeting_token = helpers.new_meeting_token
 | 
				
			||||||
 | 
					    @refreshable = (params[:resource] == 'meetings' && !params.has_key?(:id))
 | 
				
			||||||
 | 
					    render :action => 'meeting'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def render_room
 | 
				
			||||||
 | 
					    @resource = params[:resource]
 | 
				
			||||||
 | 
					    @meeting_token = params[:id]
 | 
				
			||||||
 | 
					    @user = User.find_by(username: @meeting_token)
 | 
				
			||||||
 | 
					    if @user.nil?
 | 
				
			||||||
 | 
					      redirect_to root_path
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    render :action => 'room'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ class SessionsController < ApplicationController
 | 
				
			|||||||
    @user = User.from_omniauth(request.env['omniauth.auth'])
 | 
					    @user = User.from_omniauth(request.env['omniauth.auth'])
 | 
				
			||||||
    if @user.persisted?
 | 
					    if @user.persisted?
 | 
				
			||||||
      session[:user_id] = @user.id
 | 
					      session[:user_id] = @user.id
 | 
				
			||||||
      redirect_to controller: 'landing', action: 'room', name: @user.username
 | 
					      redirect_to controller: 'landing', action: 'room', id: @user.username
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      @user.save!
 | 
					      @user.save!
 | 
				
			||||||
      session[:user_id] = @user.id
 | 
					      session[:user_id] = @user.id
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,3 @@
 | 
				
			|||||||
<div id="landing_page_footer_message">
 | 
					<div id="landing_page_footer_message">
 | 
				
			||||||
  <p>Bookmark this page to reuse this meeting URL, or click refresh button to generate a new meeting URL</p>
 | 
					  <p>Bookmark this page to reuse this meeting URL<% if @resource == "meetings" %>, or click refresh button to generate a new meeting URL<% end %></p>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,10 +10,6 @@
 | 
				
			|||||||
      <span class="fa fa-google"></span>
 | 
					      <span class="fa fa-google"></span>
 | 
				
			||||||
    <% end %>
 | 
					    <% end %>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <% else %>
 | 
					 | 
				
			||||||
    <div>Hello <%= current_user.name %></div>
 | 
					 | 
				
			||||||
    <div><%= link_to 'Personal Room', current_user.room_url %></div>
 | 
					 | 
				
			||||||
    <div><%= link_to 'Logout', '/logout' %></div>
 | 
					 | 
				
			||||||
  <% end %>
 | 
					  <% end %>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@
 | 
				
			|||||||
    <div id="landing_page_url" class="center-block">
 | 
					    <div id="landing_page_url" class="center-block">
 | 
				
			||||||
      <form id="url_form" class="form-inline">
 | 
					      <form id="url_form" class="form-inline">
 | 
				
			||||||
        <div class="form-group">
 | 
					        <div class="form-group">
 | 
				
			||||||
          <span id="meeting_url"><%= @resource_url %></span>
 | 
					          <span id="meeting_url"><%= resource_url(@resource, @meeting_token) %></span>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <% if @refreshable %>
 | 
					        <% if @refreshable %>
 | 
				
			||||||
        <button id="url_form_button" type="button" class="btn btn-default" data-url="<%= new_meeting_path() %>">
 | 
					        <button id="url_form_button" type="button" class="btn btn-default" data-url="<%= new_meeting_path() %>">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
<figure class=highlight><pre><figcaption class="text" data-lang="text">
 | 
					<figure class=highlight><pre><figcaption class="text" data-lang="text">
 | 
				
			||||||
  <p>Hi Everyone</p>
 | 
					  <p>Hi Everyone</p>
 | 
				
			||||||
  <p>The meeting will be at this URL</p>
 | 
					  <p>The meeting will be at this URL</p>
 | 
				
			||||||
  <p><a id="text_meeting_url" href="<%= @resource_url %>"><%= @resource_url %></a></p>
 | 
					  <p><a id="text_meeting_url" href="<%= resource_url(@resource, @meeting_token) %>"><%= resource_url(@resource, @meeting_token) %></a></p>
 | 
				
			||||||
  <p>Please join!</p>
 | 
					  <p>Please join!</p>
 | 
				
			||||||
</figcaption></pre></figure>
 | 
					</figcaption></pre></figure>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,18 @@
 | 
				
			|||||||
<!-- Body -->
 | 
					<!-- Body -->
 | 
				
			||||||
<div class='body'>
 | 
					<div class='body'>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <div class="page-wrapper room">
 | 
				
			||||||
 | 
					    <div class="row">
 | 
				
			||||||
 | 
					      <div class="col-sm-2 col-sm-offset-10">
 | 
				
			||||||
 | 
					        <% if !current_user.nil? %>
 | 
				
			||||||
 | 
					          <span class="user">Hello <%= current_user.name %></span>
 | 
				
			||||||
 | 
					          <%= link_to "Logout", user_logout_url() %>
 | 
				
			||||||
 | 
					          <div><%= link_to 'Personal Room', current_user.room_url %></div>
 | 
				
			||||||
 | 
					        <% end %>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <div class="container">
 | 
					  <div class="container">
 | 
				
			||||||
    <%= render 'landing/join_form' %>
 | 
					    <%= render 'landing/join_form' %>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,8 +5,8 @@
 | 
				
			|||||||
    <div class="row">
 | 
					    <div class="row">
 | 
				
			||||||
      <div class="col-sm-2 col-sm-offset-10">
 | 
					      <div class="col-sm-2 col-sm-offset-10">
 | 
				
			||||||
        <% if admin? %>
 | 
					        <% if admin? %>
 | 
				
			||||||
          <span class="user"><%= current_user.name %></span>
 | 
					          <span class="user">Hello <%= current_user.name %></span>
 | 
				
			||||||
          <%= link_to "Logout", "/logout" %>
 | 
					          <%= link_to "Logout", user_logout_url() %>
 | 
				
			||||||
        <% else %>
 | 
					        <% else %>
 | 
				
			||||||
          <%= link_to "Login", "/auth/twitter" %>
 | 
					          <%= link_to "Login", "/auth/twitter" %>
 | 
				
			||||||
        <% end %>
 | 
					        <% end %>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,14 +1,19 @@
 | 
				
			|||||||
Rails.application.routes.draw do
 | 
					Rails.application.routes.draw do
 | 
				
			||||||
  resources :users, only: [:edit, :update]
 | 
					  resources :users, only: [:edit, :update]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get 'bbb/join/:resource/:id', to: 'bbb#join', as: :bbb_join
 | 
					  # This should be removed once before being released
 | 
				
			||||||
 | 
					 | 
				
			||||||
  get '/meetings/new', to: 'landing#new_meeting', as: :new_meeting
 | 
					 | 
				
			||||||
  get '/meetings(/:id)', to: 'landing#meeting', as: :meeting, :resource => "meetings"
 | 
					 | 
				
			||||||
  get '/rooms/:name', to: 'landing#room', as: :room
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  get '/auth/:provider/callback', to: 'sessions#create'
 | 
					  get '/auth/:provider/callback', to: 'sessions#create'
 | 
				
			||||||
  get '/logout', to: 'sessions#destroy'
 | 
					  ###########################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  get '/users/auth/:provider/callback', to: 'sessions#create'
 | 
				
			||||||
 | 
					  get '/users/logout', to: 'sessions#destroy', as: :user_logout
 | 
				
			||||||
 | 
					  get '/meetings/join/:resource/:id', to: 'bbb#join', as: :bbb_join
 | 
				
			||||||
 | 
					  get '/meetings/new', to: 'landing#new_meeting', as: :new_meeting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # 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
 | 
				
			||||||
 | 
					  get '/:resource(/:id)', to: 'landing#index', as: :resource
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  root to: 'landing#meeting', :resource => "meetings"
 | 
					  root to: 'landing#meeting', :resource => "meetings"
 | 
				
			||||||
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
 | 
					  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user