update using turbo

This commit is contained in:
simon lehericey 2024-01-30 09:56:36 +01:00
parent b7af591e8d
commit 928c12e065
No known key found for this signature in database
GPG key ID: CDE670D827C7B3C5
3 changed files with 66 additions and 49 deletions

View file

@ -37,20 +37,33 @@ module Administrateurs
end end
def update def update
if invalid_network? @libelle_id_procedures = libelle_id_procedures
@invalid_network = true
return render :edit h = {}
if !params[:networks].nil?
if invalid_network?
@invalid_network_message = "vous devez entrer des adresses ipv4 ou ipv6 valides"
return render :edit
end
if @api_token.eternal? && networks.empty?
@invalid_network_message = "Vous ne pouvez pas supprimer les restrictions d'accès à l'API d'un jeton permanent."
@api_token.reload
return render :edit
end
h[:authorized_networks] = networks
end
end end
if @api_token.eternal? && networks.empty? if params[:name].present?
flash[:alert] = "Vous ne pouvez pas supprimer les restrictions d'accès à l'API d'un jeton permanent." h[:name] = name
return render :edit
end end
@api_token.update!(name:, authorized_networks: networks) @api_token.update!(h)
flash[:notice] = "Le jeton d'API a été mis à jour." render :edit
redirect_to profil_path
end end
def destroy def destroy

View file

@ -6,41 +6,47 @@
["Jeton dAPI : #{@api_token.name}"]] } ["Jeton dAPI : #{@api_token.name}"]] }
.fr-container.fr-mt-2w .fr-container.fr-mt-2w
%h1 Modification du jeton d'API « #{@api_token.name} »
= form_with url: admin_api_token_path(@api_token), method: :patch, html: { class: 'fr-mt-2w' } do |f| %turbo-frame#tokenUpdate
.fr-input-group %h1 Modification du jeton d'API « #{@api_token.name} »
= f.label :name, class: 'fr-label' do
= t('name', scope: [:administrateurs, :api_tokens, :nom])
%span.fr-hint-text= t('name-hint', scope: [:administrateurs, :api_tokens, :nom])
= f.text_field :name,
class: 'fr-input width-33',
autocomplete: 'off',
autocapitalize: 'off',
autocorrect: 'off',
spellcheck: false,
required: true,
value: @api_token.name
.fr-input-group.fr-mb-4w{ = form_with url: admin_api_token_path(@api_token), method: :patch, html: { class: 'fr-mt-2w' } do |f|
class: class_names('fr-input-group--error': @invalid_network) } .fr-input-group
= f.label :name, class: 'fr-label' do = f.label :name, class: 'fr-label' do
= @api_token.eternal? ? "Entrez au moins 1 réseau autorisé" : "Entrez les adresses ip autorisées" = t('name', scope: [:administrateurs, :api_tokens, :nom])
%span.fr-hint-text adresses réseaux séparées par des espaces. ex: 176.31.79.200 192.168.33.0/24 2001:41d0:304:400::52f/128 %span.fr-hint-text= t('name-hint', scope: [:administrateurs, :api_tokens, :nom])
= f.text_field :networks, .flex
class: class_names('fr-input': true, 'fr-input--error': @invalid_network), = f.text_field :name,
autocomplete: 'off', class: 'fr-input width-33',
autocapitalize: 'off', autocomplete: 'off',
autocorrect: 'off', autocapitalize: 'off',
spellcheck: false, autocorrect: 'off',
required: @api_token.eternal?, spellcheck: false,
value: @api_token.authorized_networks_for_ui.gsub(/,/, ' ') required: true,
value: @api_token.name
- if @invalid_network %button.fr-btn.fr-btn--secondary.fr-ml-1w Renommer
%p.fr-error-text vous devez entrer des adresses ipv4 ou ipv6 valides
%ul.fr-btns-group.fr-btns-group--inline = form_with url: admin_api_token_path(@api_token), method: :patch, html: { class: 'fr-mt-2w' } do |f|
%li .fr-input-group.fr-mb-4w{
= f.button 'Modifier', type: :submit, class: "fr-btn fr-btn--primary" class: class_names('fr-input-group--error': @invalid_network_message.present?) }
%li = f.label :name, class: 'fr-label' do
= link_to 'Revenir', profil_path, class: "fr-btn fr-btn--secondary" = @api_token.eternal? ? "Entrez au moins 1 réseau autorisé" : "Entrez les adresses ip autorisées"
%span.fr-hint-text adresses réseaux séparées par des espaces. ex: 176.31.79.200 192.168.33.0/24 2001:41d0:304:400::52f/128
.flex
= f.text_field :networks,
class: class_names('fr-input': true, 'fr-input--error': @invalid_network_message.present?),
autocomplete: 'off',
autocapitalize: 'off',
autocorrect: 'off',
spellcheck: false,
value: @api_token.authorized_networks_for_ui.gsub(/,/, ' ')
%button.fr-btn.fr-btn--secondary.fr-ml-1w Modifier
- if @invalid_network_message.present?
%p.fr-error-text= @invalid_network_message
%ul.fr-btns-group.fr-btns-group--inline
%li
= link_to 'Revenir', profil_path, class: "fr-btn fr-btn--secondary"

View file

@ -119,9 +119,8 @@ describe Administrateurs::APITokensController, type: :controller do
before { subject; token.reload } before { subject; token.reload }
it 'does not update a token' do it 'does not update a token' do
expect(token.name).not_to eq('new name') expect(token.authorized_networks).to be_blank
expect(assigns(:invalid_network)).to be true expect(assigns(:invalid_network_message)).to eq('vous devez entrer des adresses ipv4 ou ipv6 valides')
expect(response).to render_template(:edit)
end end
end end
@ -135,9 +134,8 @@ describe Administrateurs::APITokensController, type: :controller do
let(:networks) { '' } let(:networks) { '' }
it 'does not update a token' do it 'does not update a token' do
expect(token.name).not_to eq('new name') expect(token.authorized_networks).to eq([IPAddr.new('118.218.200.200')])
expect(flash[:alert]).to eq("Vous ne pouvez pas supprimer les restrictions d'accès à l'API d'un jeton permanent.") expect(assigns(:invalid_network_message)).to eq("Vous ne pouvez pas supprimer les restrictions d'accès à l'API d'un jeton permanent.")
expect(response).to render_template(:edit)
end end
end end
end end