Exemplo n.º 1
0
    def test_get_by_id(self):
        """Get user by ID."""
        user = User('foo', '*****@*****.**')
        user.save()

        retrieved = User.get_by_id(user.id)
        assert retrieved == user
Exemplo n.º 2
0
    def test_get_by_id(self):
        """Get user by ID."""
        user = User('foo', '*****@*****.**')
        user.save()

        retrieved = User.get_by_id(user.id)
        assert retrieved == user
Exemplo n.º 3
0
def register():
    """Register new user."""
    form = RegisterForm(request.form)
    if request.args.get('name') and not form.username.data:
        form.username.data = request.args.get('name')
    if request.args.get('email') and not form.email.data:
        form.email.data = request.args.get('email')
    if request.args.get('web') and not form.webpage_url.data:
        form.webpage_url.data = request.args.get('web')
    user1 = User.query.filter_by(email=form.email.data).first()
    if user1:
        flash("A user account with this email already exists", 'warning')
    elif form.validate_on_submit():
        new_user = User.create(username=form.username.data,
                               email=form.email.data,
                               webpage_url=form.webpage_url.data,
                               password=form.password.data,
                               active=True)
        new_user.socialize()
        if User.query.count() == 1:
            new_user.is_admin = True
            new_user.save()
            flash("Administrative user created - have fun!", 'success')
        else:
            flash(
                "Thank you for registering. You can now log in and submit projects.",
                'success')
        login_user(new_user, remember=True)
        return redirect(url_for('public.home'))
    else:
        flash_errors(form)
    return render_template('public/register.html',
                           current_event=current_event(),
                           form=form,
                           slack_enabled=slack_enabled())
Exemplo n.º 4
0
def register():
    """Register new user."""
    form = RegisterForm(request.form)
    if request.args.get('name'):
        form.username.data = request.args.get('name')
    if request.args.get('email'):
        form.email.data = request.args.get('email')
    if request.args.get('web'):
        form.webpage_url.data = request.args.get('web')
    if form.validate_on_submit():
        new_user = User.create(
                        username=form.username.data,
                        email=form.email.data,
                        webpage_url=form.webpage_url.data,
                        password=form.password.data,
                        active=True)
        new_user.socialize()
        if User.query.count() == 1:
            new_user.is_admin = True
            new_user.save()
            flash("Administrative user created - have fun with DRIBDAT!", 'success')
        else:
            flash("Thank you for registering. You can now log in and submit projects.", 'success')
        return redirect(url_for('public.login'))
    else:
        flash_errors(form)
    return render_template('public/register.html', current_event=get_current_event(), form=form)
Exemplo n.º 5
0
 def test_check_password(self):
     """Check password."""
     user = User.create(username='******',
                        email='*****@*****.**',
                        password='******')
     assert user.check_password('foobarbaz123') is True
     assert user.check_password('barfoobaz') is False
Exemplo n.º 6
0
def get_or_create_sso_user(sso_id, sso_name, sso_email, sso_webpage=''):
    """ Matches a user account based on SSO_ID """
    sso_id = str(sso_id)
    user = User.query.filter_by(sso_id=sso_id).first()
    if not user:
        if isinstance(current_user, User) and current_user.active:
            user = current_user
            user.sso_id = sso_id
        else:
            user = User.query.filter_by(email=sso_email).first()
            if user:
                # Update SSO identifier
                user.sso_id = sso_id
                db.session.add(user)
                db.session.commit()
            else:
                username = sso_name.lower().replace(" ", "_")
                user = User.query.filter_by(username=username).first()
                if user:
                    flash(
                        'Duplicate username (%s), please try again or ' +
                        'contact an admin.' % username, 'warning')
                    return redirect(url_for("auth.login", local=1))
                user = User.create(username=username,
                                   sso_id=sso_id,
                                   email=sso_email,
                                   webpage_url=sso_webpage,
                                   password=random_password(),
                                   active=True)
            user.socialize()
            login_user(user, remember=True)
            flash("Welcome! Please complete your user account.", 'info')
            return redirect(url_for("auth.user_profile"))
    login_user(user, remember=True)
    if not user.active:
        flash(
            'This user account is under review. Please update your profile ' +
            'and contact the organizing team to access all functions of ' +
            'this platform.', 'warning')
    else:
        flash(u'Logged in! Time to make something awesome ≧◡≦', 'success')

    if current_event():
        return redirect(url_for("public.event", event_id=current_event().id))
    else:
        return redirect(url_for("public.home"))
