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"))
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)