Skip to content

Commit

Permalink
🧹 Rooms: Get rid of locked/unlocked Rooms
Browse files Browse the repository at this point in the history
- #1155

It's not really serving us, and is a hold-over from when Convene was
more video-forward.
  • Loading branch information
zspencer committed Mar 4, 2023
1 parent 600f633 commit 5d49843
Show file tree
Hide file tree
Showing 36 changed files with 47 additions and 571 deletions.
4 changes: 0 additions & 4 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,6 @@ def space_repository
current_space.entrance
end

helper_method def current_access_code(room)
session.dig(room.id, "access_code")
end

def render_not_found
render file: "#{Rails.root}/public/404.html", layout: false, status: :not_found
end
Expand Down
20 changes: 0 additions & 20 deletions app/controllers/rooms_controller.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
# frozen_string_literal: true

class RoomsController < ApplicationController
before_action :check_access_code

def show
respond_to do |format|
format.html
Expand Down Expand Up @@ -67,22 +65,4 @@ def room_params
authorize(room)
end
end

# TODO: Unit test authorize and redirect url
private def check_access_code
return unless room.persisted?

unless room.enterable?(current_access_code(room))
redirect_to [current_space, current_room, :waiting_room, redirect_url: after_authorization_redirect_url]
end
end

# TODO: Unit test authorize and redirect url
private def after_authorization_redirect_url
if %i[edit update].include?(action_name.to_sym)
return url_for([:edit, room.space, room])
end

url_for([room.space, room])
end
end
18 changes: 0 additions & 18 deletions app/controllers/waiting_rooms_controller.rb

This file was deleted.

2 changes: 0 additions & 2 deletions app/helpers/waiting_rooms_helper.rb

This file was deleted.

3 changes: 0 additions & 3 deletions app/javascript/controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,3 @@ import { application } from "./application.js"

import MenuController from "./menu_controller.js"
application.register("menu", MenuController)

import RoomFormController from "./room_form_controller.js"
application.register("room-form", RoomFormController)
9 changes: 0 additions & 9 deletions app/javascript/controllers/room_form_controller.js

This file was deleted.

1 change: 0 additions & 1 deletion app/lib/space_routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ def self.append_routes(router)
end
router.resources :rooms, only: %i[show edit update new create destroy] do
Furniture.append_routes(router)
router.resource :waiting_room, only: %i[show update]
router.resources :furniture_placements, only: %i[create edit update destroy]
end

