Mercurial > public > src > rhodecode
diff 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 |
line wrap: on
line diff
--- a/pylons_app/controllers/admin.py Wed Apr 07 16:42:11 2010 +0200 +++ b/pylons_app/controllers/admin.py Wed Apr 07 17:28:10 2010 +0200 @@ -9,6 +9,9 @@ from mercurial.error import RepoError from ConfigParser import ConfigParser from pylons_app.lib import auth +from pylons_app.model.forms import LoginForm +import formencode +import formencode.htmlfill as htmlfill log = logging.getLogger(__name__) class AdminController(BaseController): @@ -16,10 +19,38 @@ def __before__(self): c.staticurl = g.statics - c.admin_user = True + c.admin_user = session.get('admin_user') + c.admin_username = session.get('admin_username') def index(self): # Return a rendered template + if request.POST: + #import Login Form validator class + login_form = LoginForm() + + try: + c.form_result = login_form.to_python(dict(request.params)) + if auth.authfunc(None, c.form_result['username'], c.form_result['password']) and\ + c.form_result['username'] == 'admin': + session['admin_user'] = True + session['admin_username'] = c.form_result['username'] + session.save() + return redirect(url('admin_home')) + else: + raise formencode.Invalid('Login Error', None, None, + error_dict={'username':'invalid login', + 'password':'invalid password'}) + + except formencode.Invalid, error: + c.form_result = error.value + c.form_errors = error.error_dict or {} + html = render('/admin.html') + + return htmlfill.render( + html, + defaults=c.form_result, + encoding="UTF-8" + ) return render('/admin.html') def repos_manage(self):