예제 #1
0
def register_user(form_data):
    """
    Takes a dictionary returns a string with error message if
    validation does not pass. Otherwise returns
    None. Interacts with database - inserts new entry for a given user.

    Two expected inputs are expected under form_data
    1. form submmited through add_user webpage
    2. result of authentication via oauth

    form_data should be a dict or dict like object
    with the following keys:
    - "username": ascii string,
    - "password": ascii,
    - "email": ascii.
    """
    username = form_data['username']
    password = form_data["password"]
    user = User()
    if not is_ascii(username) or not is_ascii(password):
        return "password and username must be in ascii"
    if user.get_id(username) is not None:
        return "username taken!"

    form_data["password"] = hash_password(form_data["password"])
    form_data['points'] = 10
    form_data["date_created"] = datetime.fromtimestamp(time.time())
    form_data["about_me"] = "Who are you {user}?". \
        format(user=form_data["username"])
    form_data.pop("confirm", None)

    user.insert_(form_data)
    return None
예제 #2
0
def oauthLogin(provider_name):
    authomatic = Authomatic(AUTHOMATIC_CONFIG,
                            'your secret string',
                            report_errors=True)
    response = make_response()
    result = authomatic.login(WerkZeug(request, response), provider_name)
    if result:
        if result.user:
            result.user.update()
            appuser = dict(username=result.user.username,
                           email=result.user.email,
                           password="******")
            logging.debug(appuser)
            user = User()
            uid = user.get_id(appuser['username'])
            if uid is not None:
                log_user_in(appuser['username'], uid)
            else:
                # call register user
                message = register_user(appuser)
                if message is None:
                    return log_user_in(appuser['username'], uid)
                return str(message)
            # query db and see if result.user.email is there,
            # if the answer is yes, get username and all stuff for this user
            # log him in with the data from our database
            # if he is not there then add result.user.email, result.user.stuff
            # generate password for him and log him in with that
            #log_user_in(appuser.username,appuser.uid) #,True,result.user.email)
        return redirect(url_for('startpage', n=0))
    return response
예제 #3
0
def oauthLogin(provider_name):
    authomatic = Authomatic(AUTHOMATIC_CONFIG, 'your secret string', report_errors=True)
    response = make_response()
    result = authomatic.login(WerkZeug(request,response),provider_name)
    if result:
        if result.user:
            result.user.update()
            appuser = dict(username = result.user.username,
                email = result.user.email,password="******")
            logging.debug(appuser)
            user = User()
            uid = user.get_id(appuser['username'])
            if uid is not None:
                log_user_in(appuser['username'],uid)
            else:
                # call register user
                message = register_user(appuser)
                if message is None:
                    return log_user_in(appuser['username'],uid)
                return str(message)
            # query db and see if result.user.email is there,
            # if the answer is yes, get username and all stuff for this user
            # log him in with the data from our database
            # if he is not there then add result.user.email, result.user.stuff
            # generate password for him and log him in with that
            #log_user_in(appuser.username,appuser.uid) #,True,result.user.email)
        return redirect(url_for('startpage',n=0))
    return response
예제 #4
0
def register_user(form_data):
    """
    Takes a dictionary returns a string with error message if
    validation does not pass. Otherwise returns
    None. Interacts with database - inserts new entry for a given user.

    Two expected inputs are expected under form_data
    1. form submmited through add_user webpage
    2. result of authentication via oauth

    form_data should be a dict or dict like object
    with the following keys:
    - "username": ascii string,
    - "password": ascii,
    - "email": ascii.
    """
    username = form_data['username']
    password = form_data["password"]
    user = User()
    if not is_ascii(username) or not is_ascii(password):
        return "password and username must be in ascii"
    if user.get_id(username) is not None:
        return "username taken!"

    form_data["password"] = hash_password(form_data["password"])
    form_data['points'] = 10
    form_data["date_created"] = datetime.fromtimestamp(time.time())
    form_data["about_me"] = "Who are you {user}?". \
        format(user=form_data["username"])
    form_data.pop("confirm", None)

    user.insert_(form_data)
    return None
예제 #5
0
def login_post():
    loginForm = Login(request.form)
    registrationForm = Register(request.form)
    if loginForm.validate():
        user = User()
        username = request.form['username']
        password = request.form['password']
        uid = user.get_id(username)
        if uid is not None and user.check_pass(username, password):
            return log_user_in(username, uid)
        flash('Invalid username or password','error')
    return render_template('users/login.html', loginForm=loginForm,
        registrationForm=registrationForm)
예제 #6
0
def login_post():
    loginForm = Login(request.form)
    registrationForm = Register(request.form)
    if loginForm.validate():
        user = User()
        username = request.form['username']
        password = request.form['password']
        uid = user.get_id(username)
        if uid is not None and user.check_pass(username, password):
            return log_user_in(username, uid)
        flash('Invalid username or password', 'error')
    return render_template('users/login.html',
                           loginForm=loginForm,
                           registrationForm=registrationForm)
예제 #7
0
def edit_profile_post():
    form = Profile(request.form)
    if form.validate():
        User().update_profile(escape(session["uid"]), **form.data)
        flash('Your profile has been updated')
        return redirect(url_for('startpage', n=0))
    return redirect(url_for('edit_profile'))
예제 #8
0
def edit_profile():
    form = Profile(request.form)
    profile = User().get_profile(escape(session['uid']))
    if profile:
        flash("Edit your profile %s" % escape(session['username']))
        return render_template("users/edit_profile.html",
                               profile=profile,
                               form=form)
    return render_template("Errorpage.html")
예제 #9
0
def checkUsername():
    user = User()
    username = request.form["what"]
    if user.inDb(username):
        return json.dumps(True)
    return json.dumps(False)
예제 #10
0
def checkUsername():
    user = User()
    username = request.form["what"]
    if user.inDb(username):
        return json.dumps(True)
    return json.dumps(False)