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)
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)
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)
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)
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()
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)
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()
def test_can_create_user(): validator = User.validator(username='******', email='ban@er', is_staff=False) assert not validator.errors
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))
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))