Seite 1 von 1

flask appbuilder prüfen der rolle eines Benutzers

Verfasst: Freitag 29. Januar 2021, 12:00
von luixx
Hallo,

ich würde gern das alle Datensätze angezeigt werden, wenn der Benutzer ein Adminstrator ist. Ich kann durch base_filters die Datensätze schon so filtern, dass nur diese angezeigt werden, die der Benutzer auch angelegt hat. Dazu benutze ich folgende Funktion: (siehe auch https://github.com/dpgaspar/Flask-AppBu ... ndsecurity)

Code: Alles auswählen

def get_user():
    return g.user.id

Code: Alles auswählen

def get_user_role():
    return g.user.roles

Code: Alles auswählen

class MeasuringDevicePosView(ModelView):
    datamodel = SQLAInterface(MeasuringDevicePos)

    if(get_user_role != 'Admin'):
        base_filters = [['user_id', FilterEqualFunction, get_user]]
Leider funktioniert das Prüfen der Rolle nicht. Die Funktion wird nicht aufgerufen. Hat jemand Erfahrung damit? Eine Möglichkeit wäre es die View von Grund auf selber zu implementieren aber das würde ich gern vermeiden.

Re: flask appbuilder prüfen der rolle eines Benutzers

Verfasst: Freitag 29. Januar 2021, 12:35
von einfachTobi
Vorweg: Scheinbar ist AppBuilder eine Art Framework im Framework - ich habe keine Ahnung davon und kann daher weder Sinnhaftigkeit noch die Scopes/Kontexte bewerten. Aber in deiner Klasse MeasuringDavicePosView rufst du die Funktion auch gar nicht auf. Da fehlen Klammern hinter get_user_role().

Re: flask appbuilder prüfen der rolle eines Benutzers

Verfasst: Freitag 29. Januar 2021, 14:40
von luixx
Vielen Dank für die Antwort. Wahrscheinlich ist es eine Eigenheit vom appbuilder hier funktioniert der Aufruf ohne Klammern.
base_filters = [['user_id', FilterEqualFunction, get_user]]

ansonsten wenn ich das hier mit Klammern schreibe bekomme ich die Meldung:

This typically means that you attempted to use functionality that needed
to interface with the current application object in some way. To solve
this, set up an application context with app.app_context(). See the
documentation for more information.

Re: flask appbuilder prüfen der rolle eines Benutzers

Verfasst: Freitag 29. Januar 2021, 15:04
von Sirius3
Auf der Ebene einer Klasse sollte gar kein ausführbarer Code stehen. Der muß natürlich in die Funktion, in der Du die gefilterten Daten verarbeiten willst.

Re: flask appbuilder prüfen der rolle eines Benutzers

Verfasst: Freitag 29. Januar 2021, 15:47
von __blackjack__
@luixx: Nein auch da funktioniert kein Aufruf ohne Klammern, zudem ist das ja auch gar nicht die Funktion wo Du das aufrufen vergessen hast und deshalb eine Funktion mit einer Zeichenkette vergleichst.