From 491457c50e8a5cd4296b686be9a6b9e94ef53529 Mon Sep 17 00:00:00 2001 From: julien Date: Tue, 3 Nov 2026 20:52:39 +0100 Subject: [PATCH] Display membership --- config/rodauth.rb | 2 +- public/css/style.css | 5 +++++ routes/account.rb | 36 ++++++++++++++++++++++++++++++-- views/account.erb | 49 +++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 86 insertions(+), 6 deletions(-) diff --git a/config/rodauth.rb b/config/rodauth.rb index 1ea15c4..6097f6e 100644 --- a/config/rodauth.rb +++ b/config/rodauth.rb @@ -23,7 +23,7 @@ class Netig password_label "Mot de passe" login_button "Se connecter" - login_notice_flash "Vous êtes maintenant connecté." + login_notice_flash nil login_error_flash "La connexion a échoué." attempt_to_login_to_unverified_account_error_flash( diff --git a/public/css/style.css b/public/css/style.css index 6ce203e..9476521 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -305,9 +305,14 @@ summary:focus-visible { display: inline-block; padding: 10px 16px; border: 2px solid var(--color-accent); + border-radius: 0; background: var(--color-accent); color: var(--color-background); + font: inherit; font-weight: 700; + line-height: 1.4; + text-align: center; + cursor: pointer; transition: filter 0.2s ease; } diff --git a/routes/account.rb b/routes/account.rb index 75e0fcb..bbfaeea 100644 --- a/routes/account.rb +++ b/routes/account.rb @@ -2,15 +2,47 @@ class Netig hash_branch "account" do |r| rodauth.require_account + member = DB[:members] + .where(account_id: rodauth.session_value) + .first + + r.halt [404, {}, ["Fiche membre introuvable."]] unless member + @page_title = "Mon espace — NETig" - @page_description = "Gérez vos informations personnelles, suivez votre adhésion et retrouvez les services NETig accessibles." + @page_description = "Consultez vos informations personnelles et suivez votre adhésion à l'association NETig." @canonical_url = "https://netig.net/account" r.is do r.get do + @membership = DB[:memberships] + .where(member_id: member[:id]) + .order(Sequel.desc(:requested_at), Sequel.desc(:id)) + .first + view "account" end end + + r.post "membership" do + active_membership = DB[:memberships] + .where( + member_id: member[:id], + status: %w[pending accepted] + ) + .first + + if active_membership + flash["error"] = "Une demande d'adhésion est déjà en cours ou acceptée." + else + begin + DB[:memberships].insert(member_id: member[:id]) + flash["notice"] = "Votre demande d'adhésion a été transmise au Noyau." + rescue Sequel::UniqueConstraintViolation + flash["error"] = "Une demande d'adhésion est déjà en cours." + end + end + + r.redirect "/account" + end end end - diff --git a/views/account.erb b/views/account.erb index 8b05b8b..6605e26 100644 --- a/views/account.erb +++ b/views/account.erb @@ -1,7 +1,48 @@
-
+

Mon espace

-

Retrouvez vos informations personnelles et gérez votre adhésion.

+ + <% if flash["notice"] || flash["error"] %> +
+ <% if notice = flash["notice"] %> +

<%= notice %>

+ <% end %> + + <% if error = flash["error"] %> + + <% end %> +
+ <% end %> + +

+ Retrouvez vos informations personnelles et suivez votre adhésion. +

+ +
+

Mon adhésion

+ + <% if @membership.nil? %> +

Vous n'avez pas encore demandé à adhérer à NETig.

+ + <% elsif @membership[:status] == "pending" %> +

Votre demande d'adhésion est en cours d'examen par le Noyau.

+ + <% elsif @membership[:status] == "accepted" %> +

Votre adhésion à NETig est acceptée.

+ + <% elsif @membership[:status] == "rejected" %> +

Votre demande d'adhésion a été refusée.

+ <% end %> + + <% if @membership.nil? || @membership[:status] == "rejected" %> +
+ <%== rodauth.csrf_tag %> + +
+ <% end %> +
<% if core_member? %>
@@ -11,7 +52,9 @@ Accédez aux outils de gestion et de travail collectif du Noyau.

- Espace du Noyau → + + Espace du Noyau → +
<% end %>