def invalidate(self, access_token):
        """ Logout user """
        from namespace_models.User import User

        user = User.objects(email=self.email_from_token(access_token)).first()
        if not user:
            return False
        AccessToken.objects(user=user).delete()
        return True
def profile(email=None):
    if email:
        # TODO: RBAC here
        if email != AccessToken().email_from_token(from_params_or_json(request, 'access_token')):
            return error(response, 'access_denied', 'You cannot access another user\'s profile')
    else:
        email = AccessToken().email_from_token(from_params_or_json(request, 'access_token'))

    try:
        return {'user': User.objects(email=email).first().email}
    except (ValidationError, NotUniqueError) as e:
        return error(response, 'server_error', e.message)
    except OAuth2Error as e:
        message = dict(e.message)
        response.status = message.pop('status_code')
        return message
    def token_from_email(email):
        """ Returns the last generated access_token, else None """
        from namespace_models.User import User

        return AccessToken.objects(user=User.objects(email=email).first()).first()