package pwpolicy import ( "context" "gitea.perlbach24.de/scripte/nexarch/internal/auth" ) // LoginAndCheckPolicy komponiert IAM-02s LoginService mit der Passwort- // Richtlinienpruefung, OHNE LoginService selbst zu veraendern. Ein // bestehender Benutzer mit einem alten, nicht mehr konformen Passwort kann // sich weiterhin einloggen (Login schlaegt NICHT fehl) — er wird lediglich // zur Aenderung aufgefordert (Akzeptanzkriterium 3: kein rueckwirkendes // Aussperren). Die Pruefung ist nur HIER moeglich, da nur beim Login das // Klartext-Passwort kurzzeitig vorliegt — der gespeicherte bcrypt-Hash laesst // sich nicht rueckwirkend gegen eine neue Richtlinie pruefen. func LoginAndCheckPolicy(ctx context.Context, policies *Store, login *auth.LoginService, email, password string) (token string, mustChangePassword bool, err error) { token, err = login.Login(ctx, email, password) if err != nil { return "", false, err } policy, err := policies.Get(ctx) if err != nil { return "", false, err } mustChangePassword = Validate(policy, password) != nil return token, mustChangePassword, nil }