forked from External/greenlight
signup and room waiting
This commit is contained in:
parent
56489ee6cd
commit
657feb777f
|
@ -9,5 +9,4 @@
|
||||||
this.App || (this.App = {});
|
this.App || (this.App = {});
|
||||||
|
|
||||||
App.cable = ActionCable.createConsumer();
|
App.cable = ActionCable.createConsumer();
|
||||||
|
|
||||||
}).call(this);
|
}).call(this);
|
||||||
|
|
|
@ -79,6 +79,10 @@ a {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.join-button {
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
|
|
||||||
iframe{
|
iframe{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class WaitingChannel < ApplicationCable::Channel
|
||||||
|
def subscribed
|
||||||
|
stream_from "#{params[:uid]}_waiting_channel"
|
||||||
|
end
|
||||||
|
end
|
|
@ -24,49 +24,31 @@ class RoomsController < ApplicationController
|
||||||
|
|
||||||
# GET /r/:room_uid
|
# GET /r/:room_uid
|
||||||
def show
|
def show
|
||||||
opts = default_meeting_options
|
if current_user && @room.owned_by?(current_user)
|
||||||
|
@recordings = @room.recordings
|
||||||
if @room.is_running?
|
|
||||||
if current_user
|
|
||||||
# If you don't own the room but the meeting is running, join up.
|
|
||||||
if !@room.owned_by?(current_user)
|
|
||||||
opts[:user_is_moderator] = false
|
|
||||||
redirect_to @room.join_path(current_user, opts)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
# Render the join page so they can supply their name.
|
|
||||||
render :join
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
# If the room isn't running, go to join page to enter a name.
|
render :join
|
||||||
if !@room.owned_by?(current_user)
|
|
||||||
render :join
|
|
||||||
end
|
|
||||||
|
|
||||||
# If the meeting isn't running and you don't own the room, go to the waiting page.
|
|
||||||
#if !@room.owned_by?(current_user)
|
|
||||||
# redirect_to wait_room_path(@room)
|
|
||||||
#end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# NOTE: TEST TO MAKE SURE THIS DOESN'T FIRE WHEN THEY ARE NOT OWNER AND REDIRECTED.
|
|
||||||
@recordings = @room.recordings
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# POST /r/:room_uid
|
# POST /r/:room_uid
|
||||||
def join
|
def join
|
||||||
opts = default_meeting_options
|
opts = default_meeting_options
|
||||||
|
|
||||||
|
# Assign join name if passed.
|
||||||
|
if params[@room.invite_path]
|
||||||
|
@join_name = params[@room.invite_path][:join_name]
|
||||||
|
end
|
||||||
|
|
||||||
if @room.is_running?
|
if @room.is_running?
|
||||||
# If you're unauthenticated, you must enter a name to join the meeting.
|
if current_user
|
||||||
if params[@room.invite_path][:join_name]
|
|
||||||
redirect_to @room.join_path(params[@room.invite_path][:join_name], opts)
|
|
||||||
else
|
|
||||||
redirect_to @room.join_path(current_user, opts)
|
redirect_to @room.join_path(current_user, opts)
|
||||||
|
elsif join_name = params[:join_name] || params[@room.invite_path][:join_name]
|
||||||
|
redirect_to @room.join_path(join_name, opts)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
# They need to wait until the meeting begins.
|
# They need to wait until the meeting begins.
|
||||||
|
render :wait
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -85,19 +67,10 @@ class RoomsController < ApplicationController
|
||||||
opts[:user_is_moderator] = true
|
opts[:user_is_moderator] = true
|
||||||
|
|
||||||
redirect_to @room.join_path(current_user, opts)
|
redirect_to @room.join_path(current_user, opts)
|
||||||
end
|
|
||||||
|
|
||||||
# GET/POST /r/:room_uid/wait
|
# Notify users that the room has started.
|
||||||
def wait
|
# Delay 5 seconds to allow for server start, although the request will retry until it succeeds.
|
||||||
if @room.is_running?
|
NotifyUserWaitingJob.set(wait: 5.seconds).perform_later(@room)
|
||||||
if current_user
|
|
||||||
# If they are logged in and waiting, use their account name.
|
|
||||||
redirect_to @room.join_path(current_user, default_meeting_options)
|
|
||||||
elsif !params[:unauthenticated_join_name].blank?
|
|
||||||
# Otherwise, use the name they submitted on the wating page.
|
|
||||||
redirect_to @room.join_path(params[:unauthenticated_join_name], default_meeting_options)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# GET /r/:room_uid/logout
|
# GET /r/:room_uid/logout
|
||||||
|
@ -110,11 +83,6 @@ class RoomsController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# GET /r/:room_uid/sessions
|
|
||||||
def sessions
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
# POST /r/:room_uid/home
|
# POST /r/:room_uid/home
|
||||||
def home
|
def home
|
||||||
current_user.main_room = @room
|
current_user.main_room = @room
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
class UsersController < ApplicationController
|
class UsersController < ApplicationController
|
||||||
|
|
||||||
before_action :find_user, only: [:edit, :update]
|
before_action :find_user, only: [:edit, :update]
|
||||||
|
before_action :ensure_unauthenticated, only: [:new, :create]
|
||||||
|
|
||||||
# POST /users
|
# POST /users
|
||||||
def create
|
def create
|
||||||
|
@ -15,6 +16,11 @@ class UsersController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# GET /signup
|
||||||
|
def new
|
||||||
|
@user = User.new
|
||||||
|
end
|
||||||
|
|
||||||
# GET /users/:user_uid/edit
|
# GET /users/:user_uid/edit
|
||||||
def edit
|
def edit
|
||||||
if current_user
|
if current_user
|
||||||
|
@ -64,6 +70,10 @@ class UsersController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def ensure_unauthenticated
|
||||||
|
redirect_to current_user.main_room if current_user
|
||||||
|
end
|
||||||
|
|
||||||
def user_params
|
def user_params
|
||||||
params.require(:user).permit(:name, :email, :password, :password_confirmation, :new_password, :provider)
|
params.require(:user).permit(:name, :email, :password, :password_confirmation, :new_password, :provider)
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
class NotifyUserWaitingJob < ApplicationJob
|
||||||
|
queue_as :default
|
||||||
|
|
||||||
|
def perform(room)
|
||||||
|
room.notify_waiting
|
||||||
|
end
|
||||||
|
end
|
|
@ -51,6 +51,7 @@ class Room < ApplicationRecord
|
||||||
|
|
||||||
# Increment room sessions.
|
# Increment room sessions.
|
||||||
self.sessions += 1
|
self.sessions += 1
|
||||||
|
self.last_session = DateTime.now
|
||||||
self.save
|
self.save
|
||||||
|
|
||||||
#meeting_options.merge!(
|
#meeting_options.merge!(
|
||||||
|
@ -84,7 +85,7 @@ class Room < ApplicationRecord
|
||||||
return call_invalid_res if !bbb
|
return call_invalid_res if !bbb
|
||||||
|
|
||||||
# Get the meeting info.
|
# Get the meeting info.
|
||||||
meeting_info = bbb.get_meeting_info(bbb_id, nil)
|
meeting_info = bbb.get_meeting_info(bbb_id, nil)
|
||||||
|
|
||||||
# Determine the password to use when joining.
|
# Determine the password to use when joining.
|
||||||
password = if options[:user_is_moderator]
|
password = if options[:user_is_moderator]
|
||||||
|
@ -101,6 +102,13 @@ class Room < ApplicationRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Notify waiting users that a meeting has started.
|
||||||
|
def notify_waiting
|
||||||
|
ActionCable.server.broadcast("#{uid}_waiting_channel", {
|
||||||
|
action: "started"
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
# Fetches all recordings for a meeting.
|
# Fetches all recordings for a meeting.
|
||||||
def recordings
|
def recordings
|
||||||
res = bbb.get_recordings(meetingID: bbb_id)
|
res = bbb.get_recordings(meetingID: bbb_id)
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<div class="room-section pb-2 pt-9">
|
<div class="room-section pb-2 pt-9">
|
||||||
<div class="container text-center">
|
<div class="container text-center">
|
||||||
|
|
||||||
<h1 id="main-text" class="display-3 font-weight-400">Welcome to Greenlight.</h1>
|
<h1 id="main-text" class="display-3 font-weight-400">Welcome to BigBlueButton.</h1>
|
||||||
<h4 class="text-muted">A simple front end for your BigBlueButton Open Source Web Conferencing Server.</h4>
|
<h4 class="text-muted">A simple front end for your BigBlueButton Open Source Web Conferencing Server.</h4>
|
||||||
|
|
||||||
<%= link_to "https://www.google.com", class: "p-3", target: "_blank" do %>
|
<%= link_to "https://www.youtube.com/watch?v=yGX3JCv7OVM&feature=youtu.be", class: "p-3", target: "_blank" do %>
|
||||||
<h4>Watch a tutorial on using Greenlight <i class="fe fe-play-circle"></i></h4>
|
<h4>Watch a tutorial on using Greenlight <i class="fe fe-play-circle"></i></h4>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,36 +1,14 @@
|
||||||
<div class="room-section pb-9">
|
<%= render 'shared/room_event' do %>
|
||||||
<div class="container">
|
<%= form_for room_path, method: :post do |f| %>
|
||||||
<div class="row pt-9">
|
<div class="input-group" style="height: 60px;">
|
||||||
<div class="col-lg-12 col-sm-12">
|
<% if current_user %>
|
||||||
<h4 class="text-left">You have been invited to join</h4>
|
<%= f.submit "Join", class: "btn btn-primary px-7 main-large join-button"%>
|
||||||
<h1 class="display-3 text-left mb-3 font-weight-400"><%= @room.name %></h1>
|
<% else %>
|
||||||
<hr class="mt-2 float-left" style="width: 20%;">
|
<%= f.text_field :join_name, class: "form-control main-large", placeholder: "Enter your name!" %>
|
||||||
</div>
|
<span class="input-group-append">
|
||||||
|
<%= f.submit "Join", class: "btn btn-primary px-7 main-large" %>
|
||||||
|
</span>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
<% end %>
|
||||||
<div class="row">
|
<% end %>
|
||||||
<div class="col-lg-6 col-md-8 col-sm-12 form-inline mb-5 align-top">
|
|
||||||
<% if @room.owner.image.nil? %>
|
|
||||||
<span class="avatar"><%= @room.owner.name.first %></span>
|
|
||||||
<% else %>
|
|
||||||
<span class="avatar" style="background-image: url(<%= @room.owner.image %>)"></span>
|
|
||||||
<% end %>
|
|
||||||
<h5 class="font-weight-normal ml-4 mt-3"><%= @room.owner.name %> (Owner)</h5>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6 col-md-4 col-sm-12">
|
|
||||||
<%= form_for room_path, method: :post do |f| %>
|
|
||||||
<div class="input-group" style="height: 60px;">
|
|
||||||
<% if current_user %>
|
|
||||||
<%= f.submit "Join", class: "btn btn-primary px-7 main-large btn-block"%>
|
|
||||||
<% else %>
|
|
||||||
<%= f.text_field :join_name, class: "form-control main-large", placeholder: "Enter your name!" %>
|
|
||||||
<span class="input-group-append">
|
|
||||||
<%= f.submit "Join", class: "btn btn-primary px-7 main-large" %>
|
|
||||||
</span>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
|
@ -1,7 +1,45 @@
|
||||||
<p>Waiting for meeting to start...</p>
|
<%= render 'shared/room_event' do %>
|
||||||
<p>You will be redirected when the meeing starts...</p>
|
<div class="row">
|
||||||
|
<div class="col-9">
|
||||||
|
<h3>Oops! The meeting hasn't started yet.</h3>
|
||||||
|
<h4 class="text-muted">You will automatically join when the meeting starts.</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-3">
|
||||||
|
<div class="loader align-bottom mt-3"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<% unless current_user %>
|
<script>
|
||||||
<p>Input a name for when the meeting starts.</p>
|
$(document).on("turbolinks:load", function(){
|
||||||
<%= text_field(:unauthenticated_join_name, nil) %>
|
App.waiting = App.cable.subscriptions.create({
|
||||||
<% end %>
|
channel: "WaitingChannel",
|
||||||
|
uid: $(".room-section").attr("room")
|
||||||
|
}, {
|
||||||
|
received: function(data){
|
||||||
|
if(data.action = "started"){ request_to_join_meeting(); }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var join_attempts = 0;
|
||||||
|
|
||||||
|
var request_to_join_meeting = function(){
|
||||||
|
$.ajax({
|
||||||
|
url: window.location.pathname,
|
||||||
|
type: 'POST',
|
||||||
|
data: {
|
||||||
|
join_name: $(".room-section").attr("join-name")
|
||||||
|
},
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
|
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
|
||||||
|
},
|
||||||
|
error: function(){
|
||||||
|
// The meeting is still booting (going slowly), retry shortly.
|
||||||
|
if(join_attempts < 4){ setTimeout(request_to_join_meeting, 5000); }
|
||||||
|
join_attempts++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
|
@ -44,11 +44,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% else %>
|
<% else %>
|
||||||
<button type="submit" class="btn btn-pill btn-outline-primary mx-2" data-toggle="modal" data-target="#loginModal">Login</button>
|
<%= link_to "Login", "#loginModal", :class => "btn btn-pill btn-outline-primary mx-2", "data-toggle": "modal" %>
|
||||||
<button type="submit" class="btn btn-pill btn-outline-primary mx-2" data-toggle="modal" data-target="#signupModal">Signup</button>
|
<%= link_to "Signup", signup_path, :class => "btn btn-pill btn-outline-primary mx-2" %>
|
||||||
|
|
||||||
<%= render "shared/modals/login_modal" %>
|
<%= render "shared/modals/login_modal" %>
|
||||||
<%= render "shared/modals/signup_modal" %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<div class="room-section pb-9" room="<%= @room.uid %>" join-name="<%= @join_name %>">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row pt-9">
|
||||||
|
<div class="col-lg-12 col-sm-12">
|
||||||
|
<h4 class="text-left">You have been invited to join</h4>
|
||||||
|
<h1 class="display-3 text-left mb-3 font-weight-400"><%= @room.name %></h1>
|
||||||
|
<hr class="mt-2 float-left" style="width: 20%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6 col-md-8 col-sm-12 form-inline mb-5 align-top">
|
||||||
|
<% if @room.owner.image.nil? %>
|
||||||
|
<span class="avatar"><%= @room.owner.name.first %></span>
|
||||||
|
<% else %>
|
||||||
|
<span class="avatar" style="background-image: url(<%= @room.owner.image %>)"></span>
|
||||||
|
<% end %>
|
||||||
|
<h5 class="font-weight-normal ml-4 mt-3"><%= @room.owner.name %> (Owner)</h5>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-6 col-md-4 col-sm-12">
|
||||||
|
<%= yield %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -14,16 +14,17 @@
|
||||||
<td style="border-top: none;">
|
<td style="border-top: none;">
|
||||||
<h4 class="m-0 text-normal" style="color: #495057;"><%= room.name %></h4>
|
<h4 class="m-0 text-normal" style="color: #495057;"><%= room.name %></h4>
|
||||||
<div class="small text-muted">
|
<div class="small text-muted">
|
||||||
<i>Last Session on <%= recording_date(room.created_at) %></i>
|
<% if room.sessions > 0 %>
|
||||||
|
<i>Last session on <%= recording_date(room.last_session) %></i>
|
||||||
|
<% else %>
|
||||||
|
<i>This room has no sessions, yet!</i>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-right" style="border-top: none;">
|
<td class="text-right" style="border-top: none;">
|
||||||
<div class="item-action dropdown">
|
<div class="item-action dropdown">
|
||||||
<a href="javascript:void(0)" data-toggle="dropdown" class="icon"><i class="fe fe-more-vertical"></i></a>
|
<a href="javascript:void(0)" data-toggle="dropdown" class="icon"><i class="fe fe-more-vertical"></i></a>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<%= button_to root_path, class: "dropdown-item" do %>
|
|
||||||
<i class="dropdown-icon fe fe-link"></i> Copy Link
|
|
||||||
<% end %>
|
|
||||||
<%= button_to root_path, class: "dropdown-item" do %>
|
<%= button_to root_path, class: "dropdown-item" do %>
|
||||||
<i class="dropdown-icon fas fa-cog"></i> Room Settings
|
<i class="dropdown-icon fas fa-cog"></i> Room Settings
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
<div class="modal fade" id="signupModal" tabindex="-1" role="dialog">
|
|
||||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
|
||||||
<div class="modal-content text-center">
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="card-body p-6">
|
|
||||||
<div class="card-title text-primary">
|
|
||||||
<h3>Signup</h3>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class="small-rule">
|
|
||||||
|
|
||||||
<%= form_for(User.new) do |f| %>
|
|
||||||
<div class="form-group">
|
|
||||||
<%= f.label :name, "Full Name", class: "form-label text-left" %>
|
|
||||||
<%= f.text_field :name, class: "form-control", placeholder: "Full Name" %>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<%= f.label :email, "Email", class: "form-label text-left" %>
|
|
||||||
<%= f.text_field :email, class: "form-control", placeholder: "Email" %>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<%= f.label :password, "Password", class: "form-label text-left" %>
|
|
||||||
<%= f.password_field :password, class: "form-control", placeholder: "Password" %>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<%= f.label :password, "Password Confirmation", class: "form-label text-left" %>
|
|
||||||
<%= f.password_field :password, class: "form-control", placeholder: "Password Confirmation" %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-footer">
|
|
||||||
<%= f.submit "Signup", class: "btn btn-outline-primary btn-block btn-pill" %>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
<div class="container">
|
||||||
|
<div class="row mt-9">
|
||||||
|
<div class="col col-4 offset-4 mx-auto">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h4 class="mt-2">Create an Account</h4>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<%= form_for @user, method: :post do |f| %>
|
||||||
|
<div class="form-group">
|
||||||
|
<%= f.label "Fullname", class: "form-label" %>
|
||||||
|
<div class="input-icon">
|
||||||
|
<span class="input-icon-addon">
|
||||||
|
<i class="fas fa-user"></i>
|
||||||
|
</span>
|
||||||
|
<%= f.text_field :name, class: "form-control", placeholder: "Fullname" %>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<%= f.label "Email", class: "form-label" %>
|
||||||
|
<div class="input-icon">
|
||||||
|
<span class="input-icon-addon">
|
||||||
|
<i class="fas fa-at"></i>
|
||||||
|
</span>
|
||||||
|
<%= f.text_field :email, class: "form-control", placeholder: "Email" %>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<%= f.label "Password", class: "form-label" %>
|
||||||
|
<%= f.password_field :password, class: "form-control", placeholder: "Password" %>
|
||||||
|
<br>
|
||||||
|
<%= f.label "Password Confirmation", class: "form-label" %>
|
||||||
|
<%= f.password_field :password, class: "form-control", placeholder: "Password Confirmation" %>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer">
|
||||||
|
<%= f.submit "Sign up", class: "btn btn-primary float-right" %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -7,9 +7,7 @@ Rails.application.routes.draw do
|
||||||
scope '/r/:room_uid' do
|
scope '/r/:room_uid' do
|
||||||
post '/', to: 'rooms#join'
|
post '/', to: 'rooms#join'
|
||||||
get '/start', to: 'rooms#start', as: :start_room
|
get '/start', to: 'rooms#start', as: :start_room
|
||||||
match '/wait', to: 'rooms#wait', as: :wait_room, via: [:get, :post]
|
|
||||||
get '/logout', to: 'rooms#logout', as: :logout_room
|
get '/logout', to: 'rooms#logout', as: :logout_room
|
||||||
get '/sessions', to: 'rooms#sessions', as: :sessions
|
|
||||||
post '/home', to: 'rooms#home', as: :make_home
|
post '/home', to: 'rooms#home', as: :make_home
|
||||||
|
|
||||||
# Mange recordings.
|
# Mange recordings.
|
||||||
|
@ -21,6 +19,7 @@ Rails.application.routes.draw do
|
||||||
|
|
||||||
# User resources.
|
# User resources.
|
||||||
resources :users, only: [:create], param: :user_uid
|
resources :users, only: [:create], param: :user_uid
|
||||||
|
get '/signup', to: 'users#new', as: :signup
|
||||||
get '/users/:user_uid/edit', to: 'users#edit', as: :edit_user
|
get '/users/:user_uid/edit', to: 'users#edit', as: :edit_user
|
||||||
patch '/users/:user_uid/edit', to: 'users#update', as: :update_user
|
patch '/users/:user_uid/edit', to: 'users#update', as: :update_user
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ class CreateRooms < ActiveRecord::Migration[5.0]
|
||||||
t.string :bbb_id, index: true
|
t.string :bbb_id, index: true
|
||||||
t.string :icon, index: true
|
t.string :icon, index: true
|
||||||
t.integer :sessions, index: true, default: 0
|
t.integer :sessions, index: true, default: 0
|
||||||
|
t.datetime :last_session, index: true
|
||||||
|
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,11 +18,13 @@ ActiveRecord::Schema.define(version: 20180504131705) do
|
||||||
t.string "uid"
|
t.string "uid"
|
||||||
t.string "bbb_id"
|
t.string "bbb_id"
|
||||||
t.string "icon"
|
t.string "icon"
|
||||||
t.integer "sessions", default: 0
|
t.integer "sessions", default: 0
|
||||||
t.datetime "created_at", null: false
|
t.datetime "last_session"
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
t.index ["bbb_id"], name: "index_rooms_on_bbb_id"
|
t.index ["bbb_id"], name: "index_rooms_on_bbb_id"
|
||||||
t.index ["icon"], name: "index_rooms_on_icon"
|
t.index ["icon"], name: "index_rooms_on_icon"
|
||||||
|
t.index ["last_session"], name: "index_rooms_on_last_session"
|
||||||
t.index ["name"], name: "index_rooms_on_name"
|
t.index ["name"], name: "index_rooms_on_name"
|
||||||
t.index ["sessions"], name: "index_rooms_on_sessions"
|
t.index ["sessions"], name: "index_rooms_on_sessions"
|
||||||
t.index ["uid"], name: "index_rooms_on_uid"
|
t.index ["uid"], name: "index_rooms_on_uid"
|
||||||
|
|
Loading…
Reference in New Issue