Example #1
0
    def get(self, google_user_id):
        """Auslesen eines bestimmten User-Objekts.

        Das auszulesende Objekt wird durch die google_user_id in dem URI bestimmt.
        """
        adm = ProjektAdministration()
        person = adm.get_person_by_google_user_id(google_user_id)
        return person
    def wrapper(*args, **kwargs):
        '''
        Hier werden alle in Cookies, welche in der Anmeldung vergeben werden, abgefragt
        '''
        id_token = request.cookies.get("token")
        rolle = request.cookies.get("rolle")
        name = request.cookies.get("name")
        kuerzel = request.cookies.get("kuerzel")
        mat_nr = request.cookies.get("mat_nr")

        error_message = None
        claims = None
        objects = None

        if id_token:
            try:
                #hier wird der firebase token verifiziert
                claims = google.oauth2.id_token.verify_firebase_token(
                    id_token, firebase_request_adapter)
                if claims is not None:
                    adm = ProjektAdministration()

                    google_user_id = claims.get("user_id")
                    email = claims.get("email")
                    #wenn die Rolle Student gewählt wurde, wird ein Student erstellt oder aktualisiert
                    if rolle == "Student":
                        student = adm.get_student_by_google_user_id(
                            google_user_id)
                        if student is not None:
                            ''' 
                            Der Student befindet sich bereits in der Datenbank.
                            Demnach wird das Student BO aktualisiert
                            '''
                            student.set_name(name)
                            student.set_email(email)
                            student.set_kuerzel(kuerzel)
                            student.set_mat_nr(mat_nr)
                            adm.save_student(student)
                        else:
                            '''
                            Das System kennt den Studenten nicht.
                            Es wird ein neuer Student angelegt
                            '''
                            student = adm.create_student(
                                name, email, google_user_id, kuerzel, mat_nr)
                    #wenn eine andere Rolle gewählt wurde wird hierfür die Klasse Person verwendet
                    else:
                        person = adm.get_person_by_google_user_id(
                            google_user_id)
                        if person is not None:
                            ''' 
                                Die Person befindet sich bereits in der Datenbank.
                                Demnach wird das Person BO aktualisiert
                                '''
                            person.set_name(name)
                            person.set_email(email)
                            person.set_rolle(rolle)
                            adm.save_person(person)
                        else:
                            '''
                            Das System kennt die Person nicht.
                            Es wird eine neue Person angelegt
                            '''
                            person = adm.create_person(name, email,
                                                       google_user_id, rolle)

                    print(request.method, request.path, 'asked by:', name,
                          email)

                    objects = function(*args, **kwargs)
                    return objects
                else:
                    return '', 401  # UNAUTHORIZED
            except ValueError as exc:
                '''
                If checks failed (token expired etc this exception will be raised)
                '''
                error_message = str(exc)
                return exc, 401  # UNAUTHORIZED
        return '', 401  # UNAUTHORIZED