Files
netig.net/config/rodauth.rb
T
2026-11-03 20:26:52 +01:00

185 lines
4.8 KiB
Ruby

class Netig
plugin :rodauth do
db DB
enable :login, :logout, :create_account, :verify_account
domain ENV.fetch("RODAUTH_DOMAIN")
base_url ENV.fetch("BASE_URL")
hmac_secret ENV.fetch("RODAUTH_HMAC_SECRET")
account_unverified_status_value 1
account_open_status_value 2
normalize_login { |login| login.to_s.strip.downcase }
email_from "NETig <noreply@netig.net>"
title_instance_variable :@page_title
# Connexion
login_page_title "Connexion — NETig"
login_label "Email"
password_label "Mot de passe"
login_button "Se connecter"
login_notice_flash "Vous êtes maintenant connecté."
login_error_flash "La connexion a échoué."
attempt_to_login_to_unverified_account_error_flash(
"Votre adresse électronique n'a pas encore été vérifiée."
)
login_redirect "/account"
login_return_to_requested_location? true
# Déconnexion
logout_notice_flash "Vous êtes maintenant déconnecté."
# Création de compte
create_account_page_title "Créer un compte — NETig"
create_account_button "Créer mon compte"
create_account_link_text "Créer un compte"
create_account_redirect "/create-account"
create_account_error_flash(
"Impossible de créer votre compte. Vérifiez les informations saisies."
)
before_create_account do
first_name = param("first_name").to_s.strip
last_name = param("last_name").to_s.strip
organization_name = param("organization_name").to_s.strip
individual =
!first_name.empty? &&
!last_name.empty? &&
organization_name.empty?
organization =
first_name.empty? &&
last_name.empty? &&
!organization_name.empty?
unless individual || organization
throw_error_status(
422,
"first_name",
"Renseignez soit le prénom et le nom, soit la dénomination."
)
end
end
after_create_account do
first_name = param("first_name").to_s.strip
last_name = param("last_name").to_s.strip
organization_name = param("organization_name").to_s.strip
member = if organization_name.empty?
{
kind: "individual",
first_name: first_name,
last_name: last_name,
organization_name: nil
}
else
{
kind: "organization",
first_name: nil,
last_name: nil,
organization_name: organization_name
}
end
db[:members].insert(
member.merge(
account_id: account[:id],
core_member: false
)
)
end
# Vérification de l'adresse électronique
verify_account_page_title "Vérifier votre email — NETig"
verify_account_button "Confirmer mon email"
verify_account_set_password? true
verify_account_redirect "/account"
verify_account_email_subject(
"Confirmez votre email — NETig"
)
verify_account_email_body do
<<~EMAIL
Bonjour,
Pour vérifier votre email et activer votre compte
NETig, cliquez sur le lien suivant :
#{verify_account_email_link}
Si vous n'êtes pas à l'origine de cette demande, ignorez ce message.
Le Noyau de NETig
EMAIL
end
verify_account_email_sent_notice_flash(
"Un email de vérification vient de vous être envoyé."
)
verify_account_notice_flash(
"Votre email est maintenant vérifié."
)
verify_account_error_flash(
"Impossible de vérifier votre adresse électronique."
)
no_matching_verify_account_key_error_flash(
"Le lien de vérification est invalide ou a expiré."
)
attempt_to_create_unverified_account_error_flash(
"Un compte utilisant cette adresse attend déjà sa vérification."
)
# Renvoi du courriel de vérification
resend_verify_account_page_title(
"Renvoyer l'email de vérification — NETig"
)
verify_account_resend_explanatory_text(
"Si vous n'avez pas reçu l'email de vérification, indiquez " \
"l'email associé à votre compte pour demander " \
"un nouvel envoi."
)
verify_account_resend_button "Renvoyer l'email"
verify_account_resend_link_text(
"Renvoyer l'email de vérification"
)
verify_account_resend_error_flash(
"Impossible de renvoyer l'email de vérification. " \
"Vérifiez l'email saisi ou réessayez plus tard."
)
verify_account_email_recently_sent_error_flash(
"Un email de vérification vient de vous être envoyé. " \
"Veuillez patienter avant d'en demander un autre."
)
verify_account_email_sent_redirect "/verify-account-resend"
verify_account_email_recently_sent_redirect "/verify-account-resend"
# Sessions
already_logged_in do
request.redirect("/account")
end
end
end