Ejemplo n.º 1
0
    def find_by_key(self, key):
        """Suchen eines Benutzers mit vorgegebener User ID. Da diese eindeutig ist,
        wird genau ein Objekt zurückgegeben.

        :param key Primärschlüsselattribut (->DB)
        :return User-Objekt, das dem übergebenen Schlüssel entspricht, None bei
            nicht vorhandenem DB-Tupel.
        """

        result = None

        cursor = self._cnx.cursor()
        command = "SELECT id, name, email, google_user_id FROM users WHERE id={}".format(
            key)
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (id, name, email, user_id) = tuples[0]
            user = User()
            user.set_id(id)
            user.set_name(name)
            user.set_email(email)
            user.set_user_id(user_id)
            result = user
        except IndexError:
            """Der IndexError wird oben beim Zugriff auf tuples[0] auftreten, wenn der vorherige SELECT-Aufruf
            keine Tupel liefert, sondern tuples = cursor.fetchall() eine leere Sequenz zurück gibt."""
            result = None

        self._cnx.commit()
        cursor.close()

        return result
Ejemplo n.º 2
0
    def find_by_name(self, name):
        """Auslesen aller Benutzer anhand des Benutzernamens.

        :param name Name der zugehörigen Benutzer.
        :return Eine Sammlung mit User-Objekten, die sämtliche Benutzer
            mit dem gewünschten Namen enthält.
        """
        result = []
        cursor = self._cnx.cursor()
        command = "SELECT id, name, email, google_user_id FROM users WHERE name LIKE '{}' ORDER BY name".format(
            name)
        cursor.execute(command)
        tuples = cursor.fetchall()

        for (id, name, email, user_id) in tuples:
            user = User()
            user.set_id(id)
            user.set_name(name)
            user.set_email(email)
            user.set_user_id(user_id)
            result.append(user)

        self._cnx.commit()
        cursor.close()

        return result
Ejemplo n.º 3
0
    def find_by_google_user_id(self, google_user_id):
        """Suchen eines Benutzers mit vorgegebener Google ID. Da diese eindeutig ist,
        wird genau ein Objekt zurückgegeben.

        :param google_user_id die Google ID des gesuchten Users.
        :return User-Objekt, das die übergebene Google ID besitzt,
            None bei nicht vorhandenem DB-Tupel.
        """
        result = None

        cursor = self._cnx.cursor()
        command = "SELECT id, name, email, google_user_id FROM users WHERE google_user_id='{}'".format(
            google_user_id)
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (id, name, email, google_user_id) = tuples[0]
            u = User()
            u.set_id(id)
            u.set_name(name)
            u.set_email(email)
            u.set_user_id(google_user_id)
            result = u
        except IndexError:
            """Der IndexError wird oben beim Zugriff auf tuples[0] auftreten, wenn der vorherige SELECT-Aufruf
            keine Tupel liefert, sondern tuples = cursor.fetchall() eine leere Sequenz zurück gibt."""
            result = None

        self._cnx.commit()
        cursor.close()

        return result
Ejemplo n.º 4
0
    def find_by_email(self, mail_address):
        """Auslesen aller Benutzer anhand der zugeordneten E-Mail-Adresse.

        :param mail_address E-Mail-Adresse der zugehörigen Benutzer.
        :return Eine Sammlung mit User-Objekten, die sämtliche Benutzer
            mit der gewünschten E-Mail-Adresse enthält.
        """
        result = None

        cursor = self._cnx.cursor()
        command = "SELECT id, name, email, google_user_id FROM users WHERE email={}".format(
            mail_address)
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (id, name, email, user_id) = tuples[0]
            user = User()
            user.set_id(id)
            user.set_name(name)
            user.set_email(email)
            user.set_user_id(user_id)
            result = user
        except IndexError:
            """Der IndexError wird oben beim Zugriff auf tuples[0] auftreten, wenn der vorherige SELECT-Aufruf
            keine Tupel liefert, sondern tuples = cursor.fetchall() eine leere Sequenz zurück gibt."""
            result = None

        self._cnx.commit()
        cursor.close()

        return result
    def create_user(self, name, mail, google_id):
        """User erstellen"""

        user = User()
        user.set_name(name)
        user.set_mail(mail)
        user.set_google_id(google_id)
        user.set_id(1)

        with UserMapper() as mapper:
            return mapper.insert(user)
Ejemplo n.º 6
0
 def post(self):
     """User erstellen"""
     adm = ProjectAdministration()
     user = User.from_dict(api.payload)
     if user is not None:
         c = adm.create_user(user.get_name(), user.get_mail(),
                             user.get_google_id())
         return c, 200
     else:
         return '', 500
