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 " 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