def render_henkilolista(self): henkilolista = "<ul class=\"henkilolista\">\n" for id in Henkilo.load_ids(): henkilo = Henkilo.load_from_database(id) henkilolista += "<li class=\"henkilolista\"><a href=\"%s/%d\">%s</a></li>\n" % (self.conf['request_uri'], henkilo.henkilo_id, cgi.escape(henkilo.nimi)) henkilolista += "</ul>\n" return henkilolista
def handle_newuser(self): henkilon_nimi_input = self.form.getvalue("henkilon_nimi") tunnus_input = self.form.getvalue("tunnus") salasana1_input = self.form.getvalue("salasana1") salasana2_input = self.form.getvalue("salasana2") if (henkilon_nimi_input is None or tunnus_input is None or salasana1_input is None or salasana2_input is None): self.parameters = { 'status': '<p class="status">Ole hyvä ja täytä kaikki kentät!</p>' } return 'missing_newuser_input' # # Siivoa tekstimuotoiset parameterit. Nimissä ja tunnuksissa # ei sallita mitään tageja. # parser = CommentHTMLParser(ok_tags=[]) henkilon_nimi = parser.parse_string(henkilon_nimi_input) tunnus = parser.parse_string(tunnus_input) if salasana1_input != salasana2_input: return 'password_mismatch' henkilo_ids = Henkilo.load_ids(tunnus=tunnus) # blääh henkilo_id = None for i in henkilo_ids: henkilo_id = i break henkilo = None if henkilo_id is not None: henkilo = Henkilo.load_from_database(henkilo_id) if henkilo is not None: self.parameters = { 'status': '<p class="status">Tunnus "%s" on jo käytössä!</p>' % (tunnus) } return 'username_exists' # # Tehdään salasanasta hajautussumma. # salasana_hash = salasana.hash_password(salasana1_input) # # Tallennetaan henkilo tietokantaan # henkilo = Henkilo.new(nimi=henkilon_nimi, tunnus=tunnus, salasana=salasana_hash, omistajaa=None) # # Luo uusi istunto saman tien. # self.create_new_session(henkilo_id=henkilo.henkilo_id) self.parameters = { 'status': '<p class="status">Tunnus luotu, tervetuloa %s!</p>' % (tunnus) } return 'welcome'
def handle_login(self): tunnus_input = self.form.getvalue("tunnus") salasana_input = self.form.getvalue("salasana") if tunnus_input is None or salasana_input is None: self.parameters = { 'status': '<p class="status"></p>' } return 'missing_input' henkilo_ids = Henkilo.load_ids(tunnus=tunnus_input) # blääh henkilo_id = None for i in henkilo_ids: henkilo_id = i break henkilo = Henkilo.load_from_database(henkilo_id) if henkilo is not None: # # Ota suola tietokannassa olevasta salasanasta ja aja # hajautusfunktion läpi. # suola = salasana.get_salt_from_hash(henkilo.salasana) salasana_hash = salasana.hash_password(salasana_input, suola) if salasana_hash == henkilo.salasana: self.parameters = { 'status': '<p class="status">Tervetuloa, henkilö %d!</p>' % (henkilo.henkilo_id) } timestamp = int(math.floor(time.time())) self.sessio = Sessio(henkilo_id=henkilo.henkilo_id, start_timestamp=timestamp, remote_addr=self.conf['effective_remote_addr']) self.headers.append(self.sessio.create_cookie().output()) # # Kaikki OK! # return 'logged_in' return 'login_failed'