Exemple #1
0
def linkedin_dissocier():
    """
    Virer l'association au compte linkedin d'un ancien
    :return:
    """
    if current_user.id_ancien is not None:
        app.logger.info(
            "LINKEDIN - successful unlink for user : %s, ancien : %s",
            current_user.id, current_user.id_ancien)
        annuaire.update_linkedin_ancien(current_user.id_ancien)
        flash("Compte LinkedIn dissocié de l'annuaire", "success")
    return redirect(url_for('compte'))
Exemple #2
0
def linkedin_associer():
    """
    Fonction de callback appelée par LinkedIn.
    Associer un compte ancien à un compte LinkedIn.

    Permet de :
    - Afficher le widget linkedin dans le profil de l'Ancien
    - Se connecter avec LinkedIn.

    Worfklow :
    - Request un token
    - Faire un appel sur l'API "people" pour obtenir l'id_linkedin et l'url du profil.
    - Récupérer ces données et les insérer en base
    """
    success = False
    app.logger.info(
            "LINKEDIN - begin authorize for ancien : %s, user : %s",
            current_user.id_ancien,
            current_user.id)

    if current_user.id_ancien is not None:
        ancien = annuaire.find_ancien_by_id(current_user.id_ancien)
        if ancien is not None:
            access_token = __get_linkedin_token(url_for('linkedin_associer', _external=True))
            api_url = "https://api.linkedin.com/v1/people/~:(id,public-profile-url)?oauth2_access_token=%s" % access_token
            api_req =  requests.get(api_url)
            if api_req is not None and api_req.status_code == requests.codes.ok:
                parsed = etree.fromstring(api_req.text.encode("utf-8"))
                if parsed is not None:
                    id_linkedin = None
                    url_linkedin = None
                    for e in parsed:
                        if e.tag == "id":
                            id_linkedin = e.text
                        elif e.tag == "public-profile-url":
                            url_linkedin = e.text
                    if url_linkedin is not None and id_linkedin is not None:
                        success = annuaire.update_linkedin_ancien(ancien['id_ancien'], id_linkedin, url_linkedin)
                        app.logger.info(
                            "LINKEDIN - successful update for user : %s, ancien : %s, id_linkedin : %s, url public profile : %s",
                            current_user.id, ancien['id_ancien'], id_linkedin, url_linkedin)

            if not success:
                app.logger.error(
                    "LINKEDIN - bad people API request for user : %s, code : %s, request response : %s",
                    current_user.id, api_req.status_code, api_req.text)

    if success:
        flash("Profil linkedin correctement connecté !", "success")
    else:
        flash("Oups ! Il y a eu un problème pendant la connexion. Merci de contacter l'administrateur.", "danger")
    return redirect(url_for("compte"))