70 lines
1.6 KiB
Ruby
70 lines
1.6 KiB
Ruby
class Admin::TenantsController < Admin::BaseController
|
|
load_and_authorize_resource
|
|
|
|
def index
|
|
@tenants = @tenants.order(:name)
|
|
end
|
|
|
|
def new
|
|
end
|
|
|
|
def edit
|
|
end
|
|
|
|
def create
|
|
if @tenant.save
|
|
update_default_tenant_administrator
|
|
redirect_to admin_tenants_path, notice: t("admin.tenants.create.notice")
|
|
else
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def update
|
|
if @tenant.update(tenant_params)
|
|
redirect_to admin_tenants_path, notice: t("admin.tenants.update.notice")
|
|
else
|
|
render :edit
|
|
end
|
|
end
|
|
|
|
def hide
|
|
@tenant.hide
|
|
|
|
respond_to do |format|
|
|
format.html { redirect_to admin_tenants_path, notice: t("admin.tenants.hide.notice") }
|
|
format.js { render template: "admin/tenants/toggle_enabled" }
|
|
end
|
|
end
|
|
|
|
def restore
|
|
@tenant.restore
|
|
|
|
respond_to do |format|
|
|
format.html { redirect_to admin_tenants_path, notice: t("admin.tenants.restore.notice") }
|
|
format.js { render template: "admin/tenants/toggle_enabled" }
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def tenant_params
|
|
params.require(:tenant).permit(:name, :schema, :schema_type)
|
|
end
|
|
|
|
def update_default_tenant_administrator
|
|
tenant_administrator_credentials = {
|
|
email: current_user.email,
|
|
username: current_user.username,
|
|
encrypted_password: current_user.encrypted_password
|
|
}
|
|
|
|
Tenant.switch(@tenant.schema) do
|
|
default_admin_account = User.administrators.first
|
|
default_admin_account.skip_confirmation_notification!
|
|
default_admin_account.update!(tenant_administrator_credentials)
|
|
default_admin_account.confirm
|
|
end
|
|
end
|
|
end
|