some auth/login tweaks
This commit is contained in:
parent
df9524a6ac
commit
02d4cfc6c5
6 changed files with 23 additions and 26 deletions
|
@ -41,4 +41,4 @@ Session.configure(extension=ZopeTransactionExtension())
|
||||||
def includeme(config):
|
def includeme(config):
|
||||||
config.include('edbob.pyramid.static')
|
config.include('edbob.pyramid.static')
|
||||||
config.include('edbob.pyramid.subscribers')
|
config.include('edbob.pyramid.subscribers')
|
||||||
config.include('edbob.pyramid.views')
|
# config.include('edbob.pyramid.views')
|
||||||
|
|
|
@ -39,7 +39,7 @@ class InitCommand(commands.Subcommand):
|
||||||
description = "Initialize the database"
|
description = "Initialize the database"
|
||||||
|
|
||||||
def run(self, args):
|
def run(self, args):
|
||||||
from edbob.db import engine
|
from edbob.db import engine, Session
|
||||||
from edbob.db.util import install_core_schema
|
from edbob.db.util import install_core_schema
|
||||||
from edbob.db.exceptions import CoreSchemaAlreadyInstalled
|
from edbob.db.exceptions import CoreSchemaAlreadyInstalled
|
||||||
from edbob.db.extensions import activate_extension
|
from edbob.db.extensions import activate_extension
|
||||||
|
@ -53,20 +53,16 @@ class InitCommand(commands.Subcommand):
|
||||||
return
|
return
|
||||||
|
|
||||||
# Activate any extensions you like here...
|
# Activate any extensions you like here...
|
||||||
|
activate_extension('auth')
|
||||||
# activate_extension('shrubbery')
|
# activate_extension('shrubbery')
|
||||||
|
|
||||||
# Okay, on to bootstrapping...
|
# Okay, on to bootstrapping...
|
||||||
|
|
||||||
from edbob.db import Session
|
|
||||||
from edbob.db.classes import Role, User
|
|
||||||
from edbob.db.auth import administrator_role
|
|
||||||
|
|
||||||
session = Session()
|
session = Session()
|
||||||
|
|
||||||
# Create 'admin' user with full rights.
|
# This creates an 'admin' user with 'admin' password.
|
||||||
admin = User(username='admin', password='admin')
|
import edbob.db.auth
|
||||||
admin.roles.append(administrator_role(session))
|
edbob.db.auth.init_database(engine, session)
|
||||||
session.add(admin)
|
|
||||||
|
|
||||||
# Do any other bootstrapping you like here...
|
# Do any other bootstrapping you like here...
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
* login.css
|
* login.css
|
||||||
******************************/
|
******************************/
|
||||||
|
|
||||||
img {
|
#login-logo {
|
||||||
display: block;
|
display: block;
|
||||||
margin: 10px auto 25px auto;
|
margin: 10px auto 25px auto;
|
||||||
padding-left: 50px;
|
padding-left: 50px;
|
||||||
width: 500px;
|
/* width: 500px; */
|
||||||
}
|
}
|
||||||
|
|
||||||
div.fieldset {
|
div.fieldset {
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
${h.stylesheet_link(request.static_url('edbob.pyramid:static/css/login.css'))}
|
${h.stylesheet_link(request.static_url('edbob.pyramid:static/css/login.css'))}
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
${h.image(request.static_url('edbob.pyramid:static/img/logo.jpg'), "edbob logo")}
|
${h.image(logo_url, "${self.global_title()} logo", id='login-logo')}
|
||||||
|
|
||||||
<div class="fieldset">
|
<div class="fieldset">
|
||||||
${h.form('')}
|
${h.form('')}
|
||||||
|
|
|
@ -27,5 +27,5 @@
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def includeme(config):
|
# def includeme(config):
|
||||||
config.include('edbob.pyramid.views.auth')
|
# config.include('edbob.pyramid.views.auth')
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import formencode
|
import formencode
|
||||||
from pyramid.view import view_config
|
|
||||||
from pyramid.httpexceptions import HTTPFound
|
from pyramid.httpexceptions import HTTPFound
|
||||||
from pyramid.security import remember, forget
|
from pyramid.security import remember, forget
|
||||||
from pyramid_simpleform import Form
|
from pyramid_simpleform import Form
|
||||||
|
@ -45,7 +44,6 @@ class UserLogin(formencode.Schema):
|
||||||
password = formencode.validators.NotEmpty()
|
password = formencode.validators.NotEmpty()
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='login', renderer='/login.mako')
|
|
||||||
def login(context, request):
|
def login(context, request):
|
||||||
"""
|
"""
|
||||||
The login view, responsible for displaying and handling the login form.
|
The login view, responsible for displaying and handling the login form.
|
||||||
|
@ -56,9 +54,10 @@ def login(context, request):
|
||||||
elif request.session.get('referer'):
|
elif request.session.get('referer'):
|
||||||
referer = request.session.pop('referer')
|
referer = request.session.pop('referer')
|
||||||
else:
|
else:
|
||||||
referer = request.referer or request.route_url('home')
|
referer = request.referer
|
||||||
if referer == request.route_url('login'):
|
if not referer or referer == request.route_url('login'):
|
||||||
referer = request.route_url('home')
|
referer = edbob.config.get('edbob.pyramid', 'login.home',
|
||||||
|
default=request.route_url('home'))
|
||||||
|
|
||||||
# Redirect if already logged in.
|
# Redirect if already logged in.
|
||||||
if request.user:
|
if request.user:
|
||||||
|
@ -76,20 +75,22 @@ def login(context, request):
|
||||||
headers = remember(request, user.uuid)
|
headers = remember(request, user.uuid)
|
||||||
return HTTPFound(location=referer, headers=headers)
|
return HTTPFound(location=referer, headers=headers)
|
||||||
request.session.flash("Invalid username or password")
|
request.session.flash("Invalid username or password")
|
||||||
return {'form': FormRenderer(form), 'referer': referer}
|
|
||||||
|
url = edbob.config.get('edbob.pyramid', 'login.logo_url',
|
||||||
|
default=request.static_url('edbob.pyramid:static/img/logo.jpg'))
|
||||||
|
|
||||||
|
return {'form': FormRenderer(form), 'referer': referer, 'logo_url': url}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='logout')
|
|
||||||
def logout(context, request):
|
def logout(context, request):
|
||||||
request.session.delete()
|
request.session.delete()
|
||||||
request.session.flash("%s logged out at %s" % (
|
|
||||||
request.user.display_name,
|
|
||||||
edbob.local_time().strftime("%I:%M %p")))
|
|
||||||
headers = forget(request)
|
headers = forget(request)
|
||||||
return HTTPFound(location=request.route_url('login'), headers=headers)
|
return HTTPFound(location=request.route_url('login'), headers=headers)
|
||||||
|
|
||||||
|
|
||||||
def includeme(config):
|
def includeme(config):
|
||||||
config.add_route('login', '/login')
|
config.add_route('login', '/login')
|
||||||
|
config.add_view(login, route_name='login', renderer='/login.mako')
|
||||||
|
|
||||||
config.add_route('logout', '/logout')
|
config.add_route('logout', '/logout')
|
||||||
config.scan()
|
config.add_view(logout, route_name='logout')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue