Add registration

This commit is contained in:
julien committed 2026-11-03 12:08:57 +01:00
1 parent 137e53618b
commit e5ec0ff1a1
5 files changed
+291 -125

No files matched your search

+92 -1
View File
@@ -19,7 +19,17 @@ class Netig < Roda
plugin :rodauth do
db DB
enable :login, :logout
enable :login, :logout, :create_account, :verify_account
domain ENV.fetch("RODAUTH_DOMAIN")
account_unverified_status_value 1
account_open_status_value 2
base_url ENV.fetch("BASE_URL")
hmac_secret ENV.fetch("RODAUTH_HMAC_SECRET")
email_from "NETig <noreply@netig.net>"
login_label "Adresse électronique"
password_label "Mot de passe"
@@ -28,6 +38,87 @@ class Netig < Roda
login_redirect "/temporary_page"
login_return_to_requested_location? true
create_account_page_title "Créer un compte — NETig"
create_account_button "Créer mon compte"
create_account_link_text "Créer un compte"
verify_account_page_title "Vérifier votre adresse électronique — NETig"
verify_account_button "Confirmer mon adresse électronique"
verify_account_set_password? true
verify_account_email_subject "Confirmez votre adresse électronique — NETig"
verify_account_email_body do
<<~EMAIL
Bonjour,
Pour vérifier votre adresse électronique et activer votre compte
NETig, ouvrez le lien suivant :
#{verify_account_email_link}
Si vous n'êtes pas à l'origine de cette demande, ignorez ce message.
L'équipe NETig
EMAIL
end
verify_account_email_sent_notice_flash(
"Un courriel de vérification vient de vous être envoyé."
)
verify_account_notice_flash(
"Votre adresse électronique est maintenant vérifiée."
)
before_create_account do
case param("kind")
when "individual"
throw_error_status(
422, "first_name", "doit être renseigné"
) if param("first_name").to_s.strip.empty?
throw_error_status(
422, "last_name", "doit être renseigné"
) if param("last_name").to_s.strip.empty?
when "organization"
throw_error_status(
422, "organization_name", "doit être renseignée"
) if param("organization_name").to_s.strip.empty?
else
throw_error_status(
422, "kind", "choisissez un type de compte"
)
end
end
after_create_account do
member = if param("kind") == "individual"
{
kind: "individual",
first_name: param("first_name").to_s.strip,
last_name: param("last_name").to_s.strip,
organization_name: nil
}
else
{
kind: "organization",
first_name: nil,
last_name: nil,
organization_name: param("organization_name").to_s.strip
}
end
db[:members].insert(
member.merge(
account_id: account[:id],
core_member: false
)
)
end
already_logged_in do
request.redirect("/")
end