Exemplo n.º 1
0
 def post(self):
     """Anlegen eines Benutzers"""
     adm = ApplikationsAdministration()
     test = Benutzer.from_dict(api.payload)
     if test is not None:
         a = adm.benutzer_anlegen(test.get_name(), test.get_email(), test.get_google_id())
         return a, 200
     else:
         return '', 500
    def wrapper(*args, **kwargs):
        # Verify Firebase auth.
        id_token = request.cookies.get("token")
        error_message = None
        claims = None
        objects = None

        if id_token:
            try:
                # Verify the token against the Firebase Auth API. This example
                # verifies the token on each page load. For improved performance,
                # some applications may wish to cache results in an encrypted
                # session store (see for instance
                # http://flask.pocoo.org/docs/1.0/quickstart/#sessions).
                claims = google.oauth2.id_token.verify_firebase_token(
                    id_token, firebase_request_adapter)

                if claims is not None:
                    adm = ApplikationsAdministration()

                    google_user_id = claims.get("user_id")
                    email = claims.get("email")
                    name = claims.get("name")

                    user = adm.get_user_by_google_user_id(google_user_id)
                    # Benennen wie in ApplikationsAdministration
                    if user is not None:
                        """Fall: Der Benutzer ist unserem System bereits bekannt.
                        Wir gehen davon aus, dass die google_user_id sich nicht ändert.
                        Wohl aber können sich der zugehörige Klarname (name) und die
                        E-Mail-Adresse ändern. Daher werden diese beiden Daten sicherheitshalber
                        in unserem System geupdated."""
                        user.set_name(name)
                        user.set_email(email)
                        adm.update_benutzer(user)

                        #set_name und set_email benennen wie in Benutzer.py
                        #adm.save-user benennen wie in ApplikationsAdministration.py
                    else:
                        """Fall: Der Benutzer war bislang noch nicht eingelogged. 
                        Wir legen daher ein neues User-Objekt an, um dieses ggf. später
                        nutzen zu können.
                        """
                        user = adm.benutzer_anlegen(name, email,
                                                    google_user_id)
                        #Benennen wie in ApplikationsAdministration

                    print(request.method, request.path, "angefragt durch:",
                          name, email)

                    objects = function(*args, **kwargs)
                    return objects
                else:
                    return '', 401  # UNAUTHORIZED !!!
            except ValueError as exc:
                # This will be raised if the token is expired or any other
                # verification checks fail.
                error_message = str(exc)
                return exc, 401  # UNAUTHORIZED !!!

        return '', 401  # UNAUTHORIZED !!!