Ejemplo n.º 7
0
 def post(self):
     adm = ShoppingAdministration()
     """ try:
     """
     proposal = User.from_dict(api.payload)
     if proposal is not None:
         d = adm.insert_user(proposal)
     """ if proposal is not None:
         c = adm.create_user(proposal.get_name(),proposal.get_email(),proposal.get_firebase_id())
         return c, 200 """
     """ except Exception as e:
Ejemplo n.º 8
0
    def put(self, id):
        """User wird aktualisiert"""
        adm = ProjectAdministration()
        user = User.from_dict(api.payload)

        if user is None:
            return "User konnte nicht geändert werden", 500

        else:
            user.set_id(id)
            adm.save_user(user)
            return "User wurde erfolgreich geändert", 200
    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 = ProjectAdministration()

                    google_id = claims.get("user_id")
                    mail = claims.get("email")
                    name = claims.get("name")

                    user = adm.get_user_by_google_id(google_id)
                    if user is not None:
                        """Fall: Der Benutzer ist unserem System bereits bekannt.
                        Wir gehen davon aus, dass die google_id sich nicht ändert.
                        Wohl aber können sich der zugehörige Name (name&firstname),
                        die E-Mail-Adresse (mail) und die Role (role_id) ändern. 
                        Daher werden diese vier Daten sicherheitshalber
                        in unserem System geupdated."""

                        u = User()
                        u.set_name(name)
                        u.set_mail(mail)
                        adm.save_user(u)

                    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.create_user(name, mail, google_id)

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

                    objects = function(*args, **kwargs)
                    return objects
                else:
                    return print('Fall 1'), '', 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 print('Fall 2'), exc, 401  # UNAUTHORIZED !!!

        return print('Fall 3'), 401  # UNAUTHORIZED !!!
Ejemplo n.º 10
0
    def find_all(self):
        """Auslesen aller Benutzer unseres Systems.

        :return Eine Sammlung mit User-Objekten, die sämtliche Benutzer
                des Systems repräsentieren.
        """
        result = []
        cursor = self._cnx.cursor()
        cursor.execute("SELECT * from users")
        tuples = cursor.fetchall()

        for (id, name, email, user_id) in tuples:
            user = User()
            user.set_id(id)
            user.set_name(name)
            user.set_email(email)
            user.set_user_id(user_id)
            result.append(user)

        self._cnx.commit()
        cursor.close()

        return result
Ejemplo n.º 11
0
    def put(self, id):
        """
        Updates an specific user object.

        The object is determined by the ``id`` in the URI.
        """
        adm = ShoppingAdministration()
        c = User.from_dict(api.payload)

        if c is not None:
            c.set_id(id)
            adm.save_user(c)
            return 'saved', 200
        else:
            return 'error', 500
Ejemplo n.º 12
0
    def find_by_role_id(self, role_id):
        """Suchen eines Users anhand seiner Rollen-ID"""

        result = []
        cursor = self._cnx.cursor()
        command = "SELECT * FROM user WHERE role_id like '{}'".format(role_id)
        cursor.execute(command)
        tuples = cursor.fetchall()

        for (id, name, mail, google_id, role_id, create_time) in tuples:
            user = User()
            user.set_id(id)
            user.set_name(name)
            user.set_mail(mail)
            user.set_google_id(google_id)
            user.set_role_id(role_id)
            user.set_create_time(create_time)
            result.append(user)

        self._cnx.commit()
        cursor.close()

        return result
Ejemplo n.º 13
0
    def find_by_key(self, id):
        """Suchen eines User mit vorgegebener ID"""

        result = []
        cursor = self._cnx.cursor()
        command = "SELECT * FROM user WHERE id like '{}'".format(id)
        cursor.execute(command)
        tuples = cursor.fetchall()

        if len(tuples) != 0:

            for (id, name, mail, google_id, role_id, create_time) in tuples:
                user = User()
                user.set_id(id)
                user.set_name(name)
                user.set_mail(mail)
                user.set_google_id(google_id)
                user.set_role_id(role_id)
                user.set_create_time(create_time)
                result.append(user)
                result = user

        else:

            result = None

        self._cnx.commit()
        cursor.close()

        return result
Ejemplo n.º 14
0
    def find_all(self):
        """Auslesen aller User"""

        result = []
        cursor = self._cnx.cursor()
        command = "SELECT * FROM user"
        cursor.execute(command)
        tuples = cursor.fetchall()

        for (id, name, mail, google_id, role_id, create_time) in tuples:
            user = User()
            user.set_id(id)
            user.set_name(name)
            user.set_mail(mail)
            user.set_google_id(google_id)
            user.set_role_id(role_id)
            user.set_create_time(create_time)
            result.append(user)

        self._cnx.commit()
        cursor.close()

        return result