Exemplo n.º 1
0
from flask import Blueprint, request, session
from sqlalchemy.exc import IntegrityError
from webargs import fields, validate
from webargs.flaskparser import parser, use_args
from server import model
from server.library.util import merge
from server.database import db
from server.response import respond, success
from server.library.schema import schema
from server.exc import NotFound, LoginError, AlreadyExists, InvalidEntity

User = Blueprint("user", __name__)

@User.route("/user", methods=["POST"])
@use_args(schema(model.User, only=("name", "email", "password")))
def create(details):
    try:
        user = model.User(**details)
        db.session.add(user)
        db.session.flush()

        # Log the user in
        session = user.login()
        db.session.commit()
        db.session.refresh(user)

        return respond({ "key": session.key, "user": user })
    except NotFound as nf:
        raise InvalidEntity("Institution", "domain", nf.meta["fields"]["domain"])
    except IntegrityError as ie:
        raise AlreadyExists("User", "email", details["email"])
Exemplo n.º 2
0
from flask import Blueprint, request, session, g
from webargs import fields, validate
from webargs.flaskparser import use_kwargs
from server.model import User
from server.database import db
from server.response import respond, success
from server.exc import HttpException, NotFound
from server.library.util import merge
from server.library.schema import schema
from server.middleware import authorize

Auth = Blueprint("auth", __name__)

userSchema = schema(User, only=("email", "password"))

@Auth.route("/login", methods=["POST"])
@use_kwargs(userSchema)
def auth(email, password):
    """Log a user in.
        POST { username: String, password: String }
            -> 200 { success: Boolean, session: String }
            -> 400 
        PUT { session }
            -> 200 # Session key valid
            -> 400 # Session key invalid
    """

    try:
        # Get the user
        user = User.getBy(db.session, email=email)
    except NotFound: