Beispiel #1
0
 def test_serialize(self):
     db = StringIO()
     User('James', 'Secret007', 'Active').serialize(db)
     self.assertEquals(db.getvalue(), 'James\tSecret007\tActive\n')
     User('user', 'T3stpass').serialize(db)
     self.assertEquals(
         db.getvalue(), 'James\tSecret007\tActive\n'
         'user\tT3stpass\tInactive\n')
Beispiel #2
0
def login():
    # Redirect to listing page if user is logged in
    if current_user.is_authenticated:
        return redirect(url_for('listing'))
    form = LoginForm()
    if form.validate_on_submit():
        user = users.find_one({'email': form.email.data})
        # If user exists and password matches password in db,
        # log in and create a user session
        if user and bcrypt.check_password_hash(
                        user['password'],
                        form.password.data.encode('utf-8')):
            username = user['username']
            # Save session, even after browser is closed
            login_user(User(user), remember=form.remember.data)

            # Checks where to redirect the user after login
            next_page = request.args.get('next')
            flash(f'Welcome to squirrel, {username}.', 'success')

            # If unauthorized page has been accessed before being logged in,
            # redirect to it after login if it is safe
            if next_page and is_safe_url(next_page, socket.gethostname()):
                return redirect(next_page)

            # If not, redirect to the listing page
            else:
                return redirect(url_for('listing'))
        else:
            flash(
                'Login unsucessful, please check email and password.',
                'danger')

    return render_template('pages/login.html', title="Login", form=form)
Beispiel #3
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('listing'))
    form = RegistrationForm()
    if form.validate_on_submit():
        existing_email = users.find_one({'email': form.email.data})
        # Create new user only if email is not already in use
        if existing_email is None:
            hashed_password = bcrypt.generate_password_hash(
                                form.password.data
                                ).decode('utf-8')
            users.insert_one({
                "username": form.username.data,
                "email": form.email.data,
                "password": hashed_password,
            })
            # Log in once user is created in db
            user = users.find_one({'email': form.email.data})
            login_user(User(user), remember=False)
            flash(f'Account created for {form.username.data}.', 'success')
            return redirect(url_for('listing'))
        else:
            flash(f'Something went wrong with the information provided.',
                   'danger')

    return render_template(
                            'pages/registration.html',
                            title="Registration",
                            form=form)
Beispiel #4
0
 def _verify_creating_fails_with_invalid_password(self, pwd, msg):
     try:
         User('testuser', pwd)
         self.fail("Creating user with password '%s' should have failed "
                   "with error message '%s' but it passed." % (pwd, msg))
     except ValueError, err:
         self.assertEquals(str(err), msg)
Beispiel #5
0
def login() -> Response:
    """Login route. Processes post messages from the login form.

    :return: A redirect to the landing page.
    """

    # build the redirect, regardless of the result, we're currently always redirecting to the landing
    url: str = url_for('root')
    output: Response = redirect(url)

    # validate form data
    form: LoginForm = LoginForm()
    if not form.validate_on_submit():
        flash('User login failed.', 'danger')
        return output

    name: str = form.name.data
    password: str = form.password.data

    with db_session:
        # validate user & password
        model: UserModel = UserModel.get(name=name)
        if not model or not check_password_hash(model.password_hash, password):
            flash('User login failed.', 'danger')
            return output

        # login the user
        user: User = User(model.user_id, model.name)
        login_user(user, remember=True)
        flash(f'User "{name}" logged in.', 'success')

        return output
Beispiel #6
0
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user_name = form.username.data
        password = form.password.data
        remember_me = form.remember_me.data
        user = User(user_name)
        if user.verify_password(password):
            login_user(user)
            session['project'] = user.get_project()
            return redirect(request.args.get('next') or url_for('manage'))
    return render_template('login.html', title="Sign In", form=form)
