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
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())
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)
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
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"))
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"))
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())
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"))
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())
def load_user(user_id): """Load user by ID.""" return User.get_by_id(int(user_id))
def test_password_is_nullable(self): """Test null password.""" user = User(username='******', email='*****@*****.**') user.save() assert user.password is None
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)