Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / controllers / vigiboard_controller.py @ c1ce3d6a

History | View | Annotate | Download (2.08 KB)

1 57f7cb3f Gabriel DE PERTHUIS
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4: 
3 b8500d1a Thomas ANDREJAK
"""
4
Controller for authentification
5
"""
6
7
from tg import expose, flash, require, url, request, redirect
8 57f7cb3f Gabriel DE PERTHUIS
9
from pylons.i18n import ugettext as _, lazy_ugettext as l_
10
from repoze.what import predicates
11
12
from vigiboard.lib.base import BaseController
13
from vigiboard.model import DBSession 
14
from vigiboard.controllers.error import ErrorController
15
from vigiboard import model
16 a7dfbba0 Francois POIROTTE
17 b8500d1a Thomas ANDREJAK
class VigiboardRootController(BaseController):
18 57f7cb3f Gabriel DE PERTHUIS
    """
19
    The root controller for the vigiboard application.
20
    
21
    All the other controllers and WSGI applications should be mounted on this
22
    controller. For example::
23
    
24
        panel = ControlPanelController()
25
        another_app = AnotherWSGIApplication()
26
    
27
    Keep in mind that WSGI applications shouldn't be mounted directly: They
28
    must be wrapped around with :class:`tg.controllers.WSGIAppController`.
29
    """
30
31 a7dfbba0 Francois POIROTTE
    error = ErrorController()
32 57f7cb3f Gabriel DE PERTHUIS
33
    @expose('vigiboard.templates.login')
34
    def login(self, came_from=url('/')):
35
        """Start the user login."""
36
        login_counter = request.environ['repoze.who.logins']
37
        if login_counter > 0:
38
            flash(_('Wrong credentials'), 'warning')
39
        return dict(page='login', login_counter=str(login_counter),
40
                    came_from=came_from)
41 a7dfbba0 Francois POIROTTE
42 57f7cb3f Gabriel DE PERTHUIS
    @expose()
43
    def post_login(self, came_from=url('/')):
44
        """
45
        Redirect the user to the initially requested page on successful
46
        authentication or redirect her back to the login page if login failed.
47
        """
48
        if not request.identity:
49
            login_counter = request.environ['repoze.who.logins'] + 1
50
            redirect(url('/login', came_from=came_from, __logins=login_counter))
51
        userid = request.identity['repoze.who.userid']
52
        flash(_('Welcome back, %s!') % userid)
53
        redirect(came_from)
54
55
    @expose()
56
    def post_logout(self, came_from=url('/')):
57
        """
58
        Redirect the user to the initially requested page on logout and say
59
        goodbye as well.
60
        """
61
        flash(_('We hope to see you soon!'))
62
        redirect(came_from)