Skip to content

Commit

Permalink
Merge pull request #920 from scientist-softserv/i445-remove-roles
Browse files Browse the repository at this point in the history
🎁 i445 remove roles
  • Loading branch information
kirkkwang authored Dec 7, 2023
2 parents b6f0a7c + 61da009 commit ef0af1f
Show file tree
Hide file tree
Showing 27 changed files with 280 additions and 158 deletions.
15 changes: 15 additions & 0 deletions app/assets/stylesheets/hyku.scss
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,21 @@ footer.navbar {
}
}

#manage-users-table > tr > td> ul {
padding: 0 !important;
list-style-type: none;

li {
a > span {
color: red;
}

a:hover {
text-decoration: none;
}
}
}

.user-workflow-roles-table {
td:nth-child(1),
th:nth-child(1) {
Expand Down
17 changes: 17 additions & 0 deletions app/controllers/admin/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

module Admin
class UsersController < AdminController
before_action :ensure_admin!, except: [:remove_role]
before_action :load_user, only: [:destroy]

# NOTE: User creation/invitations handled by devise_invitable
Expand All @@ -26,6 +27,22 @@ def activate
end
end

def remove_role
authorize! :edit, User

user = User.find(params[:id])
role = Role.find(params[:role_id])

if user && role && user.roles.include?(role)
user.remove_role(role.name)
flash[:notice] = "Role '#{role.name}' was successfully removed from user #{user.email}."
else
flash[:alert] = "Failed to remove role from user #{user.email}."
end

redirect_back(fallback_location: root_path)
end

private

def load_user
Expand Down
12 changes: 12 additions & 0 deletions app/presenters/hyrax/admin/users_presenter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,18 @@ def user_roles(user)
user.ability.all_user_and_group_roles
end

# @return [Array] an array of user group role names
def user_group_roles(user)
user.group_roles
end

# @return [Array] an array of user added role names
def user_site_roles(user)
# if the user has a group role that is the same as the site role, we don't want to show the site role
# because if it shows up as a site role and we can delete it, it will cause funky behavior
user.site_roles - user_group_roles(user)
end

def user_groups(user)
user.hyrax_groups
end
Expand Down
25 changes: 21 additions & 4 deletions app/views/hyrax/admin/users/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,16 @@
<th></th>
<th><%= t('.id_label') %></th>
<th><%= t('.group_label') %></th>
<th><%= t('.role_label') %></th>
<th><%= t('.group_role_label') %></th>
<th><%= t('.site_role_label') %></th>
<th><%= t('.access_label') %></th>
<th><%= t('.status_label') %></th>
<% if can? :destroy, User %>
<th><%= t('.action_label') %></th>
<% end %>
</tr>
</thead>
<tbody>
<tbody id="manage-users-table">
<% @presenter.users.each do |user| %>
<tr id="<%= user.email.parameterize %>">
<td><%= link_to hyrax.user_path(user) do %>
Expand All @@ -71,12 +72,28 @@
</ul>
</td>

<td class="roles"><% roles = @presenter.user_roles(user) %>
<td class="group-roles"><% roles = @presenter.user_group_roles(user) %>
<ul><% roles.each do |role| %>
<li><%= role.titleize %></li>
<li><%= role.name.titleize %></li>
<% end %>
</ul>
</td>

<td class="site-roles"><% roles = @presenter.user_site_roles(user) %>
<ul>
<% roles.each do |role| %>
<li>
<%= role.name.titleize %>
<%= link_to main_app.remove_role_admin_user_path(id: user.id, role_id: role.id), method: :delete, data: { confirm: t('hyrax.admin.users.roles.remove.confirmation', user: user.email, role: role.name.titleize) } do %>
<% if current_ability.admin? || (can?(:edit, User) && role.name != 'admin') %>
<span class="glyphicon glyphicon-remove"></span>
<% end %>
<% end %>
</li>
<% end %>
</ul>
</td>

<td>
<%# in the case that a user is created who never signs in, this is necessary %>
<relative-time datetime="<%= @presenter.last_accessed(user).getutc.iso8601 %>" title="<%= @presenter.last_accessed(user).to_formatted_s(:standard) %>">
Expand Down
3 changes: 3 additions & 0 deletions config/locales/de.yml
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,9 @@ de:
active: Aktiv
pending: noch ausstehend
status_label: Status
roles:
remove:
confirmation: Sind Sie sicher, dass Sie die Rolle „%{role}“ vom Benutzer „%{user}“ entfernen möchten?
permissions:
collections:
cannot:
Expand Down
3 changes: 3 additions & 0 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,9 @@ en:
active: Active
pending: Pending
status_label: Status
roles:
remove:
confirmation: Are you sure you want to remove the role "%{role}" from the user "%{user}"?
permissions:
collections:
cannot:
Expand Down
3 changes: 3 additions & 0 deletions config/locales/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,9 @@ es:
active: Activo
pending: Pendiente
status_label: Estado
roles:
remove:
confirmation: ¿Está seguro de que desea eliminar el rol "%{role}" del usuario "%{user}"?
permissions:
collections:
cannot:
Expand Down
3 changes: 3 additions & 0 deletions config/locales/fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,9 @@ fr:
active: actif
pending: en attendant
status_label: Statut
roles:
remove:
confirmation: Êtes-vous sûr de vouloir supprimer le rôle « %{role} » de l'utilisateur « %{user} » ?
permissions:
collections:
cannot:
Expand Down
2 changes: 2 additions & 0 deletions config/locales/hyrax.de.yml
Original file line number Diff line number Diff line change
Expand Up @@ -246,9 +246,11 @@ de:
one: In diesem Repository befindet sich ein <b>%{count}-Benutzer</b> .
other: In diesem Repository befinden sich <b>%{count}-Benutzer</b> .
group_label: Gruppen
group_role_label: Gruppenrollen
id_label: Nutzername
reader_title: Benutzer anzeigen
role_label: Rollen
site_role_label: Site-Rollen
title: Benutzer verwalten
workflow_roles:
header: Workflow-Rollen
Expand Down
3 changes: 2 additions & 1 deletion config/locales/hyrax.en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -256,8 +256,9 @@ en:
one: There is <b>%{count} user</b> in this repository.
other: There are <b>%{count} users</b> in this repository.
id_label: Username
role_label: Roles
group_label: Groups
group_role_label: Group roles
site_role_label: Site roles
title: Manage Users
reader_title: View Users
workflow_roles:
Expand Down
2 changes: 2 additions & 0 deletions config/locales/hyrax.es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -247,9 +247,11 @@ es:
one: Hay <b>usuarios %{count}</b> en este repositorio.
other: Hay <b>usuarios de %{count}</b> en este repositorio.
group_label: Grupos
group_role_label: Roles grupales
id_label: Nombre de usuario
reader_title: Ver usuarios
role_label: Roles
site_role_label: Roles del sitio
title: Administrar usuarios
workflow_roles:
header: Roles de flujo de trabajo
Expand Down
2 changes: 2 additions & 0 deletions config/locales/hyrax.fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -245,9 +245,11 @@ fr:
one: Il y a <b>un utilisateur %{count}</b> dans ce référentiel.
other: Il y <b>a des utilisateurs %{count}</b> dans ce référentiel.
group_label: Groupes
group_role_label: Rôles de groupe
id_label: Nom d'utilisateur
reader_title: Afficher les utilisateurs
role_label: Les rôles
site_role_label: Rôles sur le site
title: gérer les utilisateurs
workflow_roles:
header: Rôles de workflow
Expand Down
2 changes: 2 additions & 0 deletions config/locales/hyrax.it.yml
Original file line number Diff line number Diff line change
Expand Up @@ -247,9 +247,11 @@ it:
one: C'è <b>un utente %{count}</b> in questo repository.
other: Ci sono <b>utenti %{count}</b> in questo repository.
group_label: Gruppi
group_role_label: Ruoli del gruppo
id_label: Nome utente
reader_title: Visualizza utenti
role_label: ruoli
site_role_label: Ruoli del sito
title: Gestisci utenti
workflow_roles:
header: Ruoli del flusso di lavoro
Expand Down
2 changes: 2 additions & 0 deletions config/locales/hyrax.pt-BR.yml
Original file line number Diff line number Diff line change
Expand Up @@ -247,9 +247,11 @@ pt-BR:
one: Há <b>um usuário %{count}</b> neste repositório.
other: Existem <b>usuários %{count}</b> neste repositório.
group_label: Grupos
group_role_label: Funções do grupo
id_label: Nome do usuário
reader_title: Ver usuários
role_label: Funções
site_role_label: Funções do site
title: Gerenciar usuários
workflow_roles:
header: Funções de fluxo de trabalho
Expand Down
2 changes: 2 additions & 0 deletions config/locales/hyrax.zh.yml
Original file line number Diff line number Diff line change
Expand Up @@ -247,9 +247,11 @@ zh:
one: 该存储库中有<b>%{count}个用户</b> 。
other: 此存储库中有<b>%{count}个用户</b> 。
group_label: 团体
group_role_label: 团体角色
id_label: 用户名
reader_title: 查看用户
role_label: 的角色
site_role_label: 站点角色
title: 管理用户
workflow_roles:
header: 工作流程角色
Expand Down
3 changes: 3 additions & 0 deletions config/locales/it.yml
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,9 @@ it:
active: Attivo
pending: in attesa di
status_label: Stato
roles:
remove:
confirmation: Sei sicuro di voler rimuovere il ruolo "%{role}" dall'utente "%{user}"?
permissions:
collections:
cannot:
Expand Down
3 changes: 3 additions & 0 deletions config/locales/pt-BR.yml
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,9 @@ pt-BR:
active: Ativo
pending: Pendente
status_label: Status
roles:
remove:
confirmation: Tem certeza de que deseja remover a função "%{role}" do usuário "%{user}"?
permissions:
collections:
cannot:
Expand Down
51 changes: 26 additions & 25 deletions config/locales/simple_form.de.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,40 @@ de:
hints:
account:
admin_emails: Geben Sie jeweils eine E-Mail-Adresse ein
is_public: 'Können Benutzer Ihre Seite auf der Startseite entdecken oder auf Ihre Seiten zugreifen, ohne einen speziellen Benutzernamen / Passwort?'
allow_signup: Benutzern erlauben, sich für Ihr Repository anzumelden
cache_api: Cache für API-Endpunkte aktivieren. Experimentell
contact_email: Die E-Mail-Adresse, von der Systembenachrichtigungen gesendet werden. Eine zusätzliche Konfiguration ist erforderlich, um eine Adresse von anderen Domänen als der Domäne der Website hinzuzufügen
contact_email_to: Die E-Mail-Adresse, an die über die Kontaktseite gesendete Nachrichten gesendet werden
doi_reader: Zeigen Sie die Fähigkeit an, von Datacite zu lesen, um Datensätze zu füllen. WIP nicht verwenden
doi_writer: DOIs für Datensätze schreiben. WIP nicht verwenden
email_format: Legen Sie eine Liste von E-Mail-Domänen fest, die sich für dieses Repository anmelden dürfen, z. B. (@ubiquitypress.com @gmail.com). Lassen Sie jeweils ein Leerzeichen zwischen den Domänen.
email_subjet_prefix: Zeichenfolge, die vor System-E-Mail-Betreffs eingefügt wird.
enable_oai_metadata: OAI-Link aktivieren oder deaktivieren
fcrepo_endpoint:
base_path: Der Fedora-Basispfad sollte mit einem Schrägstrich beginnen UND nicht mit einem Schrägstrich enden
url: Die Fedora-URL sollte nicht mit einem Schrägstrich enden
name: Ein einzelner oder mit Bindestrichen versehener Name, der für technische Aspekte des Repositories verwendet wird (z.B. "acme" oder "acme-bibliothek").
gtm_id: Die ID Ihres Google Tag Manager-Kontos
file_acl: Deaktivieren Sie dies, wenn Sie ein Dateisystem wie Samba oder NFS verwenden, das das Festlegen von Zugriffssteuerungslisten nicht unterstützt
file_size_limit: Dies sollte mindestens auf 536870912000 eingestellt sein
geonames_username: Registrieren Sie sich unter http://www.geonames.org/manageaccount
google_analytics_id: Die ID Ihres Google Analytics-Kontos
google_oauth_app_name: Der Name der Google-Anwendung in der Google API-Konsole
google_oauth_app_version: Die Version der Google-Anwendung in der Google API-Konsole
google_oauth_private_key_value: Der Wert der p12-Datei mit Base64-Verschlüsselung. (Sie können den privaten Schlüsselwert ODER den Pfad verwenden; der Wert hat Vorrang)
google_oauth_client_email: OAuth-Client-E-Mail-Adresse
google_oauth_private_key_path: Der vollständige Pfad zu Ihrer p12-Schlüsseldatei. (Sie können den privaten Schlüsselwert ODER den Pfad verwenden; der Wert hat Vorrang)
google_oauth_private_key_secret: Das Geheimnis, das Sie beim Erstellen des p12-Schlüssels angegeben haben
google_oauth_client_email: OAuth-Client-E-Mail-Adresse
contact_email_to: Die E-Mail-Adresse, an die über die Kontaktseite gesendete Nachrichten gesendet werden
weekly_email_list: Liste von E-Mail-Adressen, an die der wöchentliche Bericht gesendet wird. Lassen Sie jeweils ein Leerzeichen zwischen den E-Mails
google_oauth_private_key_value: Der Wert der p12-Datei mit Base64-Verschlüsselung. (Sie können den privaten Schlüsselwert ODER den Pfad verwenden; der Wert hat Vorrang)
gtm_id: Die ID Ihres Google Tag Manager-Kontos
is_public: Können Benutzer Ihre Seite auf der Startseite entdecken oder auf Ihre Seiten zugreifen, ohne einen speziellen Benutzernamen / Passwort?
locale_name: 'Der Name des mandantenspezifischen Gebietsschemasuffix, der ihren locale.yml-Dateien hinzugefügt wird. Es sollten nur alphabetische Zeichen hinzugefügt werden, keine Symbole oder Zahlen, diese werden dann großgeschrieben.
'
monthly_email_list: Liste von E-Mail-Adressen, an die der monatliche Bericht gesendet wird. Lassen Sie jeweils ein Leerzeichen zwischen den E-Mails
yearly_email_list: Liste von E-Mail-Adressen, an die der jährliche Bericht gesendet wird. Lassen Sie jeweils ein Leerzeichen zwischen den E-Mails
email_format: Legen Sie eine Liste von E-Mail-Domänen fest, die sich für dieses Repository anmelden dürfen, z. B. (@ubiquitypress.com @gmail.com). Lassen Sie jeweils ein Leerzeichen zwischen den Domänen.
allow_signup: Benutzern erlauben, sich für Ihr Repository anzumelden
enable_oai_metadata: OAI-Link aktivieren oder deaktivieren
shared_login: Gemeinsamen Login aktivieren oder deaktivieren
file_size_limit: Dies sollte mindestens auf 536870912000 eingestellt sein
locale_name: |
Der Name des mandantenspezifischen Gebietsschemasuffix, der ihren locale.yml-Dateien hinzugefügt wird. Es sollten nur alphabetische Zeichen hinzugefügt werden, keine Symbole oder Zahlen, diese werden dann großgeschrieben.
name: Ein einzelner oder mit Bindestrichen versehener Name, der für technische Aspekte des Repositories verwendet wird (z.B. "acme" oder "acme-bibliothek").
oai_admin_email: OAI-Endpunkt-Kontakt-E-Mail-Adresse
doi_reader: Zeigen Sie die Fähigkeit an, von Datacite zu lesen, um Datensätze zu füllen. WIP nicht verwenden
doi_writer: DOIs für Datensätze schreiben. WIP nicht verwenden
cache_api: Cache für API-Endpunkte aktivieren. Experimentell
email_subjet_prefix: Zeichenfolge, die vor System-E-Mail-Betreffs eingefügt wird.
contact_email: Die E-Mail-Adresse, von der Systembenachrichtigungen gesendet werden. Eine zusätzliche Konfiguration ist erforderlich, um eine Adresse von anderen Domänen als der Domäne der Website hinzuzufügen
geonames_username: Registrieren Sie sich unter http://www.geonames.org/manageaccount
file_acl: Deaktivieren Sie dies, wenn Sie ein Dateisystem wie Samba oder NFS verwenden, das das Festlegen von Zugriffssteuerungslisten nicht unterstützt
shared_login: Gemeinsamen Login aktivieren oder deaktivieren
ssl_configured: Setzen Sie es auf wahr, wenn Sie https verwenden
weekly_email_list: Liste von E-Mail-Adressen, an die der wöchentliche Bericht gesendet wird. Lassen Sie jeweils ein Leerzeichen zwischen den E-Mails
yearly_email_list: Liste von E-Mail-Adressen, an die der jährliche Bericht gesendet wird. Lassen Sie jeweils ein Leerzeichen zwischen den E-Mails
hyku_group:
description: Eine kurze Zusammenfassung der Rolle der Gruppe
user:
Expand All @@ -51,11 +52,11 @@ de:
fcrepo_endpoint:
base_path: Basispfad
url: URL
gtm_id: Google Tag Manager
name: Kurzname
solr_endpoint:
url: URL
tenant: Mandant UUID
gtm_id: Google Tag Manager
add_user_to_group:
user_ids: Benutzer-ID
defaults:
Expand All @@ -73,11 +74,11 @@ de:
email: E-Mail-Adresse
user_search:
uq: Benutzer suchen
'no': 'Nein'
'no': Nein
placeholders:
user_search:
uq: Name oder Benutzername
required:
mark: "*"
text: erforderlich
'yes': 'Ja'
'yes': Ja
Loading

0 comments on commit ef0af1f

Please sign in to comment.