Example #1
0
def invalidatetoken(client=None, user=None, **kwargs):
    """Invalidate a token.
    Provide at least a client or a user

    client   client_id or client_secret of an existing client
    user     username or email of an existing user
    """
    if not client and not user:
        helpers.abort("""Provide at least a client (client_id or client_secret)
             or a user (username or email)""")
    if user:
        user_inst = User.first((User.username == user) | (User.email == user))
        if not user_inst:
            return reporter.error('User not found', user)
        where_clause = (Session.user_id == user_inst.pk)
    else:
        client_inst = Client.first((Client.client_id == client)
                                   | (Client.client_secret == client))
        if not client_inst:
            return reporter.error('Client not found', user)
        where_clause = (Session.client_id == client_inst.pk)

    tokens = Token.select().join(Session).where(where_clause).where(
        Token.expires > utcnow())
    for token in tokens:
        token.expires = utcnow()
        token.save()
    reporter.notice('Invalidate {} tokens'.format(len(tokens)), tokens)
Example #2
0
def session(func, *args, **kwargs):
    # TODO make configurable from command line
    qs = User.select().select(User.is_staff == True)
    username = config.get('SESSION_USER')
    if username:
        qs = qs.where(User.username == username)
    try:
        user = qs.get()
    except User.DoesNotExist:
        abort('Admin user not found {}'.format(username or ''))
    session = Session.create(user=user)
    context.set('session', session)
    return func(*args, **kwargs)
Example #3
0
def session(func, *args, **kwargs):
    session = context.get('session')
    if not session:
        qs = User.select().where(User.is_staff == True)
        username = config.get('SESSION_USER')
        if username:
            qs = qs.where(User.username == username)
        try:
            user = qs.get()
        except User.DoesNotExist:
            abort('Admin user not found {}'.format(username or ''))
        session = Session.create(user=user, contributor_type='admin')
        context.set('session', session)
    return func(*args, **kwargs)
Example #4
0
def createuser(username=None, email=None, is_staff=False, **kwargs):
    """Create a user.

    is_staff    set user staff
    """
    if not username:
        username = helpers.prompt('Username')
    if not email:
        email = helpers.prompt('Email')
    validator = User.validator(username=username, email=email)
    if not validator.errors:
        user = validator.save()
        if is_staff:
            user.is_staff = True
            user.save()
        reporter.notice('Created', user)
    else:
        reporter.error('Errored', validator.errors)
Example #5
0
File: auth.py Project: pjegouic/ban
def createclient(name=None, user=None, **kwargs):
    """Create a client.

    name    name of the client to create
    user    username or email of an existing user
    """
    if not name:
        name = helpers.prompt('Client name')
    if not user:
        user = helpers.prompt('User username or email')
    user_inst = User.first((User.username == user) | (User.email == user))
    if not user_inst:
        return reporter.error('User not found', user)
    validator = Client.validator(name=name, user=user_inst)
    if validator.errors:
        return reporter.error('Errored', validator.errors)
    client = validator.save()
    reporter.notice('Created', client)
    listclients()
Example #6
0
def createclient(name=None, user=None, **kwargs):
    """Create a client.

    name    name of the client to create
    user    username or email of an existing user
    """
    if not name:
        name = helpers.prompt('Client name')
    if not user:
        user = helpers.prompt('User username or email')
    user_inst = User.first((User.username == user) | (User.email == user))
    if not user_inst:
        return reporter.error('User not found', user)
    validator = Client.validator(name=name, user=user_inst)
    if validator.errors:
        return reporter.error('Errored', validator.errors)
    client = validator.save()
    reporter.notice('Created', client)
    listclients()
Example #7
0
def createuser(username=None, email=None, is_staff=False, **kwargs):
    """Create a user.

    is_staff    set user staff
    """
    if not username:
        username = helpers.prompt('Username')
    if not email:
        email = helpers.prompt('Email')
    password = helpers.prompt('Password', confirmation=True, hidden=True)
    validator = User.validator(username=username, email=email)
    if not validator.errors:
        user = validator.save()
        user.set_password(password)
        if is_staff:
            user.is_staff = True
            user.save()
        report('Created', user, report.NOTICE)
    else:
        report('Errored', validator.errors, report.ERROR)
Example #8
0
def createuser(username=None, email=None, is_staff=False, **kwargs):
    """Create a user.

    is_staff    set user staff
    """
    if not username:
        username = helpers.prompt('Username')
    if not email:
        email = helpers.prompt('Email')
    password = helpers.prompt('Password', confirmation=True, hidden=True)
    validator = User.validator(username=username, email=email)
    if not validator.errors:
        user = validator.save()
        user.set_password(password)
        if is_staff:
            user.is_staff = True
            user.save()
        report('Created', user, report.NOTICE)
    else:
        report('Errored', validator.errors, report.ERROR)
Example #9
0
def createclient(name=None,
                 user=None,
                 scopes=[],
                 contributor_types=[],
                 **kwargs):
    """Create a client.

    name    name of the client to create
    user    username or email of an existing user
    """
    if not name:
        name = helpers.prompt('Client name')
    if not user:
        user = helpers.prompt('User username or email')
    user_inst = User.first((User.username == user) | (User.email == user))
    if not user_inst:
        return reporter.error('User not found', user)
    if not scopes:
        scopes = helpers.prompt('Scopes (separated by spaces)',
                                default='').split()
    if not contributor_types:
        contributor_types = helpers.prompt(
            'Contributor types (separated by spaces)',
            default='viewer').split()
    for ct in contributor_types:
        if ct not in Client.CONTRIBUTOR_TYPE:
            return reporter.error(
                '{} not in {}'.format(ct, str(Client.CONTRIBUTOR_TYPE)),
                contributor_types)
    if contributor_types != ['viewer']:
        contributor_types.append('viewer')
    validator = Client.validator(name=name,
                                 user=user_inst,
                                 scopes=scopes,
                                 contributor_types=contributor_types)
    if validator.errors:
        return reporter.error('Errored', validator.errors)
    client = validator.save()
    reporter.notice('Created', client)
    listclients()
Example #10
0
def test_can_create_user():
    validator = User.validator(username='******', email='ban@er',
                               is_staff=False)
    assert not validator.errors
Example #11
0
def listusers(**kwargs):
    """List registered users with details."""
    tpl = '{:<20} {}'
    print(tpl.format('id', 'username', 'email'))
    for user in User.select():
        print(tpl.format(user.id, user.username, user.email))
Example #12
0
def test_can_create_user():
    validator = User.validator(username='******',
                               email='ban@er',
                               is_staff=False)
    assert not validator.errors
Example #13
0
def listusers(**kwargs):
    """List registered users with details."""
    tpl = '{:<20} {}'
    print(tpl.format('username', 'email'))
    for user in User.select():
        print(tpl.format(user.username, user.email))