Skip to content

Instantly share code, notes, and snippets.

@glesica
Created July 7, 2012 23:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save glesica/3068543 to your computer and use it in GitHub Desktop.
Save glesica/3068543 to your computer and use it in GitHub Desktop.
# In views.py
import flask
from flask import request, session, g
from datably import app, crypt, db
from datably import operations as ops
@app.route('/login', methods=('GET', 'POST'))
def login():
context = {}
if request.method == 'POST':
app.logger.debug(request.form['email'])
user, errmsg = ops.login_user()
if user:
return flask.redirect(flask.url_for('index'))
else:
context.update({
'errmsg': errmsg,
})
return flask.render_template('login.html', **context)
# In operations.py
import sqlalchemy
import flask
from flask import request, session, g
from datably import app, crypt, db
from datably.models import User
def login_user():
"""
Logs a user in and updates the session accordingly.
Returns a tuple consisting of the user (or ``None``
if there is an error) and an error message (or
``None`` on success).
"""
email = request.form['email'],
app.logger.debug(email)
password = request.form['password']
user = User.query.filter_by(email=email).first()
if not user:
return (None, 'User not found.')
if user.password_matches(password):
session['user'] = user
return (user, None)
else:
return (None, 'Incorrect password.')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment