示例#1
0
def create_password():
    register_html = 'register.html'
    username = request.form.get('username')
    password = request.form.get('password')
    confirm_password = request.form.get('confirm_password')
    system = request.form.get('system')
    response = all_checks(password, confirm_password)
    if response:
        return render_template(register_html, error=response), 400
    df = read_df_from_csv(file_names('file_name'))
    row = df.loc[(df['Username'] == username) & (df['System'] == system)]
    if row.empty:
        hashed_password, salt = hash_password(password)
        if not username:
            return render_template(register_html,
                                   error="username can be blank"), 400
        save_password(hashed_password, salt, username, system)
        message = "Password saved successfully, please login with new password"
        return render_template(file_names('user_login_html'),
                               message=message), 200
    else:
        return render_template(
            register_html,
            error=
            "The password is already generated for user '{}' in '{}' system".
            format(username, system)), 400
示例#2
0
def renew_password():
    renew_html = 'renew.html'
    username = request.form.get('username')
    password = request.form.get('password')
    confirm_password = request.form.get('confirm_password')
    system = request.form.get('system')
    df = read_df_from_csv(file_names('file_name'))
    row = df.loc[(df['Username'] == username) & (df['System'] == system)]
    if row.empty:
        error = "Invalid details"
        return render_template(renew_html, error=error), 400
    else:
        index = row.index[0]
        hashed_password = df['Hashed_Password'][index]
        response = match_password(hashed_password, password)
        if response == True:
            error = "Password cannot be same as of previous one"
            return render_template(renew_html, error=error), 400
        response = all_checks(password, confirm_password)
        if response:
            return render_template(renew_html, error=response), 400
        hashed_password, salt = hash_password(password)
        index = df.loc[df['Username'] == username].index[0]
        df['Hashed_Password'][index] = hashed_password
        df['Salt'][index] = salt
        df['Date'][index] = datetime.datetime.now()
        save_to_file(df, file_names('file_name'))
        message = "Password saved successfully, please login with new password"
        return render_template(file_names('user_login_html'),
                               message=message), 200
示例#3
0
def generate_password():
    '''
    This function will generate a new password when required whose length will be in between 12 to 15 characters.
    :rtype: string
    '''
    username = request.form.get('username')
    system = request.form.get('system')
    df = read_df_from_csv(file_names('file_name'))
    row = df.loc[(df['Username'] == username) & (df['System'] == system)]
    if row.empty:
        generated_password = ''.join(
            random.choices(string.ascii_letters + string.digits +
                           "@!#$&%*@!#$&%*",
                           k=16))
        hashed_password, salt = hash_password(generated_password)
        if not username:
            return render_template(file_names('generate_password'),
                                   message="username can be blank"), 400
        save_password(hashed_password, salt, username=username, system=system)
        return render_template(
            file_names('user_login_html'),
            message="Password generated for {} is {}".format(
                username, generated_password)), 200
    else:
        return render_template(
            file_names('generate_password'),
            message=
            "The password is already generated for user '{}' in '{}' system".
            format(username, system)), 400
示例#4
0
def create_generate_password():
    register_html = 'register.html'
    password_creation_option = request.form.get('password_creation_option')
    if password_creation_option == 'create_password':
        return render_template(register_html)
    else:
        return render_template(file_names('generate_password'))
示例#5
0
def login():
    username = request.form.get('username')
    password = request.form.get('password')
    response = check_pms_login_credentials(username, password)
    if response == True:
        return render_template('home.html'), 200
    error = file_names('invalid_credentials')
    return render_template('login.html', error=error), 400
示例#6
0
def user_login_validation():
    renew_html = 'renew.html'
    username = request.form.get('username')
    password = request.form.get('password')
    system = request.form.get('system')
    df = read_df_from_csv(file_names('file_name'))
    row = df.loc[(df['Username'] == username) & (df['System'] == system)]
    if row.empty:
        error = file_names('invalid_credentials')
        return render_template(file_names('user_login_html'), error=error), 400
    else:
        index = row.index[0]
        hashed_password = df['Hashed_Password'][index]
        response = match_password(hashed_password, password)
        if response == False:
            error = file_names('invalid_credentials')
            return render_template(file_names('user_login_html'), error=error)
        else:
            password_min_chars = str(config.get('PASSWORD', 'CHAR_COUNT'))
            required_chars = str(
                config.get('PASSWORD', 'REQUIRED_CHARS').split(',')[3])
            if (datetime.datetime.now() -
                    pd.to_datetime(df['Date'][index])).days >= 30:
                return render_template(
                    renew_html,
                    error="Password is expired! Please change password",
                    username=username,
                    password_min_chars=password_min_chars,
                    required_chars=required_chars)
            if not validate_password(password):
                return render_template(
                    renew_html,
                    error=
                    "Password criteria is revised! Please change password",
                    username=username,
                    password_min_chars=password_min_chars,
                    required_chars=required_chars)
            return render_template('user_home.html', username=username)
示例#7
0
def user_login():
    return render_template(file_names('user_login_html'))