Emmanuel BENOîT
dae65c0b4b
Added a small and, for now, mostly empty page for each user. Users will be redirected to their page when they log on.
140 lines
2.2 KiB
PHP
140 lines
2.2 KiB
PHP
<?php
|
|
|
|
|
|
class Ctrl_HomePage
|
|
extends Controller
|
|
{
|
|
|
|
public final function handle( Page $page )
|
|
{
|
|
session_start( );
|
|
if ( ! Loader::DAO( 'users' )->hasUsers( ) ) {
|
|
return 'install';
|
|
}
|
|
if ( array_key_exists( 'uid' , $_SESSION ) ) {
|
|
return 'items';
|
|
}
|
|
return 'login';
|
|
}
|
|
|
|
}
|
|
|
|
|
|
class Ctrl_Logout
|
|
extends Controller
|
|
{
|
|
|
|
public function handle( Page $page )
|
|
{
|
|
session_start( );
|
|
session_destroy( );
|
|
return 'home';
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class Ctrl_CheckSession
|
|
extends Controller
|
|
{
|
|
private $loginURL;
|
|
private $sessionKey;
|
|
|
|
public function __construct( $url = 'login' , $key = 'uid' )
|
|
{
|
|
$this->loginURL = $url;
|
|
$this->sessionKey = $key;
|
|
}
|
|
|
|
|
|
public function handle( Page $page )
|
|
{
|
|
session_start( );
|
|
if ( ! Loader::DAO( 'users' )->hasUsers( ) ) {
|
|
return 'install';
|
|
}
|
|
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 'users/view?id=' . $user->user_id;
|
|
}
|
|
}
|
|
|
|
|
|
class Ctrl_LoggedOut
|
|
extends Controller
|
|
{
|
|
|
|
public function handle( Page $page )
|
|
{
|
|
session_start( );
|
|
if ( array_key_exists( 'uid' , $_SESSION ) ) {
|
|
return 'home';
|
|
}
|
|
return null;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
class Ctrl_Install
|
|
extends Controller
|
|
{
|
|
|
|
public function handle( Page $page )
|
|
{
|
|
if ( Loader::DAO( 'users' )->hasUsers( ) ) {
|
|
return 'login';
|
|
}
|
|
return Loader::Ctrl( 'users_add_form' , true );
|
|
}
|
|
}
|