version 1.0 + dropdown menu
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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}} <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> Utilisateurs</a></li>
|
||||||
|
{% endif %}
|
||||||
|
<li><a href="{{request.route_url('settings')}}" title="Paramères">
|
||||||
|
<span class="glyphicon glyphicon-cog"></span></span> Paramètres</a></li>
|
||||||
|
<li><a href="{{ request.route_url('logout') }}"><span class="glyphicon glyphicon-log-out"></span> 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>
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
6
setup.py
6
setup.py
@@ -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=[
|
||||||
|
|||||||
Reference in New Issue
Block a user