예제 #1
0
def change_pass():
    cn = conection()
    cursor = cn.cursor()

    if request.method == 'POST':

        password_new = request.form["PASS"]

        sql_query = "UPDATE user SET PPass = %s WHERE UserID= %s"

        try:
            #print(username)
            #print(password)
            val = (session["id"])
            cursor.execute(sql_query, (
                password_new,
                val,
            ))
            cn.commit()
        except mysql.connector.Error as err:  #caso algum erro aconteça com o insert.
            print(err)
            flash(f"Um erro inesperado aconteceu. Tente novamente.")
            cn.rollback()
            close_conec(cn, cursor)
            return redirect(url_for('user'))
        else:
            flash(f"Palavra-Passe alterada com sucesso.", "info")
            close_conec(cn, cursor)
            return redirect(url_for('user'))
예제 #2
0
def login():

    if request.method == 'POST':
        print("entrei no POST")
        username = request.form['USER']
        password = request.form['PASS']
        session[
            "user"] = username  #se cheguei aqui, o utilizador existe, abro a session
        session.permanent_session_lifetime = True
        sql_query = "SELECT * FROM user WHERE UserName = %s"
        val = (username)

        cn = conection()  #estableço conecção a nossa base dde dados
        cursor = cn.cursor()

        try:
            cursor.execute(
                sql_query, (val, )
            )  #tive de adicionar uma ',' pois, nao processava os parametros.
            myresult = cursor.fetchone(
            )  #apenas preciso de uma linha, dai o fetchone//
            myresult[
                1]  #tenho acesso ao unico parametro que me interessa do resultset
            #login_credential = myresult[2] #faço o catch da password para confirmar no futuro//
            #flash(f"----------------LOGIN_DATABASE: "+ login_credential)
        except (TypeError):
            session.clear()
            print("Dei a excepçao")
            flash(f"Utilizador inexistente! Tente novamente.", "info")
            close_conec(cn, cursor)
            return render_template('login.html')

        else:
            #p_desencriptada=decrypt(myresult[5],myresult[2],myresult[6])
            #print("sou a passe depois de desencriptada: "+ p_desencriptada)
            if password != myresult[2]:
                session.clear()  #limpar dados user
                flash(f"Palavra-passe errada. Por favor tente novamente.",
                      "info")
                close_conec(cn, cursor)
                return render_template('login.html')
            elif myresult[3] == 1:
                print("---------SOU ADMIN--------")
                flash(f"Sessão iniciada com sucesso.", "info")
                close_conec(cn, cursor)
                return redirect(
                    url_for('user'))  #, flag=myresult[3], **request.args))
            else:
                session["id"] = myresult[0]
                print(session["id"])
                print("vim aqui")
                flash(f"Sessão iniciada com sucesso.", "info")
                close_conec(cn, cursor)
                return redirect(
                    url_for('user'))  #flag=myresult[3], **request.args))
예제 #3
0
def registo():

    if request.method == 'POST':

        username = request.form["USER"]
        password = '******'

        if (username == ""):
            flash(f"Nome de utilizador inválido. Tente novamente.", "info")
            return redirect(url_for('pre_clean'))

        cn = conection()
        cursor = cn.cursor()

        try:
            sql_query = "SELECT * FROM user WHERE username = %s"
            val = (username)
            cursor.execute(sql_query, (val, ))
            myresult = cursor.fetchone(
            )  #apenas preciso de uma linha, dai o fetchone//
            myresult[
                1]  #tenho acesso ao unico parametro que me interessa do resultset

        except (TypeError):
            print("Dei a excepçao")
            #antes de fazer o insert, irei passar-lhe então os valores da key e salt.
            #set_package=encrypt(password)
            #Neste caso, a excepção e útil para garantirmos que nao há 2 usernames iguais.
            try:
                sql_query = "INSERT INTO user (UserName, PPass) VALUES(%s,%s)"
                #print(username)
                #print(password)
                #val=(username,set_package.pass_encri, set_package.key, set_package.iv)
                val = (username, password)
                cursor.execute(sql_query, val)
                cn.commit()
            except mysql.connector.Error as err:  #caso algum erro aconteça com o insert.
                print(err)
                flash(f"Um erro inesperado aconteceu. Tente novamente.")
                cn.rollback()
                close_conec(cn, cursor)
                return redirect(url_for('pre_clean'))
            else:
                flash(f"Utilizador registado com sucesso.", "info")
                close_conec(cn, cursor)
                return redirect(url_for('pre_clean'))

        else:
            print("vim aqui")
            flash(f"O username já existe. Tente novamente. ", "info")
            close_conec(cn, cursor)
            return redirect(url_for('pre_clean'))
