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_open_status_value 2
|
||||
|
||||
normalize_login(&:downcase)
|
||||
normalize_login { |login| login.to_s.strip.downcase }
|
||||
|
||||
email_from "NETig <noreply@netig.net>"
|
||||
|
||||
@@ -26,7 +26,11 @@ class Netig
|
||||
login_notice_flash "Vous êtes maintenant connecté."
|
||||
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
|
||||
|
||||
# Déconnexion
|
||||
@@ -37,6 +41,12 @@ class Netig
|
||||
create_account_button "Créer mon 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
|
||||
first_name = param("first_name").to_s.strip
|
||||
last_name = param("last_name").to_s.strip
|
||||
@@ -91,12 +101,12 @@ class Netig
|
||||
end
|
||||
|
||||
# Vérification de l'adresse électronique
|
||||
verify_account_page_title(
|
||||
"Vérifier votre email — NETig"
|
||||
)
|
||||
verify_account_button "Confirmer mon adresse électronique"
|
||||
verify_account_page_title "Vérifier votre email — NETig"
|
||||
verify_account_button "Confirmer mon email"
|
||||
verify_account_set_password? true
|
||||
|
||||
verify_account_redirect "/account"
|
||||
|
||||
verify_account_email_subject(
|
||||
"Confirmez votre email — NETig"
|
||||
)
|
||||
@@ -124,6 +134,18 @@ class Netig
|
||||
"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
|
||||
resend_verify_account_page_title(
|
||||
"Renvoyer l'email de vérification — NETig"
|
||||
@@ -146,9 +168,17 @@ class Netig
|
||||
"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
|
||||
already_logged_in do
|
||||
request.redirect("/")
|
||||
request.redirect("/account")
|
||||
end
|
||||
end
|
||||
end
|
||||
+11
-7
@@ -1,21 +1,25 @@
|
||||
class Netig
|
||||
private
|
||||
def core_member?
|
||||
return false unless rodauth.logged_in?
|
||||
return @core_member unless @core_member.nil?
|
||||
|
||||
def require_core_member!(r)
|
||||
rodauth.require_account
|
||||
|
||||
core_member = DB[:members]
|
||||
@core_member = DB[:members]
|
||||
.join(:memberships, member_id: :id)
|
||||
.where(
|
||||
Sequel[:members][:account_id] => rodauth.account_id,
|
||||
Sequel[:members][:account_id] => rodauth.session_value,
|
||||
Sequel[:members][:kind] => "individual",
|
||||
Sequel[:members][:core_member] => true,
|
||||
Sequel[:memberships][:status] => "accepted"
|
||||
)
|
||||
.count
|
||||
.positive?
|
||||
end
|
||||
|
||||
return if core_member
|
||||
private
|
||||
|
||||
def require_core_member!(r)
|
||||
rodauth.require_account
|
||||
return if core_member?
|
||||
|
||||
r.halt [
|
||||
403,
|
||||
|
||||
@@ -28,6 +28,7 @@ require_relative "config/rodauth"
|
||||
|
||||
# Autorisations et routes dédiées
|
||||
require_relative "lib/authorization"
|
||||
require_relative "routes/account"
|
||||
require_relative "routes/noyau"
|
||||
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.is do
|
||||
r.get do
|
||||
@page_title = "Adhérents — Noyau — NETig"
|
||||
@page_title = "Comptes — Noyau — NETig"
|
||||
|
||||
@members = DB[:members]
|
||||
.join(:accounts, id: :account_id)
|
||||
.where(Sequel[:accounts][:status_id] => 2)
|
||||
.select_all(:members)
|
||||
.select_append(Sequel[:accounts][:email].as(:email))
|
||||
.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>
|
||||
|
||||
<header>
|
||||
<nav class="topbar" aria-label="Accès aux services">
|
||||
<nav class="topbar" aria-label="Navigation principale">
|
||||
<% unless request.path == "/" %>
|
||||
<a href="/">
|
||||
<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>
|
||||
|
||||
<% if rodauth.logged_in? %>
|
||||
<form method="post" action="<%= rodauth.logout_path %>">
|
||||
<%== rodauth.csrf_tag(rodauth.logout_path) %>
|
||||
<button class="topbar__account" type="submit">
|
||||
Déconnexion
|
||||
</button>
|
||||
</form>
|
||||
<% if request.path == "/account" %>
|
||||
<form method="post" action="<%= rodauth.logout_path %>">
|
||||
<%== rodauth.csrf_tag(rodauth.logout_path) %>
|
||||
<button class="topbar__account" type="submit">
|
||||
Déconnexion
|
||||
</button>
|
||||
</form>
|
||||
<% else %>
|
||||
<a class="topbar__account" href="/account">
|
||||
Mon espace →
|
||||
</a>
|
||||
<% end %>
|
||||
<% elsif request.path != rodauth.login_path %>
|
||||
<a class="topbar__account" href="<%= rodauth.login_path %>">
|
||||
Connexion ➜
|
||||
Mon espace →
|
||||
</a>
|
||||
<% end %>
|
||||
|
||||
</nav>
|
||||
</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