Esempio n. 1
0
def resend(id_user):
    """
    Méthode pour renvoyer l'email de confirmation d'une inscription

    :param id_user: id_user de la préinscription à renvoyer par mail
    """
    if helper.is_valid_integer(id_user) is not None:
        utilisateur = user.find_user_by_id(id_user)
        if utilisateur is not None and not utilisateur.actif:
            signature = helper.generate_signed_string_from_mail(utilisateur.mail)
            helper.send_activation_mail(utilisateur.mail, signature)
            flash(
                "Succès : un mail d'activation te sera envoyé prochainement",
                "success"
            )
            app.logger.info("RESEND - resend mail for user with id %s", utilisateur.id)
        else:
            flash("Echec : aucune inscription trouvée, "
            "merci de contacter l'adminsitrateur pour plus d'information", "danger")
            app.logger.error("RESEND - try resend but no utilisateur found for id %s", id_user)
    else:
        flash("Echec : pas d'id utilisateur, "
            "merci de contacter l'adminsitrateur pour plus d'information", "danger")
        app.logger.error("RESEND - no id user")
    return redirect(url_for("login"))
Esempio n. 2
0
def inscription():
    """
    Vue d'enregistrement pour les nouveaux utilisateurs.

    GET :
    1/  Page d'accueil qui permet de se logguer ou créer un utilisateur.
        On peut se logguer via son compte ou via LinkedIn.
    2/  Si l'utilisateur veut créer un compte, il rentre une adresse
        adresse mail @mines-paris.org / @mines-nancy.org / @mines-saint-etienne.org
        ainsi qu'un mot de passe.

    POST :
    1/ On vérifie que le form est valable (mots de passe corrects et égaux)
    2/ On cherche s'il existe déjà un utilisateur pour l'ancien trouvé
        -> Si oui
        2.1/ Si il existe déjà un utilisateur ACTIF, alors annuler l'inscription
        2.2/ Si il existe déjà un utilisateur INACTIF, rediriger vers resend
        -> Si non -> 3
    3/ Création de l'inscription
        a. On crée la string signée à envoyer
        b. On crée l'utilisateur
        c. On envoie le mail de confirmation
        d. On redirige vers la page de login

    :return:
    """
    form = user.registration_form(request.form)

    if current_user.is_authenticated():
        return redirect(url_for('annuaire_view'))

    if request.method == 'POST' and form.validate():

        # Chargement des infos du form
        mail_ancien = form.mail_ancien.data+form.domaine_ancien.data
        password = form.password.data
        app.logger.info("REGISTER - Trying to add user for %s", mail_ancien)

        # Gestion des utilisateurs : si un compte existe déjà, le signaler
        utilisateur = user.find_user_by_mail(mail_ancien, actif_only=False)
        if utilisateur is not None:

            if utilisateur.actif:
                # Un compte actif existe déjà = interdit d'en re-créer un
                flash("Un compte existe déjà pour cet ancien !", "warning")
                app.logger.warning("REGISTER - double register for user with id %s", utilisateur.id)
                return redirect(url_for("login"))
            else:
                # un compte incatif existe déjà = renvoyer le mail de validation
                app.logger.warning("REGISTER - resend for utilisateur with id %s", utilisateur.id)
                return render_template("user/resend.html", id_utilisateur=utilisateur.id)

        else:

            # Signature du mail user
            signature = helper.generate_signed_string_from_mail(mail_ancien)

            # Création de l'utilisateur
            if user.create_user(mail_ancien, password):

                # Envoi du mail
                annuaire.helper.send_activation_mail(mail_ancien, signature)

                flash("Succès : un mail d'activation vous sera envoyé prochainement", "success")
                app.logger.info("REGISTER - created preinscription user with mail %s", mail_ancien)
                return redirect(url_for("login"))

            else:
                flash("Échec lors de l'inscription. Merci de contacter l'administrateur", "danger")
                app.logger.error("REGISTER - problème à la création de l'utilisateur : %s", mail_ancien)
                return redirect(url_for("login"))


    linkedin_url = ("https://www.linkedin.com/uas/oauth2/authorization?"
                        "response_type=code&"
                        "client_id=%s&"
                        "scope=%s"
                        "&state=%s"
                        "&redirect_uri=%s" %
                        (app.config['LINKEDIN_KEY'],
                         'r_basicprofile',
                         helper.generate_csrf_token(),
                         url_for('linkedin_login', _external=True)))
    return render_template('user/register.html', form=form, linkedin_url=linkedin_url)