version 1.0 + dropdown menu

This commit is contained in:
2023-01-20 16:33:47 +01:00
parent d71f49a518
commit 96e62ea389
5 changed files with 37 additions and 19 deletions

View File

@@ -127,21 +127,20 @@ h5 {
color: #f4511e !important; color: #f4511e !important;
} }
.navbar-nav li.active a { .navbar-nav li.active a {
color: #000 !important; color: #f4511e !important;
background-color: #29292c !important;
} }
.navbar-default .navbar-toggle { .navbar-default .navbar-toggle {
border-color: transparent; border-color: transparent;
} }
.open .dropdown-toggle { .open .dropdown-toggle {
color: #fff; color: #fff;
background-color: #555 !important; background-color: #ffffff !important;
} }
.dropdown-menu li a { .dropdown-menu li a {
color: #000 !important; color: #000 !important;
} }
.dropdown-menu li a:hover { .dropdown-menu li a:hover {
background-color: red !important; background-color: #ffffff !important;
} }
.menu-item { .menu-item {
font-size: 16px !important; font-size: 16px !important;

View File

@@ -39,9 +39,20 @@
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<li><a href="{{ request.route_url('blog_search') }}" title="Recherche"><span class="glyphicon glyphicon-search"></span></a></li> <li><a href="{{ request.route_url('blog_search') }}" title="Recherche"><span class="glyphicon glyphicon-search"></span></a></li>
{% if request.authenticated_userid %} {% if request.authenticated_userid %}
<li><a href="{{request.route_url('settings')}}" title="Paramères"><span class="glyphicon glyphicon-cog"></span></a></li> <li class="dropdown">
<li><a href="{{request.route_url('logout')}}" title="Déconnexion"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">{{request.authenticated_userid}}
{{request.authenticated_userid}}&nbsp;<span class="glyphicon glyphicon-log-out"></span></a></li> <span class="caret"></span>
</a>
<ul class="dropdown-menu">
{% if request.authenticated_userid == 'admin' %}
<li><a href="{{request.route_url('users')}}">
<span class="glyphicon glyphicon-user"></span></span>&nbsp;&nbsp;Utilisateurs</a></li>
{% endif %}
<li><a href="{{request.route_url('settings')}}" title="Paramères">
<span class="glyphicon glyphicon-cog"></span></span>&nbsp;&nbsp;Paramètres</a></li>
<li><a href="{{ request.route_url('logout') }}"><span class="glyphicon glyphicon-log-out"></span>&nbsp;&nbsp;Se déconnecter</a></li>
</ul>
</li>
{% else %} {% else %}
<!-- si anonyme, lien pour se connecter --> <!-- si anonyme, lien pour se connecter -->
<li><a href="{{request.route_url('login')}}" title="Connexion"><span class="glyphicon glyphicon-log-in"></span></a></li> <li><a href="{{request.route_url('login')}}" title="Connexion"><span class="glyphicon glyphicon-log-in"></span></a></li>

View File

@@ -6,7 +6,7 @@
<br> <br>
<div class="col-md-offset-4 col-md-5 well"> <div class="col-md-offset-4 col-md-5 well">
<form action="{{request.route_url('login')}}" method="post"> <form action="{{ login_url }}" method="post">
<h2>Se connecter</h2> <h2>Se connecter</h2>
<div class="form-group"> <div class="form-group">

View File

@@ -139,24 +139,33 @@ def settings(request):
} }
@view_config(route_name='login', @view_config(route_name='login', renderer='cao_blogr:templates/login.jinja2')
renderer='cao_blogr:templates/login.jinja2')
@forbidden_view_config(renderer='cao_blogr:templates/login.jinja2') @forbidden_view_config(renderer='cao_blogr:templates/login.jinja2')
def login(request): def login(request):
username = request.POST.get('username') username = request.POST.get('username')
login_url = request.route_url('login')
referrer = request.url
if referrer == login_url:
referrer = '/' # never use the login form itself as came_from
came_from = request.params.get('came_from', referrer)
username = request.POST.get('username')
userpwd = request.POST.get('password')
if username: if username:
user = UserService.by_name(request, username) user = UserService.by_name(request, username)
if user and user.verify_password(request.POST.get('password')): if user and user.verify_password(userpwd):
headers = remember(request, user.name) headers = remember(request, username)
request.session.flash("Bonjour %s, Bienvenue sur le site !" % username, 'success') request.session.flash("Bonjour %s, Bienvenue sur le site !" % username, 'success')
return HTTPFound(location=request.route_url('home'), headers=headers) return HTTPFound(location=came_from, headers=headers)
else: else:
headers = forget(request) headers = forget(request)
request.session.flash("Login et mot de passe invalides. La connexion a échoué.", "danger") request.session.flash("Login et mot de passe invalides. La connexion a échoué.", "danger")
return { return {
'page_title': "", 'page_title': "",
'came_from': came_from,
'login_url': login_url,
} }
@@ -167,8 +176,7 @@ def logout(request):
return HTTPFound(location=request.route_url('home'), headers=headers) return HTTPFound(location=request.route_url('home'), headers=headers)
@view_config(route_name='users', @view_config(route_name='users', renderer='cao_blogr:templates/users.jinja2', permission='manage')
renderer='cao_blogr:templates/users.jinja2', permission='manage')
def users(request): def users(request):
# get all users # get all users
users = UserService.all(request) users = UserService.all(request)

View File

@@ -21,8 +21,8 @@ requires = [
'SQLAlchemy', 'SQLAlchemy',
'transaction', 'transaction',
'zope.sqlalchemy', 'zope.sqlalchemy',
'wtforms==2.2.1', # form library 'wtforms', # form library
'webhelpers2==2.0', # various web building related helpers 'webhelpers2', # various web building related helpers
'passlib', 'passlib',
'python-magic', 'python-magic',
'Pillow == 6.1.0', 'Pillow == 6.1.0',
@@ -39,7 +39,7 @@ tests_require = [
setup( setup(
name='cao_blogr', name='cao_blogr',
version='0.1', version='1.0',
description='cao_blogr', description='cao_blogr',
long_description=README + '\n\n' + CHANGES, long_description=README + '\n\n' + CHANGES,
classifiers=[ classifiers=[