From 7a4805f749a9b55a01d508e099f021867cfa72d6 Mon Sep 17 00:00:00 2001 From: julien Date: Mon, 2 Nov 2026 11:11:42 +0100 Subject: [PATCH] Add rodauth --- Gemfile | 4 ++++ Gemfile.lock | 8 ++++++++ db/migrations/001_create_rodauth_tables.rb | 19 +++++++++++++++++++ db/migrations/001_create_test_records.rb | 12 ------------ netig.rb | 17 +++++++++++++++++ views/layout.erb | 2 +- 6 files changed, 49 insertions(+), 13 deletions(-) create mode 100644 db/migrations/001_create_rodauth_tables.rb delete mode 100644 db/migrations/001_create_test_records.rb diff --git a/Gemfile b/Gemfile index d68a777..f745dac 100644 --- a/Gemfile +++ b/Gemfile @@ -24,3 +24,7 @@ gem "mail" # Markdown gem "commonmarker" + +# Authentication +gem "rodauth" +gem "bcrypt" diff --git a/Gemfile.lock b/Gemfile.lock index ee6f8ce..2e1c5fb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,7 @@ GEM remote: https://rubygems.org/ specs: + bcrypt (3.1.22) bigdecimal (4.1.3) commonmarker (2.10.1-x86_64-linux) date (3.6.0) @@ -53,6 +54,9 @@ GEM io-console (~> 0.5) roda (3.109.0) rack + rodauth (2.49.0) + roda (>= 2.6.0) + sequel (>= 4) sequel (5.110.0) bigdecimal sqlite3 (2.10.2-x86_64-linux-gnu) @@ -64,6 +68,7 @@ PLATFORMS x86_64-linux DEPENDENCIES + bcrypt (~> 3.1) commonmarker dotenv erubi @@ -72,11 +77,13 @@ DEPENDENCIES puma rackup roda + rodauth (~> 2.49) sequel sqlite3 tilt CHECKSUMS + bcrypt (3.1.22) sha256=1f0072e88c2d705d94aff7f2c5cb02eb3f1ec4b8368671e19112527489f29032 bigdecimal (4.1.3) sha256=61ebe1e5e559bdc3cc6f2c0ee7f427321fc838f59611c294356eb04d6e21cf66 commonmarker (2.10.1-x86_64-linux) sha256=4b2c4b9084baca131146c92dde02bcb40ef3d2768a6772648c1970bb51842734 date (3.6.0) sha256=18ac945c4e24ebd93534f8eab8c2fd8c5604b3e977105b3798d62a1e8d27b580 @@ -103,6 +110,7 @@ CHECKSUMS rdoc (8.1.0) sha256=befc37880a5cfd36dcb176c748b5fd5ee39dd3536a75e81824e4972ce230f60a reline (0.7.0) sha256=5b012d8e55dbf9d450f12bde2cf7d15ff546ae80b3f8f3b30e570d431815583d roda (3.109.0) sha256=470f60355043a7732edb08ece2d12eb2e6912866ac87106c92ded5f6f8a5a8dc + rodauth (2.49.0) sha256=c4450072ca7b01ba59e51f0c41fbbd0884a2356ccccf141519b45857d646a255 sequel (5.110.0) sha256=c316335b352adb4109bb02ade237b1a6dbd493493def34542ce05893f62138ae sqlite3 (2.10.2-x86_64-linux-gnu) sha256=ca92731ab464df9cae503fa1a439a549e2724f6953c8c05a7769b59366e38f15 tilt (2.9.0) sha256=da5735d0280bba96e9a91041bb14aee435ccad5c17b0fa519249ae543d9aa3a5 diff --git a/db/migrations/001_create_rodauth_tables.rb b/db/migrations/001_create_rodauth_tables.rb new file mode 100644 index 0000000..2e4a2ec --- /dev/null +++ b/db/migrations/001_create_rodauth_tables.rb @@ -0,0 +1,19 @@ +Sequel.migration do + up do + create_table(:accounts) do + primary_key :id, type: :Bignum + String :email, null: false + + index :email, unique: true + end + + create_table(:account_password_hashes) do + foreign_key :id, :accounts, primary_key: true, type: :Bignum + String :password_hash, null: false + end + end + + down do + drop_table(:account_password_hashes, :accounts) + end +end diff --git a/db/migrations/001_create_test_records.rb b/db/migrations/001_create_test_records.rb deleted file mode 100644 index 12ceb81..0000000 --- a/db/migrations/001_create_test_records.rb +++ /dev/null @@ -1,12 +0,0 @@ -Sequel.migration do - up do - create_table(:test_records) do - primary_key :id - String :message, null: false - end - end - - down do - drop_table(:test_records) - end -end diff --git a/netig.rb b/netig.rb index e1868a1..f374b31 100644 --- a/netig.rb +++ b/netig.rb @@ -1,4 +1,5 @@ require "roda" +require "rodauth" require_relative "lib/database" require_relative "config/mail" @@ -15,9 +16,25 @@ class Netig < Roda plugin :hash_branches plugin :flash + plugin :rodauth do + db DB + + enable :login, :logout + + login_label "Adresse électronique" + password_label "Mot de passe" + login_button "Se connecter" + + already_logged_in do + request.redirect("/") + end + end + require_relative "routes/contact" route do |r| + r.rodauth + r.public check_csrf! r.hash_branches diff --git a/views/layout.erb b/views/layout.erb index ff423da..c590395 100644 --- a/views/layout.erb +++ b/views/layout.erb @@ -40,7 +40,7 @@ NETmail ↗ NETcloud ↗ NETgit ↗ - Mon espace ➜ + Mon espace ➜