Manage membership
This commit is contained in:
1 parent
491457c50e
commit
a6ba3681b2
7 files changed
+413
-21
No files matched your search
+88
-3
@@ -1,21 +1,106 @@
|
||||
class Netig
|
||||
private
|
||||
|
||||
# Enregistrement d'une décision d'adhésion
|
||||
def record_membership_decision!(r, membership_id, status)
|
||||
member_id = DB[:members]
|
||||
.where(account_id: rodauth.session_value)
|
||||
.get(:id)
|
||||
|
||||
unless member_id
|
||||
r.halt [403, {}, ["Accès interdit."]]
|
||||
end
|
||||
|
||||
message = case status
|
||||
when "accepted"
|
||||
"La demande d'adhésion a été acceptée."
|
||||
when "rejected"
|
||||
"La demande d'adhésion a été refusée."
|
||||
end
|
||||
|
||||
updated = DB[:memberships]
|
||||
.where(id: membership_id, status: "pending")
|
||||
.update(
|
||||
status: status,
|
||||
decided_at: Sequel::CURRENT_TIMESTAMP,
|
||||
recorded_by: member_id
|
||||
)
|
||||
|
||||
if updated == 1
|
||||
flash["notice"] = message
|
||||
else
|
||||
flash["error"] = "Cette demande n'est plus en attente ou n'existe pas."
|
||||
end
|
||||
|
||||
r.redirect "/noyau/memberships"
|
||||
end
|
||||
|
||||
hash_branch "noyau" do |r|
|
||||
require_core_member!(r)
|
||||
|
||||
@page_title = "Noyau — NETig"
|
||||
@page_description = "Espace de gestion de l'association NETig."
|
||||
@page_title = "Gestion de l'association — NETig"
|
||||
@page_description = "Gestion collective de l'association NETig par le Noyau."
|
||||
@canonical_url = "https://netig.net/noyau"
|
||||
|
||||
# Accueil
|
||||
r.is do
|
||||
r.get do
|
||||
view "noyau"
|
||||
end
|
||||
end
|
||||
|
||||
# Demandes d'adhésion
|
||||
r.on "memberships" do
|
||||
r.is do
|
||||
r.get do
|
||||
@page_title = "Demandes d'adhésion — NETig"
|
||||
@page_description = "Examen des demandes d'adhésion à NETig."
|
||||
@canonical_url = "https://netig.net/noyau/memberships"
|
||||
|
||||
@memberships = DB[:memberships]
|
||||
.join(:members, id: :member_id)
|
||||
.join(:accounts, id: Sequel[:members][:account_id])
|
||||
.where(
|
||||
Sequel[:memberships][:status] => "pending",
|
||||
Sequel[:accounts][:status_id] => 2
|
||||
)
|
||||
.select_all(:memberships)
|
||||
.select_append(
|
||||
Sequel[:members][:kind].as(:member_kind),
|
||||
Sequel[:members][:first_name].as(:member_first_name),
|
||||
Sequel[:members][:last_name].as(:member_last_name),
|
||||
Sequel[:members][:organization_name].as(:member_organization_name),
|
||||
Sequel[:accounts][:email].as(:account_email)
|
||||
)
|
||||
.order(
|
||||
Sequel.asc(Sequel[:memberships][:requested_at]),
|
||||
Sequel.asc(Sequel[:memberships][:id])
|
||||
)
|
||||
.all
|
||||
|
||||
view "noyau/memberships"
|
||||
end
|
||||
end
|
||||
|
||||
# Décision sur une demande
|
||||
r.on Integer do |membership_id|
|
||||
r.post "accept" do
|
||||
record_membership_decision!(r, membership_id, "accepted")
|
||||
end
|
||||
|
||||
r.post "reject" do
|
||||
record_membership_decision!(r, membership_id, "rejected")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Gestion des comptes
|
||||
r.on "members" do
|
||||
r.is do
|
||||
r.get do
|
||||
@page_title = "Comptes — Noyau — NETig"
|
||||
@page_title = "Comptes — NETig"
|
||||
@page_description = "Consultation des comptes de l'association NETig."
|
||||
@canonical_url = "https://netig.net/noyau/members"
|
||||
|
||||
@members = DB[:members]
|
||||
.join(:accounts, id: :account_id)
|
||||
|
||||
Reference in new issue
Block a user