def checkAuth(self): """Holt Benutzername aus der Session, prüft Benutzerberechtigung. Setzt self.user, self.mitarbeiter, self.stelle""" # auto_user = '******' # so ist das Entwickeln einfacher auto_user = '' # so sollte es im Betrieb sein if auto_user: self.session = get_session(self.REQUEST, self.RESPONSE) if self.session: self.user = self.session.user else: self.session = create_session(auto_user, self.RESPONSE) self.user = self.session.user self.mitarbeiter = ebapi.Mitarbeiter(ben=self.user, stat=ebapi.cc('status', 'i')) self.stelle = ebapi.Code(self.mitarbeiter['stz']) if self.mitarbeiter['benr__code'] not in self.permissions: raise KeineZugriffsberechtigung() return self.session = get_session(self.REQUEST, self.RESPONSE) if self.session: self.user = self.session.user else: raise NichtIdentifiziert() self.mitarbeiter = ebapi.Mitarbeiter(ben=self.user, stat=ebapi.cc('status', 'i')) self.stelle = ebapi.Code(self.mitarbeiter['stz']) if self.mitarbeiter['benr__code'] not in self.permissions: raise KeineZugriffsberechtigung()
def processForm(self, REQUEST, RESPONSE): res = [] username = self.form.get("username") password = self.form.get("pass") if username is None: res.append(head_normal_ohne_help_t % ("EBKuS Benutzeranmeldung")) res.append(login_interface_t % {"index_url": "/ebkus/%s/index.html" % config.INSTANCE_NAME}) return "".join(res) try: mitarbeiter = Mitarbeiter(ben=username, stat=cc("status", "i")) except: write_sql_protocol( artdeszugriffs="LOGIN : Ungültiger Benutzername (%s)" % username, username=username, ip=self.ip ) meldung = { "titel": "Ungültiger Benutzername!", "legende": "Ungültiger Benutzername!", "zeile1": "Sie haben einen ungültigen Benutzernamen eingegeben.", "zeile2": "Bitte versuchen Sie es erneut.", } res.append(meldung_t % meldung) return "".join(res) if not mitarbeiter["pass"] == sha.new(password).hexdigest(): write_sql_protocol( artdeszugriffs="LOGIN : Falsches Passwort (%s)" % username, username=username, ip=self.ip ) meldung = { "titel": "Falsches Passwort!", "legende": "Falsches Passwort!", "zeile1": "Sie haben ein falsches Passwort eingegeben.", "zeile2": "Bitte versuchen Sie es erneut.", } res.append(meldung_t % meldung) return "".join(res) other_session = has_session(username) if other_session: # Es gibt noch eine Session desselben Benutzers, die # nicht mit einem logout oder durch Timeout beendet wurde. other_session.delete() if mitarbeiter["pass"] == sha.new(username).hexdigest(): # Passwort ist identisch mit dem Benutzernamen weiterleitung = "pwchange" else: weiterleitung = "menu" self.session = create_session(username, self.RESPONSE) res.append(head_weiterleitung_t % ("Willkommen bei EBKuS", "2", weiterleitung)) res.append(login_meldung_t % mitarbeiter) write_sql_protocol(artdeszugriffs="LOGIN : Gültiges Login (%s)" % username, username=username, ip=self.ip) return "".join(res)
def processForm(self, REQUEST, RESPONSE): res = [] username = self.form.get('username') password = self.form.get('pass') if username is None: res.append(head_normal_ohne_help_t % ("EBKuS Benutzeranmeldung")) res.append(login_interface_t % {'index_url': "/ebkus/%s/index.html" % config.INSTANCE_NAME}) return ''.join(res) ml = MitarbeiterList(where="ben = '%s' and stat = %s" % (username, cc('status', 'i'))) if not ml: write_sql_protocol( artdeszugriffs='LOGIN : Ungültiger Benutzername (%s)' % username, username=username, ip=self.ip) meldung = { 'titel':'Ungültiger Benutzername!','legende':'Ungültiger Benutzername!', 'zeile1':'Sie haben einen ungültigen Benutzernamen eingegeben.', 'zeile2':'Bitte versuchen Sie es erneut.' } res.append(meldung_t % meldung) return ''.join(res) mitarbeiter = ml[0] if not mitarbeiter['pass'] == sha.new(password).hexdigest(): write_sql_protocol(artdeszugriffs='LOGIN : Falsches Passwort (%s)' % username, username=username, ip=self.ip) meldung = { 'titel':'Falsches Passwort!','legende':'Falsches Passwort!', 'zeile1':'Sie haben ein falsches Passwort eingegeben.', 'zeile2':'Bitte versuchen Sie es erneut.' } res.append(meldung_t % meldung) return ''.join(res) other_session = has_session(username) if other_session: # Es gibt noch eine Session desselben Benutzers, die # nicht mit einem logout oder durch Timeout beendet wurde. other_session.delete() if mitarbeiter['pass'] == sha.new(username).hexdigest(): # Passwort ist identisch mit dem Benutzernamen weiterleitung = 'pwchange' else: weiterleitung = 'menu' self.session = create_session(username, self.RESPONSE) res.append(head_weiterleitung_t % ("Willkommen bei EBKuS","2", weiterleitung)) res.append(login_meldung_t % mitarbeiter) write_sql_protocol(artdeszugriffs='LOGIN : Gültiges Login (%s)' % username, username=username, ip=self.ip) return ''.join(res)