2009-10-30 17:21:11 +00:00
< ? php
/*
* StatusNet - the distributed open - source microblogging tool
* Copyright ( C ) 2008 , 2009 , StatusNet , Inc .
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*/
if ( ! defined ( 'STATUSNET' ) && ! defined ( 'LACONICA' )) { exit ( 1 ); }
require_once INSTALLDIR . '/plugins/OpenID/openid.php' ;
require_once ( INSTALLDIR . '/plugins/OpenID/User_openid_trustroot.php' );
class OpenidtrustAction extends Action
{
var $trust_root ;
var $allowUrl ;
var $denyUrl ;
var $user ;
/**
* Is this a read - only action ?
*
* @ return boolean false
*/
function isReadOnly ( $args )
{
return false ;
}
/**
* Title of the page
*
* @ return string title of the page
*/
function title ()
{
2009-12-08 20:17:11 +00:00
return _m ( 'OpenID Identity Verification' );
2009-10-30 17:21:11 +00:00
}
function prepare ( $args )
{
parent :: prepare ( $args );
common_ensure_session ();
$this -> user = common_current_user ();
if ( empty ( $this -> user )){
/* Go log in, and then come back. */
common_set_returnto ( $_SERVER [ 'REQUEST_URI' ]);
common_redirect ( common_local_url ( 'login' ));
return ;
}
$this -> trust_root = $_SESSION [ 'openid_trust_root' ];
$this -> allowUrl = $_SESSION [ 'openid_allow_url' ];
$this -> denyUrl = $_SESSION [ 'openid_deny_url' ];
if ( empty ( $this -> trust_root ) || empty ( $this -> allowUrl ) || empty ( $this -> denyUrl )){
2009-12-08 20:17:11 +00:00
$this -> clientError ( _m ( 'This page should only be reached during OpenID processing, not directly.' ));
2009-10-30 17:21:11 +00:00
return ;
}
return true ;
}
function handle ( $args )
{
parent :: handle ( $args );
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' ){
$this -> handleSubmit ();
} else {
$this -> showPage ();
}
}
function handleSubmit ()
{
unset ( $_SESSION [ 'openid_trust_root' ]);
unset ( $_SESSION [ 'openid_allow_url' ]);
unset ( $_SESSION [ 'openid_deny_url' ]);
if ( $this -> arg ( 'allow' ))
{
//save to database
$user_openid_trustroot = new User_openid_trustroot ();
$user_openid_trustroot -> user_id = $this -> user -> id ;
$user_openid_trustroot -> trustroot = $this -> trust_root ;
$user_openid_trustroot -> created = DB_DataObject_Cast :: dateTime ();
if ( ! $user_openid_trustroot -> insert ()) {
$err = PEAR :: getStaticProperty ( 'DB_DataObject' , 'lastError' );
common_debug ( 'DB error ' . $err -> code . ': ' . $err -> message , __FILE__ );
}
common_redirect ( $this -> allowUrl , $code = 302 );
} else {
common_redirect ( $this -> denyUrl , $code = 302 );
}
}
/**
* Show page notice
*
* Display a notice for how to use the page , or the
* error if it exists .
*
* @ return void
*/
function showPageNotice ()
{
2009-12-08 20:17:11 +00:00
$this -> element ( 'p' , null , sprintf ( _m ( '%s has asked to verify your identity. Click Continue to verify your identity and login without creating a new password.' ), $this -> trust_root ));
2009-10-30 17:21:11 +00:00
}
/**
* Core of the display code
*
* Shows the login form .
*
* @ return void
*/
function showContent ()
{
$this -> elementStart ( 'form' , array ( 'method' => 'post' ,
'id' => 'form_openidtrust' ,
'class' => 'form_settings' ,
'action' => common_local_url ( 'openidtrust' )));
$this -> elementStart ( 'fieldset' );
2009-12-08 20:17:11 +00:00
$this -> submit ( 'allow' , _m ( 'Continue' ));
$this -> submit ( 'deny' , _m ( 'Cancel' ));
2009-10-30 17:21:11 +00:00
$this -> elementEnd ( 'fieldset' );
$this -> elementEnd ( 'form' );
}
}