Esempio n. 1
0
    def wrapper(*args, **kwargs):
        if request.authorization is None:
            raise Unauthorized([{
                'detail': 'You must provide basic authorization headers',
                'where': 'request.authorization',
            }])

        identifier = request.authorization['username']
        token = request.authorization['password']

        user = User.get_by('identifier', identifier)
        token = Token.get_by('token', token)

        if (
            user is None or token is None or
            token.proxy.user.get().id != user.id
        ):
            raise Unauthorized([{
                'detail': 'Your credentials are invalid, sorry',
                'where': 'request.authorization',
            }])

        g.user = user

        return view(*args, **kwargs)
Esempio n. 2
0
def whoami():
    identifier = flask.request.authorization['username']
    token = flask.request.authorization['password']

    user = User.get_by('identifier', identifier)
    token = Token.get_by('token', token)

    if user is None or \
       token is None or \
       token.user.get().id != user.id:
        raise Unauthorized([{
            'detail': 'Your credentials are invalid, sorry',
            'where': 'request.authorization',
        }])

    return flask.jsonify({
        'data': user.to_json(),
    })
Esempio n. 3
0
def signin(backend):
    # this raises AuthenticationError exception if failed
    identifier, data = backend.authenticate(**flask.request.form.to_dict())

    user = get_or_create_user(identifier, data)

    # creates auth token
    if user.tokens.count() > 0:
        token = user.tokens.all()[0]
    else:
        token = ''.join(choice(ascii_letters) for _ in range(32))
        token = Token(token=token).save()
        token.user.set(user)

    return flask.jsonify({
        'data': {
            'username': user.identifier,
            'fullname': user.fullname,
            'token': token.token,
        }
    })
Esempio n. 4
0
def make_user(identifier, name):
    u = User(identifier=identifier, fullname=name).save()
    token = Token(token=random_string(9)).save()
    token.proxy.user.set(u)

    return u
Esempio n. 5
0
def make_user(identifier, name, email=None):
    u = User(identifier=identifier, fullname=name, email=email).save()
    token = Token(token=random_string(9)).save()
    token.user.set(u)

    return u