forked from External/greenlight
GRN2-xx: Users, Room and Recordings are now no longer permanently deleted (#773)
* Bug fixes for 2.4 * Removed accidental code add * Switched from deleting to tombstoning * Fixed bug with login
This commit is contained in:
parent
666231db6c
commit
d3b669d552
|
@ -195,6 +195,7 @@ class AdminsController < ApplicationController
|
||||||
role.priority <= current_user.highest_priority_role.priority
|
role.priority <= current_user.highest_priority_role.priority
|
||||||
return redirect_to admin_roles_path(selected_role: role.id)
|
return redirect_to admin_roles_path(selected_role: role.id)
|
||||||
else
|
else
|
||||||
|
role.role_permissions.delete_all
|
||||||
role.delete
|
role.delete
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -140,10 +140,7 @@ class RoomsController < ApplicationController
|
||||||
# DELETE /:room_uid
|
# DELETE /:room_uid
|
||||||
def destroy
|
def destroy
|
||||||
# Don't delete the users home room.
|
# Don't delete the users home room.
|
||||||
if @room.owned_by?(current_user) && @room != current_user.main_room
|
@room.destroy if @room.owned_by?(current_user) && @room != current_user.main_room
|
||||||
@room.destroy
|
|
||||||
delete_all_recordings(@room.bbb_id)
|
|
||||||
end
|
|
||||||
|
|
||||||
redirect_to current_user.main_room
|
redirect_to current_user.main_room
|
||||||
end
|
end
|
||||||
|
|
|
@ -30,7 +30,6 @@ class SessionsController < ApplicationController
|
||||||
def signin
|
def signin
|
||||||
check_if_twitter_account
|
check_if_twitter_account
|
||||||
|
|
||||||
providers = configured_providers
|
|
||||||
if one_provider
|
if one_provider
|
||||||
provider_path = if Rails.configuration.omniauth_ldap
|
provider_path = if Rails.configuration.omniauth_ldap
|
||||||
ldap_signin_path
|
ldap_signin_path
|
||||||
|
@ -147,6 +146,8 @@ class SessionsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def one_provider
|
def one_provider
|
||||||
|
providers = configured_providers
|
||||||
|
|
||||||
(!allow_user_signup? || !allow_greenlight_accounts?) && providers.count == 1 &&
|
(!allow_user_signup? || !allow_greenlight_accounts?) && providers.count == 1 &&
|
||||||
!Rails.configuration.loadbalanced_configuration
|
!Rails.configuration.loadbalanced_configuration
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under the
|
||||||
|
# terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 3.0 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License along
|
||||||
|
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
module Deleteable
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
included do
|
||||||
|
# By default don't include deleted
|
||||||
|
default_scope { where(deleted: false) }
|
||||||
|
scope :include_deleted, -> { unscope(where: :deleted) }
|
||||||
|
scope :deleted, -> { include_deleted.where(deleted: true) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
run_callbacks :destroy
|
||||||
|
update_attribute(:deleted, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete
|
||||||
|
destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
def undelete
|
||||||
|
assign_attributes(deleted: false)
|
||||||
|
end
|
||||||
|
|
||||||
|
def undelete!
|
||||||
|
update_attribute(:deleted, false)
|
||||||
|
end
|
||||||
|
end
|
|
@ -19,6 +19,8 @@
|
||||||
require 'bbb_api'
|
require 'bbb_api'
|
||||||
|
|
||||||
class Room < ApplicationRecord
|
class Room < ApplicationRecord
|
||||||
|
include Deleteable
|
||||||
|
|
||||||
before_create :setup
|
before_create :setup
|
||||||
|
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
require 'bbb_api'
|
require 'bbb_api'
|
||||||
|
|
||||||
class User < ApplicationRecord
|
class User < ApplicationRecord
|
||||||
|
include Deleteable
|
||||||
|
|
||||||
attr_accessor :reset_token
|
attr_accessor :reset_token
|
||||||
after_create :setup_user
|
after_create :setup_user
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,15 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-3 mb-4">
|
<div class="col-lg-3 mb-4">
|
||||||
<%= render "users/components/menu_buttons" %>
|
<%= render "users/components/menu_buttons" %>
|
||||||
|
|
||||||
|
<% if @user.errors.any? %>
|
||||||
|
<h5 class="mt-8"><%= t("errors.title") %>:</h5>
|
||||||
|
<ul>
|
||||||
|
<% @user.errors.full_messages.each do |err| %>
|
||||||
|
<li class="text-danger"><%= err %>.</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-9">
|
<div class="col-lg-9">
|
||||||
<%= render "users/components/setting_view", setting_id: "account", setting_title: t("settings.account.subtitle") %>
|
<%= render "users/components/setting_view", setting_id: "account", setting_title: t("settings.account.subtitle") %>
|
||||||
|
|
|
@ -21,11 +21,12 @@ class CreateRolePermissions < ActiveRecord::Migration[5.2]
|
||||||
role.role_permissions.create(name: "can_manage_users", value: role.can_manage_users.to_s, enabled: true)
|
role.role_permissions.create(name: "can_manage_users", value: role.can_manage_users.to_s, enabled: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
remove_column :roles, :can_create_rooms
|
# Add these back in once the change to postgres is made
|
||||||
remove_column :roles, :send_promoted_email
|
# remove_column :roles, :can_create_rooms
|
||||||
remove_column :roles, :send_demoted_email
|
# remove_column :roles, :send_promoted_email
|
||||||
remove_column :roles, :can_edit_site_settings
|
# remove_column :roles, :send_demoted_email
|
||||||
remove_column :roles, :can_edit_roles
|
# remove_column :roles, :can_edit_site_settings
|
||||||
remove_column :roles, :can_manage_users
|
# remove_column :roles, :can_edit_roles
|
||||||
|
# remove_column :roles, :can_manage_users
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class AddDeletedColumn < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :users, :deleted, :boolean, null: false, default: false
|
||||||
|
add_index :users, :deleted
|
||||||
|
add_column :rooms, :deleted, :boolean, null: false, default: false
|
||||||
|
add_index :rooms, :deleted
|
||||||
|
end
|
||||||
|
end
|
12
db/schema.rb
12
db/schema.rb
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2019_08_22_134205) do
|
ActiveRecord::Schema.define(version: 2019_08_28_153347) do
|
||||||
|
|
||||||
create_table "features", force: :cascade do |t|
|
create_table "features", force: :cascade do |t|
|
||||||
t.integer "setting_id"
|
t.integer "setting_id"
|
||||||
|
@ -46,6 +46,12 @@ ActiveRecord::Schema.define(version: 2019_08_22_134205) do
|
||||||
create_table "roles", force: :cascade do |t|
|
create_table "roles", force: :cascade do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.integer "priority", default: 9999
|
t.integer "priority", default: 9999
|
||||||
|
t.boolean "can_create_rooms", default: false
|
||||||
|
t.boolean "send_promoted_email", default: false
|
||||||
|
t.boolean "send_demoted_email", default: false
|
||||||
|
t.boolean "can_edit_site_settings", default: false
|
||||||
|
t.boolean "can_edit_roles", default: false
|
||||||
|
t.boolean "can_manage_users", default: false
|
||||||
t.string "colour"
|
t.string "colour"
|
||||||
t.string "provider"
|
t.string "provider"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
|
@ -67,7 +73,9 @@ ActiveRecord::Schema.define(version: 2019_08_22_134205) do
|
||||||
t.string "moderator_pw"
|
t.string "moderator_pw"
|
||||||
t.string "attendee_pw"
|
t.string "attendee_pw"
|
||||||
t.string "access_code"
|
t.string "access_code"
|
||||||
|
t.boolean "deleted", default: false, null: false
|
||||||
t.index ["bbb_id"], name: "index_rooms_on_bbb_id"
|
t.index ["bbb_id"], name: "index_rooms_on_bbb_id"
|
||||||
|
t.index ["deleted"], name: "index_rooms_on_deleted"
|
||||||
t.index ["last_session"], name: "index_rooms_on_last_session"
|
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"
|
||||||
|
@ -101,7 +109,9 @@ ActiveRecord::Schema.define(version: 2019_08_22_134205) do
|
||||||
t.datetime "reset_sent_at"
|
t.datetime "reset_sent_at"
|
||||||
t.string "activation_digest"
|
t.string "activation_digest"
|
||||||
t.datetime "activated_at"
|
t.datetime "activated_at"
|
||||||
|
t.boolean "deleted", default: false, null: false
|
||||||
t.index ["created_at"], name: "index_users_on_created_at"
|
t.index ["created_at"], name: "index_users_on_created_at"
|
||||||
|
t.index ["deleted"], name: "index_users_on_deleted"
|
||||||
t.index ["email"], name: "index_users_on_email"
|
t.index ["email"], name: "index_users_on_email"
|
||||||
t.index ["password_digest"], name: "index_users_on_password_digest", unique: true
|
t.index ["password_digest"], name: "index_users_on_password_digest", unique: true
|
||||||
t.index ["provider"], name: "index_users_on_provider"
|
t.index ["provider"], name: "index_users_on_provider"
|
||||||
|
|
Loading…
Reference in New Issue