loginURL = $url; $this->sessionKey = $key; } public function handle( Page $page ) { session_start( ); if ( array_key_exists( $this->sessionKey , $_SESSION ) ) { return null; } return $this->loginURL; } } class Ctrl_LogInForm extends Controller { public function handle( Page $page ) { return Loader::Create( 'Form' , 'Log in' , 'login' ) ->addField( Loader::Create( 'Field' , 'email' , 'text' ) ->setDescription( 'E-mail address:' ) ) ->addField( Loader::Create( 'Field' , 'pass' , 'password' ) ->setDescription( 'Password:' ) ) ->setSuccessURL( 'home' ) ->addController( Loader::Ctrl( 'log_in' ) ) ->controller( ); } } class Ctrl_LogIn extends Controller implements FormAware { private $form; public function setForm( Form $form ) { $this->form = $form; } public function handle( Page $page ) { $email = $this->form->field( 'email' ); $pass = $this->form->field( 'pass' ); $user = Loader::DAO( 'users' )->checkLogin( $email->value( ) , $pass->value( ) ); if ( $user == null ) { $email->putError( 'Invalid credentials.' ); return null; } $_SESSION[ 'uid' ] = $user->user_id; return true; } } class Ctrl_LoggedOut extends Controller { public function handle( Page $page ) { session_start( ); if ( array_key_exists( 'uid' , $_SESSION ) ) { return 'home'; } return null; } }