コード例 #1
0
 def post(self):
     """
     Anlegen eines neuen PartnerVorschlag-Objekts.
     Die vom Client gesendeten Daten werden über die in jeder BO-Klasse verfügbaren Methode from_dict in das
     jeweilige BO überführt und anschließend in die Datenbank geschrieben.
     """
     adm = Admin()
     proposal = PartnerVorschlag.from_dict(api.payload)
     if proposal is not None:
         p = adm.create_partnervorschlag(
             proposal.get_person_id(),
             proposal.get_partnervorschlag_id(),
             proposal.get_aehnlichkeit(),
             proposal.get_matchpoints(),
             proposal.get_entscheidung_person(),
             proposal.get_entscheidung_partner(),
         )
         return p, 200
     else:
         return "", 500
コード例 #2
0
    def wrapper(*args, **kwargs):

        # Aus den Cookies der Request wird der übermittelte Token ausgelesen und als id_token gespeichert.
        id_token = request.cookies.get("token")

        error_message = None
        claims = None
        objects = None

        # Zuerst wird überprüft, ob der Token gültig ist
        if id_token:

            try:

                # Überprüfen wird nun das Token gegen die Firebase Auth API.
                # Dieses Beispiel verifiziert das Token bei jedem Laden der Seite.
                # Hierzu wird der id_token sowie der firebase_request_adapter mitgegeben und in claims gespeichert.
                claims = google.oauth2.id_token.verify_firebase_token(
                    id_token, firebase_request_adapter)

                if claims is not None:
                    adm = Admin()
                    google_user_id = claims.get("user_id")
                    email = claims.get("email")
                    name = claims.get("name")

                    user = adm.get_person_by_google_user_id(google_user_id)

                    if user is not None:
                        """Der User ist dem System bekannt und wir updaten die Email sowie den Namen des Users."""
                        user.set_name(name)
                        user.set_email(email)
                        adm.save_person(user)
                    else:
                        """Ist der User nicht bekannt, so wird für diesen ein neues Profil inkl. Lernvorlieben erstellt.
                        Anschließend werden bei Registrierung auch direkt die ersten Matches (Partner als auch Gruppen)
                        generiert, damit der User direkt neue Lernpartner finden kann."""
                        lv = adm.create_lernvorliebe()
                        profil = adm.create_profil(lv.get_id(), " ")
                        personen = adm.get_all_personen()
                        gruppen = adm.get_all_lerngruppen()
                        user = adm.create_person(name,
                                                 email,
                                                 google_user_id,
                                                 profil_id=profil.get_id())
                        for person in personen:
                            adm.create_partnervorschlag(
                                user.get_id(),
                                person.get_id(),
                                aehnlichkeit=0,
                                matchpoints=0,
                                entscheidung_person=False,
                                entscheidung_partner=False,
                            )

                        for gruppe in gruppen:
                            adm.create_gruppenvorschlag(
                                user.get_id(),
                                gruppe.get_id(),
                                aehnlichkeit=0,
                                matchpoints=0,
                                entscheidung_person=False,
                                entscheidung_gruppe=False,
                            )

                    # Wir geben jede Request inkl. zugehörigem Anfragesteller zu Debugging-Zwecken auf der Console aus.
                    print(request.method, request.path, "angefragt durch:",
                          name, email)

                    objects = function(*args, **kwargs)
                    return objects
                else:
                    return (
                        "",
                        401,
                    )  # Wenn der User nicht authorisiert ist, wird ein 401-Error geworfen.
            except ValueError as exc:
                # Dieser Fehler wird geworden, wenn der Token abgelaufen ist oder der Check aus einem anderen Grund failt.
                error_message = str(exc)
                return exc, 401

        return "", 401