def update_password(): """ Mettre à jour son mot de passe. Lors de la mise à jour, on vérifie que l'utilisateur connait bien le mot de passe actuel, afin d'éviter les reset par des tierces personnes sur des sessions ouvertes. POST : "commit" les données """ res = {} res["content"] = None res["csrf_token"] = generate_csrf_token() res["success"] = False # Confirmer form = user.change_password_form(request.form) form_confirmed = form.validate() # verifier que l'ancien mot de passe est le bon password_confirmed = user.confirm_password(current_user.id, form.old_password.data) if not password_confirmed: app.logger.warning("UPDATE PASS - wrong password for user with id %s", current_user.id) form.old_password.errors = ['Ancien mot de passe incorrect'] # si tout va bien, mettre a jour. if form_confirmed and password_confirmed: result = user.update_password_by_id(current_user.id, form.old_password.data, form.new_password.data) if result: app.logger.info("UPDATE PASS - successfully changed password for user with id %s", current_user.id) flash("Mot de passe correctement mis à jour", "success") res["success"] = True return json.dumps(res) else: app.logger.error("UPDATE PASS - error changing password for user with id %s", current_user.id) flash("Problème à la mise à jour, contacter l'administrateur", "danger") res["content"] = render_template('annuaire/profile/_password.html', password_form = form) return json.dumps(res)
def ancien(id_ancien): """ Afficher le profil d'un ancien. Si l'ancien est l'ancien associé à l'utilisateur, alors on affiche des formulaires d'update pour : - Les infos perso - L'adresse perso - Les expériences pros - Le mot de passe On affiche également les fonctionnalités linkedin : - Associer / dissocier mon compte - Importer des expériences :param int id_ancien: L'id de l'ancien étudié :return: """ is_this_me = current_user is not None and current_user.id_ancien == id_ancien kwargs = { "actif" : True, "bloque" : False } if is_this_me or current_user.admin: kwargs = { "actif" : None, "bloque" : None } # Chargement de l'ancien ancien = annuaire.find_ancien_by_id(id_ancien, **kwargs) # Cas 1 : il n'existe pas if ancien is None: abort(404, "Il semblerait que la page n'existe pas ...") # cas 2 : il est bloqué # (donc normalement ici c'est l'utilisateur concerné qui consulte la fiche) elif is_this_me and ancien['bloque']: flash( "Ton compte a été désactivé par les administrateurs." "Nous t'invitons à les contacter pour le débloquer.", "danger" ) return redirect(url_for("annuaire_view")) # Cas 3 : cas nominal ! else: ancien_form = user.update_ancien_form() adresse_form = user.update_adresse_form() adresse_form.set_pays(PAYS) experience_forms = {} new_experience_form = None linkedin_url = None import_linkedin_url = None password_form = user.change_password_form() # get data by id ancien adresse = annuaire.find_adresse_by_id_ancien(id_ancien) experiences = annuaire.find_experience_by_id_ancien(id_ancien).fetchall() for exp in experiences: form = user.update_experience_form() form.set_pays(PAYS) form.load_experience(exp) experience_forms[exp['experience_id_experience']] = form # Ici on regarde si il s'agit bien de l'utilisateur if is_this_me: #~~~~~~~~~# # ADRESSE # #~~~~~~~~~# adresse = annuaire.find_adresse_by_id_ancien(current_user.id_ancien) if adresse is not None: adresse_form.load_adresse(adresse) #~~~~~~~~~~~~~# # INFOS PERSO # #~~~~~~~~~~~~~# ancien_form = user.update_ancien_form() ancien_form.load_ancien(ancien) #~~~~~~~~~~~~~~~~~~# # AJOUT EXPERIENCE # #~~~~~~~~~~~~~~~~~~# new_experience_form = user.update_experience_form() new_experience_form.set_pays(PAYS) #~~~~~~~~~~~~~~~~~~# # Gestion LinkedIn # #~~~~~~~~~~~~~~~~~~# # Connexion à LinkedIn if ancien['url_linkedin'] is None: linkedin_url = ("https://www.linkedin.com/uas/oauth2/authorization?" "response_type=code&" "client_id=%s&" "scope=r_basicprofile" "&state=%s" "&redirect_uri=%s" % (app.config['LINKEDIN_KEY'], #app.config['LINKEDIN_SCOPE'], generate_csrf_token(), url_for('linkedin_associer', _external=True))) # import des expériences pro linkeding import_linkedin_url = ("https://www.linkedin.com/uas/oauth2/authorization?" "response_type=code&" "client_id=%s&" "scope=r_basicprofile" "&state=%s" "&redirect_uri=%s" % (app.config['LINKEDIN_KEY'], #app.config['LINKEDIN_SCOPE'], generate_csrf_token(), url_for('linkedin_importer', _external=True))) print import_linkedin_url # load page return render_template( 'annuaire/ancien.html', admin=current_user.admin, ancien=ancien, adresse=adresse, ancien_form=ancien_form, adresse_form=adresse_form, experiences=experiences, utilisateur=current_user, editable=is_this_me, experience_forms=experience_forms, new_experience_form = new_experience_form, linkedin_url = linkedin_url, import_linkedin_url= import_linkedin_url, password_form = password_form )