Add member account
This commit is contained in:
1 parent
bf633b7060
commit
9ea0bee39d
8 files changed
+139
-23
No files matched your search
+37
-7
@@ -11,7 +11,7 @@ class Netig
|
|||||||
account_unverified_status_value 1
|
account_unverified_status_value 1
|
||||||
account_open_status_value 2
|
account_open_status_value 2
|
||||||
|
|
||||||
normalize_login(&:downcase)
|
normalize_login { |login| login.to_s.strip.downcase }
|
||||||
|
|
||||||
email_from "NETig <noreply@netig.net>"
|
email_from "NETig <noreply@netig.net>"
|
||||||
|
|
||||||
@@ -26,7 +26,11 @@ class Netig
|
|||||||
login_notice_flash "Vous êtes maintenant connecté."
|
login_notice_flash "Vous êtes maintenant connecté."
|
||||||
login_error_flash "La connexion a échoué."
|
login_error_flash "La connexion a échoué."
|
||||||
|
|
||||||
login_redirect "/temporary_page"
|
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
|
login_return_to_requested_location? true
|
||||||
|
|
||||||
# Déconnexion
|
# Déconnexion
|
||||||
@@ -37,6 +41,12 @@ class Netig
|
|||||||
create_account_button "Créer mon compte"
|
create_account_button "Créer mon compte"
|
||||||
create_account_link_text "Créer un 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
|
before_create_account do
|
||||||
first_name = param("first_name").to_s.strip
|
first_name = param("first_name").to_s.strip
|
||||||
last_name = param("last_name").to_s.strip
|
last_name = param("last_name").to_s.strip
|
||||||
@@ -91,12 +101,12 @@ class Netig
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Vérification de l'adresse électronique
|
# Vérification de l'adresse électronique
|
||||||
verify_account_page_title(
|
verify_account_page_title "Vérifier votre email — NETig"
|
||||||
"Vérifier votre email — NETig"
|
verify_account_button "Confirmer mon email"
|
||||||
)
|
|
||||||
verify_account_button "Confirmer mon adresse électronique"
|
|
||||||
verify_account_set_password? true
|
verify_account_set_password? true
|
||||||
|
|
||||||
|
verify_account_redirect "/account"
|
||||||
|
|
||||||
verify_account_email_subject(
|
verify_account_email_subject(
|
||||||
"Confirmez votre email — NETig"
|
"Confirmez votre email — NETig"
|
||||||
)
|
)
|
||||||
@@ -124,6 +134,18 @@ class Netig
|
|||||||
"Votre email est maintenant vérifié."
|
"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
|
# Renvoi du courriel de vérification
|
||||||
resend_verify_account_page_title(
|
resend_verify_account_page_title(
|
||||||
"Renvoyer l'email de vérification — NETig"
|
"Renvoyer l'email de vérification — NETig"
|
||||||
@@ -146,9 +168,17 @@ class Netig
|
|||||||
"Vérifiez l'email saisi ou réessayez plus tard."
|
"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
|
# Sessions
|
||||||
already_logged_in do
|
already_logged_in do
|
||||||
request.redirect("/")
|
request.redirect("/account")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
+11
-7
@@ -1,21 +1,25 @@
|
|||||||
class Netig
|
class Netig
|
||||||
private
|
def core_member?
|
||||||
|
return false unless rodauth.logged_in?
|
||||||
|
return @core_member unless @core_member.nil?
|
||||||
|
|
||||||
def require_core_member!(r)
|
@core_member = DB[:members]
|
||||||
rodauth.require_account
|
|
||||||
|
|
||||||
core_member = DB[:members]
|
|
||||||
.join(:memberships, member_id: :id)
|
.join(:memberships, member_id: :id)
|
||||||
.where(
|
.where(
|
||||||
Sequel[:members][:account_id] => rodauth.account_id,
|
Sequel[:members][:account_id] => rodauth.session_value,
|
||||||
Sequel[:members][:kind] => "individual",
|
Sequel[:members][:kind] => "individual",
|
||||||
Sequel[:members][:core_member] => true,
|
Sequel[:members][:core_member] => true,
|
||||||
Sequel[:memberships][:status] => "accepted"
|
Sequel[:memberships][:status] => "accepted"
|
||||||
)
|
)
|
||||||
.count
|
.count
|
||||||
.positive?
|
.positive?
|
||||||
|
end
|
||||||
|
|
||||||
return if core_member
|
private
|
||||||
|
|
||||||
|
def require_core_member!(r)
|
||||||
|
rodauth.require_account
|
||||||
|
return if core_member?
|
||||||
|
|
||||||
r.halt [
|
r.halt [
|
||||||
403,
|
403,
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ require_relative "config/rodauth"
|
|||||||
|
|
||||||
# Autorisations et routes dédiées
|
# Autorisations et routes dédiées
|
||||||
require_relative "lib/authorization"
|
require_relative "lib/authorization"
|
||||||
|
require_relative "routes/account"
|
||||||
require_relative "routes/noyau"
|
require_relative "routes/noyau"
|
||||||
require_relative "routes/contact"
|
require_relative "routes/contact"
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
class Netig
|
||||||
|
hash_branch "account" do |r|
|
||||||
|
require_core_member!(r)
|
||||||
|
|
||||||
|
@page_title = "Mon espace — NETig"
|
||||||
|
@page_description = "Gérez vos informations personnelles, suivez votre adhésion et retrouvez les services NETig accessibles."
|
||||||
|
@canonical_url = "https://netig.net/account"
|
||||||
|
|
||||||
|
r.is do
|
||||||
|
r.get do
|
||||||
|
view "account"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
+2
-1
@@ -15,10 +15,11 @@ class Netig
|
|||||||
r.on "members" do
|
r.on "members" do
|
||||||
r.is do
|
r.is do
|
||||||
r.get do
|
r.get do
|
||||||
@page_title = "Adhérents — Noyau — NETig"
|
@page_title = "Comptes — Noyau — NETig"
|
||||||
|
|
||||||
@members = DB[:members]
|
@members = DB[:members]
|
||||||
.join(:accounts, id: :account_id)
|
.join(:accounts, id: :account_id)
|
||||||
|
.where(Sequel[:accounts][:status_id] => 2)
|
||||||
.select_all(:members)
|
.select_all(:members)
|
||||||
.select_append(Sequel[:accounts][:email].as(:email))
|
.select_append(Sequel[:accounts][:email].as(:email))
|
||||||
.order(Sequel[:members][:id])
|
.order(Sequel[:members][:id])
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<section class="page-section">
|
||||||
|
<div class="content">
|
||||||
|
<h1>Mon espace</h1>
|
||||||
|
<p>Retrouvez vos informations personnelles et gérez votre adhésion.</p>
|
||||||
|
|
||||||
|
<% if core_member? %>
|
||||||
|
<section aria-labelledby="core-heading">
|
||||||
|
<h2 id="core-heading">Vie de l'association</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Accédez aux outils de gestion et de travail collectif du Noyau.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a href="/noyau">Espace du Noyau →</a>
|
||||||
|
</section>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
+15
-8
@@ -30,7 +30,7 @@
|
|||||||
<a class="skip-link" href="#main-content">Aller au contenu</a>
|
<a class="skip-link" href="#main-content">Aller au contenu</a>
|
||||||
|
|
||||||
<header>
|
<header>
|
||||||
<nav class="topbar" aria-label="Accès aux services">
|
<nav class="topbar" aria-label="Navigation principale">
|
||||||
<% unless request.path == "/" %>
|
<% unless request.path == "/" %>
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<img src="/images/favicon.svg" alt="Accueil NETig">
|
<img src="/images/favicon.svg" alt="Accueil NETig">
|
||||||
@@ -42,17 +42,24 @@
|
|||||||
<a href="https://git.netig.net" target="_blank" rel="noopener noreferrer">NETgit ↗</a>
|
<a href="https://git.netig.net" target="_blank" rel="noopener noreferrer">NETgit ↗</a>
|
||||||
|
|
||||||
<% if rodauth.logged_in? %>
|
<% if rodauth.logged_in? %>
|
||||||
<form method="post" action="<%= rodauth.logout_path %>">
|
<% if request.path == "/account" %>
|
||||||
<%== rodauth.csrf_tag(rodauth.logout_path) %>
|
<form method="post" action="<%= rodauth.logout_path %>">
|
||||||
<button class="topbar__account" type="submit">
|
<%== rodauth.csrf_tag(rodauth.logout_path) %>
|
||||||
Déconnexion
|
<button class="topbar__account" type="submit">
|
||||||
</button>
|
Déconnexion
|
||||||
</form>
|
</button>
|
||||||
|
</form>
|
||||||
|
<% else %>
|
||||||
|
<a class="topbar__account" href="/account">
|
||||||
|
Mon espace →
|
||||||
|
</a>
|
||||||
|
<% end %>
|
||||||
<% elsif request.path != rodauth.login_path %>
|
<% elsif request.path != rodauth.login_path %>
|
||||||
<a class="topbar__account" href="<%= rodauth.login_path %>">
|
<a class="topbar__account" href="<%= rodauth.login_path %>">
|
||||||
Connexion ➜
|
Mon espace →
|
||||||
</a>
|
</a>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<section class="page-section">
|
||||||
|
<div class="content page-panel auth-panel">
|
||||||
|
<h1>Vérifier votre email</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Pour confirmer votre email et activer
|
||||||
|
votre compte, choisissez un mot de passe.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<form
|
||||||
|
action="<%= rodauth.verify_account_path %>"
|
||||||
|
method="post"
|
||||||
|
class="rodauth"
|
||||||
|
role="form"
|
||||||
|
id="verify-account-form"
|
||||||
|
>
|
||||||
|
<%== rodauth.verify_account_additional_form_tags %>
|
||||||
|
<%== rodauth.csrf_tag %>
|
||||||
|
|
||||||
|
<%== rodauth.render("password-field") if rodauth.verify_account_set_password? %>
|
||||||
|
|
||||||
|
<% if rodauth.verify_account_set_password? && rodauth.require_password_confirmation? %>
|
||||||
|
<%== rodauth.render("password-confirm-field") %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<%== rodauth.button(rodauth.verify_account_button) %>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<nav class="auth-links" aria-label="Autres possibilités">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="<%= rodauth.verify_account_resend_path %>">
|
||||||
|
Renvoyer l'email de vérification
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
Reference in new issue
Block a user