Exemplo n.º 7
0
def slack_login():
    if not slack.authorized:
        flash('Access denied to Slack', 'error')
        return redirect(url_for("auth.login"))

    resp = slack.get("https://slack.com/api/users.identity")
    if not resp.ok:
        flash('Unable to access Slack data', 'error')
        return redirect(url_for("auth.login"))
    resp_data = resp.json()
    if not 'user' in resp_data:
        flash('Invalid Slack data format', 'error')
        print(resp_data)
        return redirect(url_for("auth.login"))

    resp_user = resp_data['user']
    user = User.query.filter_by(sso_id=resp_user['id']).first()
    if not user:
        if current_user and current_user.is_authenticated:
            user = current_user
            user.sso_id = resp_user['id']
        else:
            user = User.query.filter_by(email=resp_user['email']).first()
            if user:
                # Update SSO identifier
                user.sso_id = resp_user['id']
                db.session.add(user)
                db.session.commit()
            else:
                user = User.create(username=resp_user['name'].lower().replace(
                    " ", "_"),
                                   sso_id=resp_user['id'],
                                   email=resp_user['email'],
                                   password=random_password(),
                                   active=True)
            user.socialize()
            login_user(user, remember=True)
            flash("Please complete your user account", 'info')
            return redirect(url_for("auth.user_profile"))
    login_user(user, remember=True)
    flash(u'Logged in via Slack')
    return redirect(url_for("public.home"))
Exemplo n.º 8
0
def register():
    """Register new user."""
    if current_app.config['DRIBDAT_NOT_REGISTER']:
        flash("Registration currently not possible.", 'warning')
        return redirect(url_for("auth.login", local=1))
    form = RegisterForm(request.form)
    if request.args.get('name') and not form.username.data:
        form.username.data = request.args.get('name')
    if request.args.get('email') and not form.email.data:
        form.email.data = request.args.get('email')
    if request.args.get('web') and not form.webpage_url.data:
        form.webpage_url.data = request.args.get('web')
    if form.validate_on_submit():
        sane_username = sanitize_input(form.username.data)
        new_user = User.create(username=sane_username,
                               email=form.email.data,
                               webpage_url=form.webpage_url.data,
                               password=form.password.data,
                               active=True)
        new_user.socialize()
        if User.query.count() == 1:
            new_user.is_admin = True
            new_user.save()
            flash("Administrative user created - have fun!", 'success')
        elif current_app.config['DRIBDAT_USER_APPROVE']:
            new_user.active = False
            new_user.save()
            flash(
                "Thank you for registering. New accounts require approval " +
                "from the event organizers. Please update your profile " +
                "and await activation.", 'warning')
        else:
            flash(
                "Thank you for registering. You can now log in and submit " +
                "projects.", 'success')
        login_user(new_user, remember=True)
        return redirect(url_for('public.home'))
    else:
        flash_errors(form)
    return render_template('public/register.html',
                           form=form,
                           oauth_type=oauth_type())
