예제 #1
0
 def set_password(self, password, password_confirmation):
     (self.pass_plus, self.pass_md5) = check_and_encrypt_password(
         password,
         password_confirmation,
         current_app.config["PASS_METHOD"] == "md5"
         or current_app.config["FILL_MD5_PASS"],
     )
예제 #2
0
def updatepass(id_role=None):
    """
    Route affichant un formulaire permettant de changer le pass des utilisateurs
    L'envoie du formulaire permet la mise à jour du pass de l'utilisateur dans la base
    Retourne un template accompagné du formulaire pré-rempli ou non selon le paramètre id_role
    Une fois le formulaire validé on retourne une redirection vers la liste des utilisateurs
    """
    form = t_rolesforms.UserPass()
    myuser = TRoles.get_one(id_role)

    if request.method == "POST":
        if form.validate_on_submit() and form.validate():
            form_user = pops(form.data, False)
            form_user.pop("id_role")
            # check if passwords are the same
            if form.pass_plus.data:
                try:
                    (
                        form_user["pass_plus"],
                        form_user["pass_md5"],
                    ) = check_and_encrypt_password(
                        form.pass_plus.data,
                        form.mdpconf.data,
                        current_app.config["PASS_METHOD"] == "md5"
                        or current_app.config["FILL_MD5_PASS"],
                    )
                except Exception as exp:
                    flash({"password": [exp]}, "error")
                    return render_template(
                        "user_pass.html",
                        form=form,
                        title="Changer le mot de passe de l'utilisateur '" +
                        myuser["nom_role"] + " " + myuser["prenom_role"] + "'",
                        id_role=id_role,
                    )
            form_user["id_role"] = id_role
            TRoles.update(form_user)
            return redirect(url_for("user.users"))
        else:
            flash(strigify_dict(form.errors), "error")

    return render_template(
        "user_pass.html",
        form=form,
        title="Changer le mot de passe de l'utilisateur '" +
        myuser["nom_role"] + " " + myuser["prenom_role"] + "'",
        id_role=id_role,
    )
예제 #3
0
 def set_password(self, password, password_confirmation, md5):
     self.password, self.pass_md5 = check_and_encrypt_password(
         password, password_confirmation, md5
     )
예제 #4
0
def addorupdate(id_role=None):
    """
    Route affichant un formulaire vierge ou non (selon l'url) pour ajouter ou mettre à jour un utilisateurs
    L'envoie du formulaire permet l'ajout ou la mise à jour de l'utilisateur dans la base
    Retourne un template accompagné du formulaire pré-rempli ou non selon le paramètre id_role
    Une fois le formulaire validé on retourne une redirection vers la liste des utilisateurs
    """
    form = t_rolesforms.Utilisateur()
    form.id_organisme.choices = Bib_Organismes.choixSelect(
        "id_organisme", "nom_organisme", order_by="nom_organisme")
    form.a_groupe.choices = TRoles.choix_group("id_role",
                                               "nom_role",
                                               aucun=None)

    if id_role is not None:
        user = TRoles.get_one(id_role, as_model=True)
        user_as_dict = user.as_dict_full_name()
        # format group to prepfil the form
        formated_groups = [
            group.id_role for group in TRoles.get_user_groups(id_role)
        ]
        if request.method == "GET":
            form = process(form, user_as_dict, formated_groups)

    if request.method == "POST":
        if form.validate_on_submit() and form.validate():
            groups = form.data["a_groupe"]
            form_user = pops(form.data)
            form_user["groupe"] = False
            form_user.pop("id_role")

            # if a password is set
            # check they are the same
            if form.pass_plus.data:
                try:
                    (
                        form_user["pass_plus"],
                        form_user["pass_md5"],
                    ) = check_and_encrypt_password(
                        form.pass_plus.data,
                        form.mdpconf.data,
                        current_app.config["PASS_METHOD"] == "md5"
                        or current_app.config["FILL_MD5_PASS"],
                    )
                except Exception as exp:
                    flash(str(exp), "error")
                    return render_template("user.html",
                                           form=form,
                                           title="Formulaire Utilisateur")

            if id_role is not None:
                # HACK a l'update on remet a la main les mdp
                # car on les masque dans le form
                form_user["pass_plus"] = user.pass_plus
                form_user["pass_md5"] = user.pass_md5
                form_user["id_role"] = user.id_role
                new_role = TRoles.update(form_user)
            else:
                new_role = TRoles.post(form_user)
            # set groups
            if len(groups) > 0:
                if id_role:
                    # first delete all groups of the user
                    cor_role_to_delete = CorRoles.get_all(
                        params=[{
                            "col": "id_role_utilisateur",
                            "filter": id_role
                        }],
                        as_model=True,
                    )
                    for cor_role in cor_role_to_delete:
                        db.session.delete(cor_role)
                    db.session.commit()
                for group in groups:
                    # add new groups
                    new_group = CorRoles(id_role_groupe=group,
                                         id_role_utilisateur=new_role.id_role)
                    db.session.add(new_group)
                db.session.commit()
            return redirect(url_for("user.users"))

        else:
            flash(strigify_dict(form.errors), "error")
    return render_template("user.html",
                           form=form,
                           title="Formulaire Utilisateur",
                           id_role=id_role)