Add login/logout

This commit is contained in:
julien committed 2026-11-02 17:20:48 +01:00
1 parent cde5e651a6
commit 9358dd39a1
5 files changed
+81 -7

No files matched your search

+6
View File
@@ -25,11 +25,17 @@ class Netig < Roda
password_label "Mot de passe" password_label "Mot de passe"
login_button "Se connecter" login_button "Se connecter"
login_redirect "/temporary_page"
login_return_to_requested_location? true
already_logged_in do already_logged_in do
request.redirect("/") request.redirect("/")
end end
logout_redirect "/"
end end
require_relative "routes/admin"
require_relative "routes/contact" require_relative "routes/contact"
route do |r| route do |r|
+23 -5
View File
@@ -227,20 +227,38 @@ summary:focus-visible {
color: var(--color-text); color: var(--color-text);
} }
.topbar > form {
margin: 0 20px 0 auto;
}
.topbar a.topbar__account { .topbar a.topbar__account {
margin-left: auto; margin-left: auto;
margin-right: 20px; margin-right: 20px;
padding: 8px 14px;
border: 1px solid var(--color-accent);
color: var(--color-accent);
} }
.topbar a.topbar__account:hover { .topbar .topbar__account {
display: inline-block;
padding: 8px 14px;
border: 1px solid var(--color-accent);
background: transparent;
color: var(--color-accent);
font: inherit;
line-height: normal;
text-decoration: none;
}
.topbar .topbar__account:hover {
background: var(--color-accent); background: var(--color-accent);
color: var(--color-background); color: var(--color-background);
text-decoration: none; text-decoration: none;
} }
.topbar button.topbar__account {
appearance: none;
border-radius: 0;
cursor: pointer;
}
.topbar img { .topbar img {
display: block; display: block;
width: 48px; width: 48px;
@@ -554,4 +572,4 @@ footer {
.box__link:hover { .box__link:hover {
transform: none; transform: none;
} }
} }
+34
View File
@@ -0,0 +1,34 @@
class Netig
hash_branch "admin" do |r|
require_admin!(r)
@page_title = "Admin — NETig"
@page_description = "Interface d'administration de NETig."
@canonical_url = "https://netig.net/admin"
r.is do
r.get do
view "admin"
end
end
end
private
def require_admin!(r)
rodauth.require_account
admin = DB[:members].where(
account_id: rodauth.account_id,
admin: true
).get(:admin)
return if admin
r.halt [
403,
{ "Content-Type" => "text/plain; charset=utf-8" },
["Accès interdit."]
]
end
end
+6
View File
@@ -0,0 +1,6 @@
<section class="page-section">
<div class="content">
<h1>Interface d'administration de NETig</h1>
<p>Test</p>
</div>
</section>
+12 -2
View File
@@ -1,4 +1,3 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
@@ -40,7 +39,18 @@
<a href="https://webmail.netig.net" target="_blank" rel="noopener noreferrer">NETmail ↗</a> <a href="https://webmail.netig.net" target="_blank" rel="noopener noreferrer">NETmail ↗</a>
<a href="https://cloud.netig.net" target="_blank" rel="noopener noreferrer">NETcloud ↗</a> <a href="https://cloud.netig.net" target="_blank" rel="noopener noreferrer">NETcloud ↗</a>
<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>
<a class="topbar__account" href="/login">Mon espace ➜</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>
<% else %>
<a class="topbar__account" href="<%= rodauth.login_path %>">
Connexion ➜
</a>
<% end %>
</nav> </nav>
</header> </header>