예제 #4
0
def change_username():
    cn = conection()
    cursor = cn.cursor()

    if request.method == 'POST':

        username = request.form["USER"]
        sql_query = "SELECT * FROM user WHERE username = %s"

        try:
            val = (username)
            cursor.execute(sql_query, (val, ))
            myresult = cursor.fetchone(
            )  #apenas preciso de uma linha, dai o fetchone//
            myresult[
                1]  #tenho acesso ao unico parametro que me interessa do resultset

        except (TypeError):
            print("Dei a excepçao")
            #antes de fazer o insert, irei passar-lhe então os valores da key e salt.
            #set_package=encrypt(password)
            #Neste caso, a excepção e útil para garantirmos que nao há 2 usernames iguais.
            try:
                sql_query = "UPDATE user SET UserName = %s WHERE UserID= %s"
                #print(username)
                #print(password)

                val = (session["id"])
                cursor.execute(sql_query, (
                    username,
                    val,
                ))
                cn.commit()
            except mysql.connector.Error as err:  #caso algum erro aconteça com o insert.
                print(err)
                flash(f"Um erro inesperado aconteceu. Tente novamente.")
                cn.rollback()
                close_conec(cn, cursor)
                return redirect(url_for('user'))
            else:
                flash(
                    f"Username editado com sucesso. Para que as alterações tenham efeito, por favor volte a entrar.",
                    "info")
                close_conec(cn, cursor)
                return redirect(url_for('user'))

        else:
            print("vim aqui")
            flash(f"O username já existe. Tente novamente. ", "info")
            close_conec(cn, cursor)
            return redirect(url_for('user'))
예제 #5
0
def listagem_sims():
    cn = conection()
    cursor = cn.cursor()

    sql_stm = "SELECT * FROM sims where UserID = %s"
    val = session[
        "id"]  #aqui faco o retrieve do id do meu user, para dar uso a listagem das suas simulacoes
    #print(session["id"])
    cursor.execute(sql_stm, (val, ))
    result_set = cursor.fetchall()

    #formei um dicionário com o nosso result set
    dic = {row[1]: row[3] for row in result_set}
    #print(dic)
    close_conec(cn, cursor)
    return render_template('sims.html', simulations=dic.items())
예제 #6
0
def pre_clean():

    cn = conection()
    cursor = cn.cursor()

    sql_stm = "SELECT * FROM user"
    cursor.execute(sql_stm)
    result_set = cursor.fetchall()

    #formei um dicionário com o nosso result set
    dic = {row[1]: row[0] for row in result_set}

    #aqui elimino o admin da nossa lista, para que nao apareça na tabela.
    dic.pop("Administrador")
    #print(dic)

    close_conec(cn, cursor)
    return render_template('gestao_users.html', Utiliz=dic.items())
예제 #7
0
def delete(name):
    cn = conection()
    cursor = cn.cursor()

    try:
        sql_stm = "DELETE FROM sims WHERE Designacao= %s"
        val = (name)
        cursor.execute(sql_stm, (val, ))
        cn.commit()
    except mysql.connector.Error as err:
        print(err)
        flash(f"Aconteceu um erro inesperado, tente novamente.")
        cn.rollback()
        close_conec(cn, cursor)
        return redirect(url_for('listagem_sims'))
    else:
        print("CHEGUEI AO FIM")
        close_conec(cn, cursor)
        flash(f"Simulação eliminada com sucesso.", "info")
        return redirect(url_for('listagem_sims'))
예제 #8
0
def erase(id):

    cn = conection()
    cursor = cn.cursor()

    try:
        sql_stm = "DELETE FROM user WHERE UserID= %s"
        val = (id)
        cursor.execute(sql_stm, (val, ))
        cn.commit()
    except mysql.connector.Error as err:
        print(err)
        flash(f"Aconteceu um erro inesperado, tente novamente.")
        cn.rollback()
        close_conec(cn, cursor)
        return redirect(url_for('pre_clean'))
    else:
        print("CHEGUEI AO FIM")
        close_conec(cn, cursor)
        flash(f"Utilizador eliminado com sucesso.", "info")
        return redirect(url_for('pre_clean'))