Expand Down
19 changes: 4 additions & 15 deletions app/models/blueprint.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,38 +101,27 @@ def space_attributes
{
name: "Listed Room 1",
publicity_level: :listed,
access_level: :unlocked,
access_code: nil,
access_level: :public,
furniture_placements: {
markdown_text_block: {content: "# Welcome!"}
}
},
{
name: "Listed Room 2",
publicity_level: :listed,
access_level: :unlocked,
access_code: nil,
furniture_placements: {}
},
{
name: "Listed Locked Room 1",
publicity_level: :listed,
access_level: :locked,
access_code: :secret,
access_level: :public,
furniture_placements: {}
},
{
name: "Unlisted Room 1",
publicity_level: :unlisted,
access_level: :unlocked,
access_code: nil,
access_level: :public,
furniture_placements: {}
},
{
name: "Unlisted Room 2",
publicity_level: :unlisted,
access_level: :unlocked,
access_code: nil,
access_level: :public,
furniture_placements: {}
},
{
Expand Down
32 changes: 7 additions & 25 deletions app/models/room.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,29 +17,19 @@ class Room < ApplicationRecord
extend FriendlyId
friendly_id :name, use: :scoped, scope: :space

ACCESS_LEVELS = %i[internal public].freeze
# A Room's Access Level indicates what a participant must know in order to gain access to the room.
# `unlocked` indicates that the participant does not need to know anything to gain access.
# `locked` indicates that only participants who know the rrooms `access_code` may access the room.
# `internal` indicates that only participants who are Space Members _or_ know the Spaces `access_code` may
# access the room.
attribute :access_level, :string, default: "unlocked"

# A room's Access Code is a "secret" that, when known, grants access to the room.
attribute :access_code, :string
validates :access_code, presence: {if: :locked?}

def locked?
access_level&.to_sym == :locked
end

def unlocked?
access_level&.to_sym == :unlocked
end
# `internal` only Members may access the Room
attribute :access_level, :string, default: :public

def internal?
access_level&.to_sym == :internal
end

def public?
access_level&.to_sym == :public
end

# A Room's Publicity Level indicates how visible the room is.
# `listed` - The room is discoverable by anyone in the space lobby.
# `unlisted` - The room is not listed.
Expand All @@ -66,14 +56,6 @@ def full_slug
"#{space.slug}--#{slug}"
end

def enterable?(access_code)
return true if access_level == "unlocked"

can_enter = self.access_code == access_code
errors.add(:base, "Invalid access code") if access_code
can_enter
end

def entrance?
space.entrance == self
end
Expand Down
22 changes: 0 additions & 22 deletions app/models/waiting_room.rb

This file was deleted.

4 changes: 2 additions & 2 deletions app/policies/room_policy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class RoomPolicy < ApplicationPolicy
delegate :space, to: :room

def show?
return true if room.unlocked? || room.locked?
return true if room.public?
return true if room.internal? && (person&.member_of?(space) || person&.operator?)
end

Expand All @@ -19,7 +19,7 @@ def create?
alias_method :new?, :create?

def permitted_attributes(params)
[:access_level, :access_code, :name, :slug, :publicity_level,
[:access_level, :name, :slug, :publicity_level,
furniture_placements_attributes:
policy(FurniturePlacement).permitted_attributes(params)]
end
Expand Down
8 changes: 0 additions & 8 deletions app/policies/waiting_room_policy.rb

This file was deleted.

34 changes: 5 additions & 29 deletions app/views/rooms/_form.html.erb
Original file line number Diff line number Diff line change
@@ -1,36 +1,12 @@
<%= form_with model: room.location, data: { controller: "room-form" } do |room_form| %>
<%= form_with model: room.location do |room_form| %>
<fieldset>
<div>
<%= room_form.label :name %>
<%= room_form.text_field :name %>
<%= render partial: "error", locals: { model: room, attribute: :name } %>
</div>

<div>
<%= room_form.label :slug %>
<%= room_form.text_field :slug %>
<%= render partial: "error", locals: { model: room, attribute: :slug } %>
</div>
<%= render "text_field", attribute: :name, form: room_form %>
<%= render "text_field", attribute: :slug, form: room_form %>

<h3>Privacy and Security</h3>

<div>
<%= room_form.label :publicity_level %>
<%= room_form.select :publicity_level, Room::PUBLICITY_LEVELS.map(&:to_s) %>
<%= render partial: "error", locals: { model: room, attribute: :publicity_level } %>
</div>

<div>
<%= room_form.label :access_level %>
<%= room_form.select :access_level, ['locked', 'unlocked'], { class: "form-select" }, "data-action": "room-form#accessLevelToggle" %>
<%= render partial: "error", locals: { model: room, attribute: :access_level } %>
</div>

<div>
<%= room_form.label :access_code %>
<%= room_form.text_field :access_code, "data-target": "room-form.accessCode", disabled: !room.locked? %>
<%= render partial: "error", locals: { model: room, attribute: :access_code } %>
</div>
<%= render "select", attribute: :publicity_level, options: Room::PUBLICITY_LEVELS.map(&:to_s), form: room_form %>
<%= render "select", attribute: :access_level, options: Room::ACCESS_LEVELS.map(&:to_s), form: room_form %>

<footer>
<%- if policy(room).destroy? && room.persisted? %>
Expand Down
6 changes: 0 additions & 6 deletions app/views/spaces/_room_card.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,6 @@
<h3 class="text-neutral-900 text-sm leading-5 font-medium truncate pl-8 mr-4">
<%= room.name %>
</h3>
<%- if room.locked? %>
<span class="icon --lock" role="img" aria-label="Locked"></span>
<%- end %>
<%- if room.locked? && room.enterable?(current_access_code(room)) %>
<span class="icon --key" role="img" aria-label="Enterable"></span>
<%- end %>
</header>
<footer class="w-full flex flex-col items-center justify-center border-t border-neutral-200">
<div data-role="enter" class="flex justify-center text-sm leading-5 text-neutral-700 font-medium transition ease-in-out duration-150 focus:outline-none focus:ring-blue-500 focus:border-blue-300 focus:z-10 hovertext-neutral-500">
Expand Down
17 changes: 0 additions & 17 deletions app/views/waiting_rooms/show.html.erb

This file was deleted.

5 changes: 0 additions & 5 deletions config/breadcrumbs.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,6 @@
parent :room, room
end

crumb :waiting_room do |waiting_room|
link "Waiting Room", space_room_waiting_room_path(waiting_room.room.space, waiting_room.room)
parent :room, waiting_room.room
end

crumb :rsvp do |rsvp|
link "Respond to your Invitation"
parent :root, rsvp.space
Expand Down
15 changes: 0 additions & 15 deletions config/locales/waiting_room/en.yml

This file was deleted.

6 changes: 6 additions & 0 deletions db/migrate/20230304003325_drop_rooms_access_code.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class DropRoomsAccessCode < ActiveRecord::Migration[7.0]
def change
remove_column :rooms, :access_code, :string
change_column :rooms, :access_level, :string, default: :public
end
end
5 changes: 2 additions & 3 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema[7.0].define(version: 2023_03_03_201956) do
ActiveRecord::Schema[7.0].define(version: 2023_03_04_003325) do
# These are extensions that must be enabled in order to support this database
enable_extension "pgcrypto"
enable_extension "plpgsql"
Expand Down Expand Up @@ -182,8 +182,7 @@
create_table "rooms", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
t.string "name"
t.string "slug"
t.string "access_level", default: "unlocked", null: false
t.string "access_code"
t.string "access_level", default: "public", null: false
t.string "publicity_level"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
Expand Down
3 changes: 0 additions & 3 deletions features/harness/Pages.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import Page from "./Page.js";
import RoomPage from "./RoomPage.js";
import RoomEditPage from "./RoomEditPage.js";
import WaitingRoomPage from "./WaitingRoomPage.js";
import SpacePage from "./SpacePage.js";
import SpaceEditPage from "./SpaceEditPage.js";
import MembershipsIndexPage from "./MembershipsIndexPage.js";
Expand All @@ -17,7 +16,6 @@ export { SpaceEditPage };
export { MembershipsIndexPage };
export { InvitationsIndexPage };
export { RoomEditPage };
export { WaitingRoomPage };
export default {
Page,
SpacePage,
Expand All @@ -26,5 +24,4 @@ export default {
RoomPage,
SpaceEditPage,
RoomEditPage,
WaitingRoomPage,
};
Loading

0 comments on commit 5d49843

Please sign in to comment.