forked from External/greenlight
		
	Home rooms are created for all users with role if can_create_rooms is enabled (#1694)
This commit is contained in:
		@@ -146,6 +146,18 @@ module Rolify
 | 
				
			|||||||
    role.update(colour: permission_params[:colour])
 | 
					    role.update(colour: permission_params[:colour])
 | 
				
			||||||
    role.update_all_role_permissions(permission_params)
 | 
					    role.update_all_role_permissions(permission_params)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Create home rooms for all users with this role if users with this role are now able to create rooms
 | 
				
			||||||
 | 
					    create_home_rooms(role.name) if !role.get_permission("can_create_rooms") && permission_params["can_create_rooms"] == "true"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    role.save!
 | 
					    role.save!
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Create home rooms for users since they are now able to create rooms
 | 
				
			||||||
 | 
					  def create_home_rooms(role_name)
 | 
				
			||||||
 | 
					    User.with_role(role_name).each do |user|
 | 
				
			||||||
 | 
					      user.create_home_room if user.main_room.nil?
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -198,6 +198,11 @@ class User < ApplicationRecord
 | 
				
			|||||||
    User.includes(:role).where.not(roles: { name: role })
 | 
					    User.includes(:role).where.not(roles: { name: role })
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def create_home_room
 | 
				
			||||||
 | 
					    room = Room.create!(owner: self, name: I18n.t("home_room"))
 | 
				
			||||||
 | 
					    update_attributes(main_room: room)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private
 | 
					  private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Destory a users rooms when they are removed.
 | 
					  # Destory a users rooms when they are removed.
 | 
				
			||||||
@@ -227,11 +232,6 @@ class User < ApplicationRecord
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def create_home_room
 | 
					 | 
				
			||||||
    room = Room.create!(owner: self, name: I18n.t("home_room"))
 | 
					 | 
				
			||||||
    update_attributes(main_room: room)
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def role_provider
 | 
					  def role_provider
 | 
				
			||||||
    Rails.configuration.loadbalanced_configuration ? provider : "greenlight"
 | 
					    Rails.configuration.loadbalanced_configuration ? provider : "greenlight"
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -731,6 +731,24 @@ describe AdminsController, type: :controller do
 | 
				
			|||||||
        expect(new_role.get_permission("send_promoted_email")).to eq(false)
 | 
					        expect(new_role.get_permission("send_promoted_email")).to eq(false)
 | 
				
			||||||
        expect(response).to redirect_to admin_roles_path(selected_role: new_role.id)
 | 
					        expect(response).to redirect_to admin_roles_path(selected_role: new_role.id)
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it "creates the users home room if can_create_rooms is enabled" do
 | 
				
			||||||
 | 
					        new_role = Role.create(name: "test2", priority: 2, provider: "provider1")
 | 
				
			||||||
 | 
					        new_role.update_permission("can_create_rooms", "false")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @request.session[:user_id] = @admin.id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        new_user = create(:user, role: new_role)
 | 
				
			||||||
 | 
					        expect(new_user.role.get_permission("can_create_rooms")).to eq(false)
 | 
				
			||||||
 | 
					        expect(new_user.main_room).to be_nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        patch :update_role, params: { role_id: new_role.id, role: { name: "test", can_create_rooms: true,
 | 
				
			||||||
 | 
					          colour: "#45434" } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        new_user.reload
 | 
				
			||||||
 | 
					        expect(new_user.role.get_permission("can_create_rooms")).to eq(true)
 | 
				
			||||||
 | 
					        expect(new_user.main_room).not_to be_nil
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    context "DELETE delete_role" do
 | 
					    context "DELETE delete_role" do
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user