user authentication

Django, Flask, Bottle, WSGI, CGI…
Antworten
Pitwheazle
User
Beiträge: 871
Registriert: Sonntag 19. September 2021, 09:40

Ich habe jetzt (im Großen und Ganzen) 13 von meinen 35 Kategorien fertig und muss über die nächsten Stufen nachdenken. Wenn ich 14 Kategorien fertig habe, möchet ich mich dranmachen, das Projekt hochzuladen.
Zunächst muss ich aber die Benutzerauthentifizierung hinbekommen. Ich habe bisher zwei Gruppen angelegt (Schüler und Lehrer) und zwei Schüleraccounts angelegt. Ich kann diese auch schon ein und ausloggen. Was ich leider noch nicht begriffen habe, ist, wie ich jetzt den Zugang regele.
Bild
Egal auf welche Kategorie der user in diesem Startfenster klickt, er wird auf den view "main" geleitet und hier möchte ich überprüfen, ob der user eingeloggt ist oder nicht und ihn nur dann weiterleiten und ansonsten eine entsprechende Meldung ausgeben. Wahrscheinlich ist das gar nicht so schwer, ich bekomme es aber nicht hin.
Der Anfang des Codes:

Code: Alles auswählen

def main(req, slug):   
    kategorie = get_object_or_404(Kategorie, slug = slug)
    kategorie_id = kategorie.id
    user = get_fake_user() 
    if req.method == 'POST':  
        protokoll = Protokoll.objects.get(pk = req.session.get('protokoll_id'))
        ...
wie ihr seht, arbeite ich noch mit einem "Fake_user" (der Code ist noch von @whitie):

Code: Alles auswählen

def get_fake_user():
    return Schueler.objects.all().first()
Außerdem muss ich feststellen, dass ich das mit den sessions noch nicht verstanden habe, ich vermute , da werde ich mich in diesem Zusammenhang auch drum kümmern müssen. Habt ihr da auch einen Tipp?
Pitwheazle
User
Beiträge: 871
Registriert: Sonntag 19. September 2021, 09:40

Vielleicht muss ich noch ergänzen, dass ich bei der Gelegenheit den "eingebauten" user mit meinem model verbinden muss, ich muss da noch ein paar mehr Informationen speichern.

Code: Alles auswählen

class Schueler(models.Model):
    nachname = models.CharField(max_length=20)
    vorname = models.CharField(max_length=20)
    
    klasse = models.CharField(max_length=10)
    jg = models.PositiveSmallIntegerField(validators=[MinValueValidator(5), MaxValueValidator(10)])
    kurs= models.CharField(max_length=1, choices=wahl_kurs.choices, default=wahl_kurs.E_KURS,)

    # werden beim Erstellen eingestellt
    datum_start = models.DateField(auto_now_add=True, verbose_name="Startdatum", editable=False, )
    stufe = models.PositiveSmallIntegerField(default=5) #, editable=False)
    halbjahr = models.PositiveSmallIntegerField(default=0)
Die Einträge im zweiten Block (klasse, jg, kurs) müssten die Kids beim Einloggen angeben, dürfen sie aber anschließend nicht mehr ändern (damit sie nicht den Schwierigkeitsgrad der Aufgaben nach belieben ändern können) und der dritte Block würde ich mit Code generieren (datum_start brauche ich wahrscheinlich nicht, das ist schon da?). Später müsste ich das model noch erweitern. Meine Überlegung ist, dass sie bei Bedarf später noch eine Schule eingeben können und dann einem Lehrer ermöglichen, ihre Arbeit einzusehen.
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Falls es nicht aus dem Zusammenhang klar wird: Dies ist eine Fortsetzung aus jenem Thread: viewtopic.php?t=53873
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Antworten