174 lines
4.3 KiB
Ruby
174 lines
4.3 KiB
Ruby
require "roda"
|
|
require "rodauth"
|
|
|
|
require_relative "lib/database"
|
|
require_relative "config/mail"
|
|
require_relative "lib/contact_form"
|
|
require_relative "lib/contact_mailer"
|
|
require_relative "lib/document_renderer"
|
|
|
|
class Netig < Roda
|
|
plugin :render, escape: true
|
|
plugin :public
|
|
plugin :default_headers, "Content-Type" => "text/html; charset=utf-8"
|
|
plugin :sessions, secret: ENV.fetch("SESSION_SECRET")
|
|
plugin :route_csrf, csrf_failure: :empty_403
|
|
plugin :hash_branches
|
|
plugin :flash
|
|
|
|
plugin :rodauth do
|
|
db DB
|
|
|
|
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"
|
|
login_button "Se connecter"
|
|
|
|
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
|
|
|
|
logout_redirect "/"
|
|
end
|
|
|
|
require_relative "lib/authorization"
|
|
require_relative "routes/noyau"
|
|
require_relative "routes/contact"
|
|
|
|
route do |r|
|
|
r.rodauth
|
|
|
|
r.public
|
|
check_csrf!
|
|
r.hash_branches
|
|
|
|
r.root do
|
|
@canonical_url = "https://netig.net/"
|
|
view "index"
|
|
end
|
|
|
|
r.get "statutes" do
|
|
@page_title = "Statuts — NETig"
|
|
@page_description = "Statuts de l'association NETig."
|
|
@canonical_url = "https://netig.net/statutes"
|
|
|
|
@document_html = DocumentRenderer.render(:statutes)
|
|
|
|
view "document"
|
|
end
|
|
|
|
r.get "legal" do
|
|
@page_title = "Mentions légales — NETig"
|
|
@page_description = "Mentions légales de l'association NETig."
|
|
@canonical_url = "https://netig.net/legal"
|
|
|
|
@document_html = DocumentRenderer.render(:legal)
|
|
|
|
view "document"
|
|
end
|
|
|
|
r.get "temporary_page" do
|
|
@page_title = "Page temporaire — NETig"
|
|
@page_description = "Cette page n'existe pas encore."
|
|
@canonical_url = "https://netig.net/temporary_page"
|
|
|
|
view "temporary_page"
|
|
end
|
|
end
|
|
end
|