commit | author | age
|
b1b922
|
1 |
from pyramid.httpexceptions import HTTPFound |
0dcd56
|
2 |
from pyramid.security import ( |
CM |
3 |
remember, |
|
4 |
forget, |
|
5 |
) |
|
6 |
|
b1b922
|
7 |
from pyramid.view import ( |
PE |
8 |
view_config, |
|
9 |
view_defaults |
|
10 |
) |
|
11 |
|
29d12c
|
12 |
from .security import ( |
KY |
13 |
USERS, |
|
14 |
check_password |
|
15 |
) |
b1b922
|
16 |
|
PE |
17 |
|
|
18 |
@view_defaults(renderer='home.pt') |
|
19 |
class TutorialViews: |
|
20 |
def __init__(self, request): |
|
21 |
self.request = request |
675e0d
|
22 |
self.logged_in = request.authenticated_userid |
b1b922
|
23 |
|
PE |
24 |
@view_config(route_name='home') |
|
25 |
def home(self): |
|
26 |
return {'name': 'Home View'} |
|
27 |
|
|
28 |
@view_config(route_name='hello') |
|
29 |
def hello(self): |
|
30 |
return {'name': 'Hello View'} |
|
31 |
|
|
32 |
@view_config(route_name='login', renderer='login.pt') |
|
33 |
def login(self): |
|
34 |
request = self.request |
|
35 |
login_url = request.route_url('login') |
|
36 |
referrer = request.url |
|
37 |
if referrer == login_url: |
|
38 |
referrer = '/' # never use login form itself as came_from |
|
39 |
came_from = request.params.get('came_from', referrer) |
|
40 |
message = '' |
|
41 |
login = '' |
|
42 |
password = '' |
|
43 |
if 'form.submitted' in request.params: |
|
44 |
login = request.params['login'] |
|
45 |
password = request.params['password'] |
906cee
|
46 |
hashed_pw = USERS.get(login) |
S |
47 |
if hashed_pw and check_password(password, hashed_pw): |
0dcd56
|
48 |
headers = remember(request, login) |
CM |
49 |
return HTTPFound(location=came_from, |
|
50 |
headers=headers) |
b1b922
|
51 |
message = 'Failed login' |
PE |
52 |
|
|
53 |
return dict( |
|
54 |
name='Login', |
|
55 |
message=message, |
|
56 |
url=request.application_url + '/login', |
|
57 |
came_from=came_from, |
|
58 |
login=login, |
|
59 |
password=password, |
|
60 |
) |
|
61 |
|
|
62 |
@view_config(route_name='logout') |
|
63 |
def logout(self): |
|
64 |
request = self.request |
0dcd56
|
65 |
headers = forget(request) |
b1b922
|
66 |
url = request.route_url('home') |
0dcd56
|
67 |
return HTTPFound(location=url, |
CM |
68 |
headers=headers) |