示例#1
0
    def mutate(self, info, username, password=None, email=None, hidden=None, token=None, active=None, newUsername=None):

        user = info.context.user
        # Validate user is admin
        validate_user_is_admin(user)

        if User.objects.filter(username__iexact=username).exists():
            targetUser = User.objects.get(username__iexact=username)

            if newUsername is not None:
                validate_username(newUsername)
                validate_username_unique(newUsername)
                targetUser.username = newUsername

            if password is not None:
                targetUser.set_password = password

            if email is not None:
                validate_email(email)
                validate_email_unique(email)
                targetUser.email = email

            if hidden is not None:
                targetUser.hidden = hidden

            if active is not None:
                targetUser.active = active

            targetUser.save()

        else:
            raise Exception('Error - can\'t find user: %s' % (username))

        return UpdateUser(status='User Updated: %s' % (username))
示例#2
0
    def mutate(self, info, username, password):
        # Validate username and password
        validate_username(username)
        # validate_password(password)

        user = authenticate(username=username, password=password)

        if not user:
            raise Exception('Invalid username or password')

        login(info.context, user)

        return LogIn(id=user.id, isSuperuser=user.is_superuser)
示例#3
0
文件: reset_db.py 项目: redctf/redctf
def makeUser(user_name, user_email, user_password, hidden):
    # Validate admin user command line arguments
    validate_username(user_name)
    validate_email(user_email)
    validate_password(user_password)

    # Create team for admin user
    token = str(uuid.uuid4())
    while Team.objects.filter(token__iexact=token).exists():
        token = str(uuid.uuid4())

    user_team = Team(name=user_name, token=token, hidden=hidden)
    user_team.save()

    user = User(username=user_name,
                email=user_email,
                team=user_team,
                hidden=hidden)
    user.set_password(user_password)
    user.save()

    # Push admin team to rethinkdb database
    connection = r.connect(host=RDB_HOST, port=RDB_PORT)
    try:
        r.db(CTF_DB).table('teams').insert({
            'sid':
            user.team.id,
            'name':
            user.team.name,
            'points':
            user.team.points,
            'hidden':
            hidden,
            'correct_flags':
            user.team.correct_flags,
            'wrong_flags':
            user.team.wrong_flags,
            'solved': [],
            'created':
            format(user.team.created, 'U')
        }).run(connection)
    except RqlRuntimeError as e:
        raise Exception('Error adding user team to realtime database: %s' %
                        (e))
    finally:
        connection.close()
示例#4
0
    def mutate(self, info, username, password, email, hidden, token):

        # Validate active Ctf
        if Ctf.objects.filter(start__lt=timezone.now(), end__gt=timezone.now()):

            # Validate username, password, and email
            validate_username(username)
            validate_username_unique(username)
            validate_email(email)
            validate_email_unique(email)
            # validate_password(password)

            # Validate token
            validate_token(token)

            if not Team.objects.filter(token__iexact=token).exists():
                raise Exception('Invalid team token')

            # # ======================== #
            # # Temp fix for stage 1 dev #
            # # ======================== #
            # token = str(uuid.uuid4())
            # while Team.objects.filter(token__iexact=token).exists():
            #     token = str(uuid.uuid4())

            # team = Team(name=username, token=token, hidden=hidden)
            # team.save()
            # # ======================== #
            # # Temp fix for stage 1 dev #
            # # ======================== #

            user = User(
                username=username,
                email=email,
                team=Team.objects.get(token=token),
                hidden=hidden
            )
            user.set_password(password)
            user.save()
            
            try: 
                threadedScaleAllChallenges()
            except Exception as ex:
                raise Exception('error when registering user')

            # # ======================== #
            # # Temp fix for stage 1 dev #
            # # ======================== #
            # # Push the realtime data to rethinkdb
            # connection = r.connect(host=RDB_HOST, port=RDB_PORT)
            # try:
            #     r.db(CTF_DB).table('teams').insert({ 'sid': user.team.id, 'name': user.team.name, 'points': user.team.points, 'hidden': user.team.hidden, 'correct_flags': user.team.correct_flags, 'wrong_flags': user.team.wrong_flags, 'solved': [], 'created': format(user.team.created, 'U')}).run(connection)
            # except RqlRuntimeError as e:
            #     raise Exception('Error adding team to realtime database: %s' % (e))
            # finally:
            #     connection.close()
            # # ======================== #
            # # Temp fix for stage 1 dev #
            # # ======================== #

            return CreateUser(status='User account created', user=user)

        else:
            #no active ctf
            raise Exception('No currently active CTF')
示例#5
0
    def mutate(self, info, teamname, username, email, password, hidden):

        # Validate active Ctf
        if Ctf.objects.filter(start__lt=timezone.now(),
                              end__gt=timezone.now()):

            # Validate teamname
            validate_teamname(teamname)
            validate_teamname_unique(teamname)

            # Validate username, password, and email
            validate_username(username)
            validate_username_unique(username)
            validate_email(email)
            validate_email_unique(email)
            # validate_password(password)

            # Create unique team token
            token = str(uuid.uuid4())
            while Team.objects.filter(token__iexact=token).exists():
                token = str(uuid.uuid4())

            # Create and Save Team
            team = Team(name=teamname, token=token, hidden=hidden)
            team.save()

            # Push team to rethinkdb database

            connection = r.connect(host=RDB_HOST, port=RDB_PORT)
            try:
                r.db(CTF_DB).table('teams').insert({
                    'sid':
                    team.id,
                    'name':
                    team.name,
                    'points':
                    team.points,
                    'hidden':
                    team.hidden,
                    'correct_flags':
                    team.correct_flags,
                    'wrong_flags':
                    team.wrong_flags,
                    'solved': [],
                    'created':
                    format(team.created, 'U')
                }).run(connection)

            except RqlRuntimeError as e:
                raise Exception('Error adding team to realtime database: %s' %
                                (e))
            finally:
                connection.close()

            # Return Success
            return CreateTeam(status=('Created Team Successfully'),
                              token=token)

        else:
            #no active ctf
            raise Exception('No currently active CTF')
示例#6
0
 def test_username(self):
     with self.assertRaises(ValidationError):
         validators.validate_username(self.user.username)