Tämä aihe liittyy offercalculator-projektiin. Lisäksi se on lupaamani hiillostuksen Putkanmestaruuskilpailu. ;D
Eli, kehittelin sovellukseen kirjautumissysteemin. Koodi toimii, sikäli kun sitä testasin manuaalisesti ennen ko. commitia. En haluasi, että systeemi hajoaa crackUnit-testeissä johonkin yksinkertaiseen "etuovi selällään"-bugiin. Siksi saatte tutkia koodin niin tarkkaan kuin haluatte. Kokenut koodarihan näkee melkein katsomatta ison osan aloittelijan virheistä.
Koodia on useampi sata riviä, joten laitan vain linkit: ko. commit, Ajax IO-suunnitelma, Tietokannan suunnitelma ja hakemisto, josta aiheeseen liittyvät koodit löytyvät.
Taustalla on tietokanta, jossa tärkeät kentät ovat users-taulun id_pk, username, password ja salt. Varsinainen toiminnallisuus on models/OC_Auth-tiedostossa, jossa oleva luokka on peritty Zend_Auth_Adapter_DbTable-luokasta. Sen toiminnallisuutta on muutettu vain hieman, joten suurimmassa osassa ylikirjoitetuista metodeista on poistettu vain jokin ylimääräinen osa. Salasanan salataan PHP:n suositusten mukaan Blowfishilla. Suola on aina 21 merkkiä pitkä ja tietokantaan tallennettava hash 32 merkkiä pitkä, joten f(salasana, '$2a$10$' + suola + '$') = '$2a$10$' + suola + hash.
Katsokaa, löydättekö alkeellisia tai vähemmän alkeellisia virheitä, ja ilmoittakaa suoraan (mutkan kautta on pidempi matka). :)
Edit. Yhdistin with_zendin masteriin.
Lopetin lukemisen riville "tätä ei pitäisi tarvita, mutta ilman tulee virheilmoitus". Siinä vaiheessa alkoi nimittäin tuntua, että tulee vain paha mieli ja päänsärky, jos luen pidemmälle. Vähän uskalsin kuitenkin vilkaista, mutta muun koodin sekaan ripotellut requiret ja epäyhtenäinen nimeämiskäytäntö säikyttivät lopullisesti pois.
Metabolix kirjoitti:
"tätä ei pitäisi tarvita, mutta ilman tulee virheilmoitus".
Korjattu.
Require-jututkin korjasin. Ne olivat "virheellisellä" tavalla ZF:n yliluokassakin.
'Default_LoginController' on minusta yksi pahiten epäjärjestelmällinen nimi, mutta se on pakollinen, jotta ZF löytää sen. (Kun kyseessä on oletusmoduulin (Default) kontrolleri, alkuliite ei ole pakollinen, mutta muissa moduuleissa se on pakollinen.) Arvelen aika vahvasti, että olet saanut päänsärkyä Zend Frameworkista, et minusta. :)
Olisin kyllä itse ottanut käyttöön Zend 2.0:n - vaikka onkin vasta betassa - koska se käyttää nimiavaruuksia ja on muutenkin varmasti paremmin teknisesti ajantasalla kuin tuo vanha versio.
Aihe on jo aika vanha, joten et voi enää vastata siihen.