mirror of
https://github.com/docusealco/docuseal.git
synced 2026-06-23 04:10:11 +00:00
download users csv
This commit is contained in:
@@ -16,7 +16,19 @@ class UsersController < ApplicationController
|
||||
@users.active.where.not(role: 'integration')
|
||||
end
|
||||
|
||||
@pagy, @users = pagy(@users.preload(account: :account_accesses).where(account: current_account).order(id: :desc))
|
||||
@users = @users.preload(account: :account_accesses).where(account: current_account).order(id: :desc)
|
||||
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
@pagy, @users = pagy(@users)
|
||||
end
|
||||
|
||||
if current_ability.can?(:manage, current_account)
|
||||
format.csv do
|
||||
send_data Users.generate_csv(@users), filename: "users-#{Time.current.iso8601}.csv", type: 'text/csv'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def new; end
|
||||
|
||||
@@ -1,15 +1,27 @@
|
||||
<div class="flex items-center space-x-1">
|
||||
<% if (is_with_download = can?(:manage, :download_users) && can?(:manage, current_account)) %>
|
||||
<%= button_to(t(:download), url_for(format: :csv), class: 'link text-sm', form: { class: 'flex' }, method: :get) %>
|
||||
<% end %>
|
||||
<% if %w[archived integration].include?(params[:status]) %>
|
||||
<% if is_with_download %>
|
||||
<span class="text-neutral-700">|</span>
|
||||
<% end %>
|
||||
<%= link_to t('view_active'), settings_users_path, class: 'link text-sm' %>
|
||||
<% else %>
|
||||
<% archived_exists = current_account.users.archived.where.not(role: 'integration').exists? %>
|
||||
<% if current_account.users.active.exists?(role: 'integration') %>
|
||||
<% if (integration_exists = current_account.users.active.exists?(role: 'integration')) %>
|
||||
<% if is_with_download %>
|
||||
<span class="text-neutral-700">|</span>
|
||||
<% end %>
|
||||
<%= link_to t('view_embedding_users'), settings_integration_users_path, class: 'link text-sm' %>
|
||||
<% if archived_exists %>
|
||||
<span class="text-neutral-700">|</span>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if archived_exists %>
|
||||
<% if !integration_exists && is_with_download %>
|
||||
<span class="text-neutral-700">|</span>
|
||||
<% end %>
|
||||
<%= link_to t('view_archived'), settings_archived_users_path, class: 'link text-sm' %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Users
|
||||
module_function
|
||||
|
||||
def generate_csv(users)
|
||||
headers = %w[email first_name last_name role current_sign_in_at last_sign_in_at updated_at created_at]
|
||||
|
||||
CSVSafe.generate do |csv|
|
||||
csv << headers
|
||||
|
||||
users.each { |user| csv << user.values_at(*headers) }
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user