comparison pylons_app/controllers/admin.py @ 45:a886f5eba757

implemented admin page login
author marcink
date Wed, 07 Apr 2010 17:28:10 +0200
parents d924b931b488
children 9db7782727b3
comparison
equal deleted inserted replaced
44:d924b931b488 45:a886f5eba757
7 import os 7 import os
8 from mercurial import ui, hg 8 from mercurial import ui, hg
9 from mercurial.error import RepoError 9 from mercurial.error import RepoError
10 from ConfigParser import ConfigParser 10 from ConfigParser import ConfigParser
11 from pylons_app.lib import auth 11 from pylons_app.lib import auth
12 from pylons_app.model.forms import LoginForm
13 import formencode
14 import formencode.htmlfill as htmlfill
12 log = logging.getLogger(__name__) 15 log = logging.getLogger(__name__)
13 16
14 class AdminController(BaseController): 17 class AdminController(BaseController):
15 18
16 19
17 def __before__(self): 20 def __before__(self):
18 c.staticurl = g.statics 21 c.staticurl = g.statics
19 c.admin_user = True 22 c.admin_user = session.get('admin_user')
23 c.admin_username = session.get('admin_username')
20 24
21 def index(self): 25 def index(self):
22 # Return a rendered template 26 # Return a rendered template
27 if request.POST:
28 #import Login Form validator class
29 login_form = LoginForm()
30
31 try:
32 c.form_result = login_form.to_python(dict(request.params))
33 if auth.authfunc(None, c.form_result['username'], c.form_result['password']) and\
34 c.form_result['username'] == 'admin':
35 session['admin_user'] = True
36 session['admin_username'] = c.form_result['username']
37 session.save()
38 return redirect(url('admin_home'))
39 else:
40 raise formencode.Invalid('Login Error', None, None,
41 error_dict={'username':'invalid login',
42 'password':'invalid password'})
43
44 except formencode.Invalid, error:
45 c.form_result = error.value
46 c.form_errors = error.error_dict or {}
47 html = render('/admin.html')
48
49 return htmlfill.render(
50 html,
51 defaults=c.form_result,
52 encoding="UTF-8"
53 )
23 return render('/admin.html') 54 return render('/admin.html')
24 55
25 def repos_manage(self): 56 def repos_manage(self):
26 return render('/repos_manage.html') 57 return render('/repos_manage.html')
27 58