Beispiel #7
0
    def login(self, msg=False):
        clear()
        print('---Log in---')
        if msg is not False:
            print(f"!! {str(msg)} !!")
        uname = input('Username: '******'password: '******'Username or password incorrect')
        else:
            self.logged_in(res)
Beispiel #8
0
 def post(self):
     current_user = users.get_current_user()
     user_color = self.request.get('color')
     user = User(first_name=self.request.get('first_name'),
                 last_name=self.request.get('last_name'),
                 email=current_user.email(),
                 color=user_color)
     user_key = user.put()
     family = Family(members=[user_key])
     family.put()
     profile_template = the_jinja_env.get_template('templates/profile.html')
     profile_dict = {"last_name": user.last_name, "family": family}
     self.response.write(profile_template.render(profile_dict))
     time.sleep(0.1)
     self.redirect("/profile")
Beispiel #9
0
def run(do_debug=False):
    """
	Main function to run the program.
	"""
    # Create the user object which has all of the credentials
    user = User()

    db = MySQLdb.connect(host="134.74.126.107",
                         user=user.username,
                         passwd=user.password,
                         db="F16336team7",
                         cursorclass=MySQLdb.cursors.DictCursor)

    cursor = db.cursor()
    #insert_main(cursor,db,do_debug)
    plot(cursor)
Beispiel #10
0
def login():
    email = request.form['email']
    passwd = request.form['password']
    print(email, passwd)
    if email == User.admin_email and passwd == User.admin_passwd:
        user = User(email)
        login_user(user)
        flash('Logged in successfully.')
        next = request.args.get('next')
        # is_safe_url should check if the url is safe for redirects.
        # See http://flask.pocoo.org/snippets/62/ for an example.
        if not is_safe_url(next):
            return abort(400)
        return redirect(next or url_for('index'))
    errmsg = "email or password is wrong!"
    return render_template('login.html', email=email, msg=errmsg)
Beispiel #11
0
    def create_acount(self, msg=False):
        clear()
        print('---Create acount---')
        if msg is not False:
            print(f"!! {str(msg)} !!")

        uname = input('Username: '******'password: '******'user_exists':
            # try again
            self.create_acount('User already exists')
        else:
            self.logged_in(res)
Beispiel #12
0
def register():
    form = RegisterForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            user_name = form.username.data
            password = form.password.data
            project = form.project.data
            user = User(user_name)
            user.register(password, project)
        return render_template('login.html',
                               title="Sign In",
                               form=form,
                               username=session['user_name'])
    return render_template('register.html',
                           title="Register",
                           form=form,
                           username=session['user_name'])
Beispiel #13
0
    def post(self):
        user = User(first_name=self.request.get('first_name'),
                    last_name=self.request.get('last_name'),
                    email=self.request.get('email'),
                    color=self.request.get('color'))

        member = user.put()
        family = load_family_by_email(users.get_current_user().email())
        #adding user to family FamilyMembers
        family.members.append(member)
        #put the Family
        family.put()
        time.sleep(0.1)

        profile_template = the_jinja_env.get_template('templates/profile.html')
        profile_dict = {
            "last_name": user.last_name,
            "first_name": user.first_name,
            "email": user.email,
            "color": user.color,
            "family": family,
        }
        self.response.write(profile_template.render(profile_dict))
Beispiel #14
0
 def test_initialization(self):
     u = User('name', 'P4ssw0rd')
     self.assertEquals(u.username, 'name')
     self.assertEquals(u.password, 'P4ssw0rd')
     self.assertEquals(u.status, 'Inactive')
Beispiel #15
0
 def test_init_with_status(self):
     u = User('James', 'Secret007', 'Active')
     self.assertEquals(u.username, 'James')
     self.assertEquals(u.password, 'Secret007')
     self.assertEquals(u.status, 'Active')
Beispiel #16
0
def load_user(user_id):
    if user_id == User.admin_email:
        return User(User.admin_email)
    return None