| # amnesia/amnesia/forms/helpers.py | |
| # -*- coding: utf-8 -*- | |
| from pyramid.renderers import render | |
| from . import htmlfill | |
| def render_form(template, request, data=None, **kwargs): | |
| if data is None: | |
| data = {} | |
| form = render(template, data, request=request) | |
| return htmlfill.render(form, data, **kwargs) | |
| # amnesia/amnesia/modules/authentication/views/__init__.py | |
| @view_defaults(context=AuthResource) | |
| class login: | |
| template = 'amnesia:templates/authentication/_form_login.pt' | |
| def __init__(self, context, request): | |
| self.context = context | |
| self.request = request | |
| def form(self, data=None, errors=None): | |
| return render_form(self.template, self.request, data, errors=errors) | |
| def GET(self): | |
| return {'form': self.form()} | |
| def POST(self): | |
| result = LoginSchema().load(self.request.POST.mixed()) | |
| if result.errors: | |
| return {'form': self.form(result.data, result.errors)} | |
| login = result.data['login'] | |
| password = result.data['password'] | |
| user = self.context.find_login(login) | |
| if user: | |
| if self.context.check_user_password(user, password): | |
| headers = remember(self.request, user.id) | |
| return HTTPFound(location='/', headers=headers) | |
| else: | |
| errors = {'password': "Password doesn't match"} | |
| else: | |
| errors = {'login': 'Invalid login'} | |
| form = self.form(result.data, errors) | |
| return {'form': form} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment