Profil: display token only once

This commit is contained in:
simon lehericey 2018-08-24 14:19:44 +02:00
parent bd04972f65
commit 17285b0368
6 changed files with 54 additions and 37 deletions

View file

@ -0,0 +1,15 @@
@import "constants";
#profil-page {
b {
font-weight: bold;
}
.card {
margin: 3 * $default-spacer 0;
}
p {
margin: 16px auto;
}
}

View file

@ -1,13 +1,13 @@
module NewAdministrateur
class ProfilController < AdministrateurController
def show
@administrateur = current_administrateur
end
def renew_api_token
flash[:notice] = "Votre token d'API a été regénéré."
current_administrateur.renew_api_token
redirect_to profil_path
@token = current_administrateur.api_token
flash.now.notice = 'Votre jeton a été regénéré.'
render :show
end
end
end

View file

@ -1,11 +1,21 @@
#profil-page.container
%h1 Profil
%p API TOKEN : #{@administrateur.api_token}
.card
.card-title Jeton d'identification de l'API (token)
%p Ce jeton est nécessaire pour effectuer des appels vers l'API de demarches-simplifiees.fr.
= link_to "Regénérer mon token",
renew_api_token_path,
method: :post,
class: "button primary",
data: { confirm: "Confirmez-vous la regénération de votre token ? Les applications qui l'utilisent actuellement seront bloquées.",
disable: true }
- if defined?(@token)
%p Jeton : <b>#{@token}</b>
%p Pour des raisons de sécurité, ce jeton ne sera plus ré-affiché, notez-le bien.
- else
%p Pour des raisons de sécurité, nous ne pouvons vous l'afficher que lors de sa génération.
%p Attention, si vous avez déjà des applications qui utilisent votre jeton, le regénérer bloquera leurs accès à l'API.
= link_to "Regénérer et afficher mon jeton",
renew_api_token_path,
method: :post,
class: "button primary",
data: { confirm: "Confirmez-vous la regénération de votre jeton ? Les applications qui l'utilisent actuellement seront bloquées.",
disable: true }

View file

@ -1,16 +0,0 @@
require 'spec_helper'
describe Admin::ProfileController, type: :controller do
it { expect(described_class).to be < AdminController }
let(:administrateur) { create(:administrateur) }
before { sign_in(administrateur) }
describe 'POST #renew_api_token' do
subject { post :renew_api_token }
it { expect{ subject }.to change { administrateur.reload.api_token } }
it { subject; expect(response.status).to redirect_to(profil_path) }
end
end

View file

@ -0,0 +1,19 @@
require 'spec_helper'
describe NewAdministrateur::ProfilController, type: :controller do
let(:administrateur) { create(:administrateur) }
before { sign_in(administrateur) }
describe 'POST #renew_api_token' do
before do
allow(administrateur).to receive(:renew_api_token)
allow(controller).to receive(:current_administrateur) { administrateur }
post :renew_api_token
end
it { expect(administrateur).to have_received(:renew_api_token) }
it { expect(response.status).to render_template(:show) }
it { expect(flash.notice).to eq('Votre jeton a été regénéré.') }
end
end

View file

@ -1,11 +0,0 @@
require 'spec_helper'
describe 'admin/profile/show.html.haml', type: :view do
let(:token) { 'super_token' }
let(:admin) { create(:administrateur, api_token: token) }
before do
assign(:administrateur, admin)
render
end
it { expect(rendered).to have_content(token) }
end