Exemplo n.º 9
0
def get_or_create_sso_user(sso_id, sso_name, sso_email, sso_webpage=''):
    """ Matches a user account based on SSO_ID """
    sso_id = str(sso_id)
    user = User.query.filter_by(sso_id=sso_id).first()
    if not user:
        if current_user and current_user.is_authenticated:
            user = current_user
            user.sso_id = sso_id
        else:
            user = User.query.filter_by(email=sso_email).first()
            if user:
                # Update SSO identifier
                user.sso_id = sso_id
                db.session.add(user)
                db.session.commit()
            else:
                username = sso_name.lower().replace(" ", "_")
                user = User.query.filter_by(username=username).first()
                if user:
                    flash(
                        'Duplicate username (%s), please try again or contact an admin.'
                        % username, 'warning')
                    return redirect(url_for("auth.login", local=1))
                user = User.create(username=username,
                                   sso_id=sso_id,
                                   email=sso_email,
                                   webpage_url=sso_webpage,
                                   password=random_password(),
                                   active=True)
            user.socialize()
            login_user(user, remember=True)
            flash("Welcome! Please complete your user account.", 'info')
            return redirect(url_for("auth.user_profile"))
    login_user(user, remember=True)
    flash(u'Logged in - welcome!', 'success')
    if current_event():
        return redirect(url_for("public.event", event_id=current_event().id))
    else:
        return redirect(url_for("public.home"))
Exemplo n.º 10
0
def register():
    """Register new user."""
    if current_app.config['DRIBDAT_NOT_REGISTER']:
        flash("Registration currently not possible.", 'warning')
        return redirect(url_for("auth.login", local=1))
    form = RegisterForm(request.form)
    if request.args.get('name') and not form.username.data:
        form.username.data = request.args.get('name')
    if request.args.get('email') and not form.email.data:
        form.email.data = request.args.get('email')
    if request.args.get('web') and not form.webpage_url.data:
        form.webpage_url.data = request.args.get('web')
    user1 = User.query.filter_by(email=form.email.data).first()
    if user1:
        flash("A user account with this email already exists", 'warning')
    elif form.validate_on_submit():
        new_user = User.create(username=sanitize_input(form.username.data),
                               email=form.email.data,
                               webpage_url=form.webpage_url.data,
                               password=form.password.data,
                               active=True)
        new_user.socialize()
        if User.query.count() == 1:
            new_user.is_admin = True
            new_user.save()
            flash("Administrative user created - have fun!", 'success')
        else:
            flash(
                "Thank you for registering. You can now log in and submit projects.",
                'success')
        login_user(new_user, remember=True)
        return redirect(url_for('public.home'))
    else:
        flash_errors(form)
    return render_template('public/register.html',
                           current_event=current_event(),
                           form=form,
                           oauth_type=oauth_type())
Exemplo n.º 11
0
def load_user(user_id):
    """Load user by ID."""
    return User.get_by_id(int(user_id))
Exemplo n.º 12
0
 def test_password_is_nullable(self):
     """Test null password."""
     user = User(username='******', email='*****@*****.**')
     user.save()
     assert user.password is None
Exemplo n.º 13
0
 def test_created_at_defaults_to_datetime(self):
     """Test creation date."""
     user = User(username='******', email='*****@*****.**')
     user.save()
     assert bool(user.created_at)
     assert isinstance(user.created_at, dt.datetime)
Exemplo n.º 14
0
 def test_created_at_defaults_to_datetime(self):
     """Test creation date."""
     user = User(username='******', email='*****@*****.**')
     user.save()
     assert bool(user.created_at)
     assert isinstance(user.created_at, dt.datetime)
Exemplo n.º 15
0
 def test_password_is_nullable(self):
     """Test null password."""
     user = User(username='******', email='*****@*****.**')
     user.save()
     assert user.password is None
Exemplo n.º 16
0
def load_user(user_id):
    """Load user by ID."""
    return User.get_by_id(int(user_id))
Exemplo n.º 17
0
 def test_check_password(self):
     """Check password."""
     user = User.create(username='******', email='*****@*****.**',
                        password='******')
     assert user.check_password('foobarbaz123') is True
     assert user.check_password('barfoobaz') is False