1
0
Fork 0
This repository has been archived on 2023-03-28. You can view files and clone it, but cannot push or open issues or pull requests.
lpr-partynest/app/controllers/staffs/x509_certificates_controlle...

64 lines
1.5 KiB
Ruby

# frozen_string_literal: true
class Staffs::X509CertificatesController < ApplicationController
before_action :set_x509_certificate, except: %i[index new create]
# GET /staff/x509_certificates
def index
authorize %i[staff x509_certificate]
@x509_certificates = policy_scope(
X509Certificate,
policy_scope_class: Staff::X509CertificatePolicy::Scope,
).page(params[:page])
end
# GET /staff/x509_certificates/:id
def show
authorize [:staff, @x509_certificate]
end
# GET /staff/x509_certificates/new
def new
@x509_certificate_form = X509CertificateForm.new
authorize [:staff, @x509_certificate_form]
end
# POST /staff/x509_certificates
def create
@x509_certificate_form =
X509CertificateForm.new x509_certificate_form_params
authorize [:staff, @x509_certificate_form]
return render :new unless @x509_certificate_form.valid?
result = CreateRSAKeysAndX509SelfSignedCertificate.call \
@x509_certificate_form.attributes.merge(account: current_account)
redirect_to after_create_url result.certificate
end
private
def set_x509_certificate
@x509_certificate = X509Certificate.find params[:id]
end
def x509_certificate_form_params
params.require(:x509_certificate).permit(
:distinguished_name,
:not_before,
:not_after,
)
end
def after_create_url(certificate)
staff_x509_certificate_url(
certificate,
private_key_pem_secret: Base64.urlsafe_encode64(
certificate.asymmetric_key.private_key_pem_secret,
),
)
end
end