Changeset 11993
- Timestamp:
- 05/19/08 22:09:06 (6 months ago)
- Location:
- websites/events.php.gr.jp/trunk
- Files:
-
- 5 added
- 7 modified
-
app/Ethna_AuthActionClass.php (modified) (3 diffs)
-
app/Ethna_AuthAdminActionClass.php (modified) (3 diffs)
-
app/Event_Controller.php (modified) (5 diffs)
-
app/action/Event/Join.php (modified) (2 diffs)
-
app/action/Login.php (modified) (3 diffs)
-
etc (modified) (1 prop)
-
etc/event-ini.php.default (modified) (1 diff)
-
plugin/Auth (added)
-
plugin/Auth/Haste_Plugin_Auth_Hatena.php (added)
-
plugin/Auth/Haste_Plugin_Auth_Typekey.php (added)
-
template/event/login.tpl (added)
-
template/phpgrjp/login.tpl (added)
Legend:
- Unmodified
- Added
- Removed
-
websites/events.php.gr.jp/trunk/app/Ethna_AuthActionClass.php
r9806 r11993 5 5 * @author halt feits <halt.feits@gmail.com> 6 6 * @package Anubis 7 * @version $Id : Ethna_AuthActionClass.php 136 2006-08-17 05:17:17Z ha1t$7 * @version $Id$ 8 8 */ 9 9 … … 17 17 * @package Anubis 18 18 * 19 * $config = array(20 * 'base_url' => 'http://example.com/index.php',21 * 'typekey_token' => 'typekey_token',22 * );23 19 */ 24 20 class Ethna_AuthActionClass extends Ethna_ActionClass 25 21 { 26 22 27 /**28 * Typekey Object29 * @var object30 * @access protected31 */32 var $TypeKey;33 34 var $typekey_token;35 var $signin_url;36 var $signout_url;37 38 23 //{{{ authenticate() 39 24 /** … … 43 28 function authenticate() 44 29 { 45 $this->user = $this->backend->getManager('User'); 46 $this->logger = $this->backend->getLogger(); 47 48 if ($this->session->isStart()) { 49 $this->logger->log(LOG_DEBUG, 'Session started'); 50 return null; 51 } 52 53 $typekey_url = "http://".$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 54 $base_url = $this->config->get('base_url'); 55 56 //set typekey token from config 57 $this->typekey_token = $this->config->get('typekey_token'); 58 59 $this->TypeKey = new Auth_TypeKey(); 60 $this->TypeKey->site_token($this->typekey_token); 61 $this->TypeKey->version('1.1'); 62 63 $this->signin_url = $this->TypeKey->urlSignIn($typekey_url); 64 $this->signout_url = $this->TypeKey->urlSignOut($base_url); 65 66 $this->af->setApp('signin_url', $this->signin_url); 67 $this->af->setApp('signout_url', $this->signout_url); 68 69 if ( is_null($this->session->get('name')) ) { 70 71 if( $this->authTypeKey($_GET) === TRUE ){ 72 73 //success 74 $this->logger->log(LOG_DEBUG, 'Authenticate OK!'); 75 $this->session->start(); 76 $this->session->set('name', $_GET['name']); 77 $this->session->set('nick', $_GET['nick']); 78 $this->session->set('is_admin', $this->user->isAdmin($_GET['name'])); 79 80 } else { 81 82 $this->session->destroy(); 83 print("fail auth typekey"); 84 Aero_Util::move($this->signout_url, "5"); 85 exit; 86 30 if (!$this->session->isStart()) { 31 $config = $this->config->get('auth'); 32 if (isset($config['type']) && $config['type'] != 'none') { 33 $this->redirect('/login'); 87 34 } 88 89 35 } 90 36 91 return null; 92 37 return parent::authenticate(); 93 38 } 94 39 //}}} 95 40 96 //{{{ authTypeKey()41 //{{{ redirect 97 42 /** 98 * authTypeKey43 * redirect 99 44 * 100 * $query = array( 101 * 'ts' => '', 102 * 'email' => '', 103 * 'name' => '', 104 * 'nick' => '', 105 * 'sig' => '', 106 * ) 107 * 108 * @access protected 45 * @access public 109 46 */ 110 function authTypeKey($query){ 111 112 $result = isset($query['ts']) 113 && isset($query['email']) 114 && isset($query['name']) 115 && isset($query['nick']) 116 && isset($query['sig']); 117 118 if($result){ 119 120 $result = $this->TypeKey->verifyTypeKey($query); 121 122 if (PEAR::isError($result)) { 123 124 if($result->getMessage() == 'Timestamp from TypeKey is too old'){ 125 header('Location: ' . $this->signout_url); 126 exit(); 127 128 } 129 130 if($result->getMessage() == 'Invalid signature'){ 131 Ethna::raiseNotice('TypeKey Invalid signature'); 132 return true; 133 } 134 135 Ethna::raiseError($result->getMessage()); 136 return false; 137 138 } else { 139 140 return true; 141 142 } 143 144 } else { 145 146 header("Location: {$this->signin_url}"); 147 exit; 148 149 } 47 function redirect($action = "") 48 { 49 $url = $this->config->get('base_url') . $action; 50 $html = <<<EOD 51 <html> 52 <head> 53 <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> 54 <meta http-equiv="refresh" CONTENT="0;URL={$url}"> 55 <meta name="robots" content="INDEX,NOFOLLOW"> 56 <title>Redirecting to {$url}</title> 57 </head> 58 <body> 59 <p>if not start redirect, click <a href="{$url}">this link</a></p> 60 </body> 61 </html> 62 EOD; 63 print($html); 64 exit(); 150 65 } 151 66 //}}} -
websites/events.php.gr.jp/trunk/app/Ethna_AuthAdminActionClass.php
r9806 r11993 8 8 */ 9 9 10 require_once ' Auth_TypeKey.php';10 require_once 'Ethna_AuthActionClass.php'; 11 11 12 12 /** … … 22 22 * ); 23 23 */ 24 class Ethna_AuthAdminActionClass extends Ethna_A ctionClass24 class Ethna_AuthAdminActionClass extends Ethna_AuthActionClass 25 25 { 26 26 27 //{{{ authenticate()28 27 /** 29 28 * authentication … … 32 31 function authenticate() 33 32 { 34 if ($this->session->isStart()) {35 return null;36 }37 38 $typekey_url = "http://".$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];39 $base_url = $this->config->get('base_url');40 41 //set typekey token from config42 $this->typekey_token = $this->config->get('typekey_token');43 44 $this->TypeKey = new Auth_TypeKey();45 $this->TypeKey->site_token($this->typekey_token);46 $this->TypeKey->version('1.1');47 48 $this->signin_url = $this->TypeKey->urlSignIn($typekey_url);49 $this->signout_url = $this->TypeKey->urlSignOut($base_url);50 51 $this->af->setApp('signout_url', $this->signout_url);52 53 if ( !isset($_SESSION['name']) ) {54 55 if( $this->authTypeKey($_GET) === TRUE ){56 57 //success58 //$this->session->start();59 session_start();60 $_SESSION['name'] = $_GET['name'];61 $_SESSION['nick'] = $_GET['nick'];62 63 } else {64 65 //$this->session->destroy();66 print("Fail auth typekey");67 Event_Util::redirect($this->signout_url, 5);68 exit;69 70 }71 }72 73 33 $this->user = $this->backend->getManager('User'); 74 if ($this->user->isAdmin($_SESSION['name'])) { 75 return null; 76 } else { 34 if (!$this->user->isAdmin($_SESSION['name'])) { 77 35 Event_Util::redirect($this->config->get('base_url') , 2, "You don't have a permission"); 78 36 } 79 37 38 return parent::authenticate(); 80 39 } 81 //}}}82 83 //{{{ authTypeKey()84 /**85 * authTypeKey86 *87 * $query = array(88 * 'ts' => '',89 * 'email' => '',90 * 'name' => '',91 * 'nick' => '',92 * 'sig' => '',93 * )94 *95 * @access protected96 */97 function authTypeKey($query){98 99 $result = isset($query['ts'])100 && isset($query['email'])101 && isset($query['name'])102 && isset($query['nick'])103 && isset($query['sig']);104 105 if($result){106 107 $result = $this->TypeKey->verifyTypeKey($query);108 109 if (PEAR::isError($result)) {110 111 if($result->getMessage() == 'Timestamp from TypeKey is too old'){112 header('Location: ' . $this->signout_url);113 exit();114 115 }116 117 if($result->getMessage() == 'Invalid signature'){118 Ethna::raiseNotice('TypeKey Invalid signature');119 return true;120 }121 122 Ethna::raiseError($result->getMessage());123 return false;124 125 } else {126 127 return true;128 129 }130 131 } else {132 133 header("Location: {$this->signin_url}");134 exit;135 136 }137 }138 //}}}139 40 140 41 } -
websites/events.php.gr.jp/trunk/app/Event_Controller.php
r11373 r11993 15 15 // include_path������ץꥱ�������ǥ��쥯�ȥ���� 16 16 $include_paths = array( 17 //'system' => ini_get('include_path'), //lib��pp�����ߤʤ�17 'system' => ini_get('include_path'), //lib��pp�����ߤʤ� 18 18 'app' => BASE . "/app", 19 19 'lib' => BASE . "/lib", … … 146 146 147 147 /** 148 * @var array ����ݤȤʤ��饰������ץꥱ������ID�Υꥹ�� */ 149 var $plugin_search_appids = array( 150 /* 151 * �ץ饰����˸���ݤȤʤ륢�ץꥱ������ID�Υꥹ�ȤҤ��ޤ��� 152 * 153 * ����㡧 154 * Common_Plugin_Foo_Bar �Τ褦���̾�Υץ饰�����ץꥱ�������� * �ץ饰������쥯�ȥ�¸�ߤ����硢�ʲ��Τ褦�˻�ꤹ�� 155 * Common_Plugin_Foo_Bar, EthnaWiki_Plugin_Foo_Bar, Ethna_Plugin_Foo_Bar 156 * �ν��ץ饰����������� 157 * 158 * 'Common', 'EthnaWiki', 'Ethna', 159 */ 160 'Event', 'Haste', 'Ethna', 161 ); 162 163 /** 148 164 * @var array �ե��륿�� 149 165 */ … … 248 264 } 249 265 250 //{{{ _getActionName_Form251 266 /** 252 267 * �ե���������ᤵ�줿��������̾��� … … 263 278 return $arr[1]; 264 279 } 265 //}}}266 280 267 281 function getTemplateDir() … … 276 290 } 277 291 } 292 293 /** 294 * _activateEthnaManager 295 * 296 */ 297 function _activateEthnaManager() 298 { 299 if ($this->config->get('debug') == false) { 300 return; 301 } 302 303 parent::_activateEthnaManager(); 304 305 // action�� 306 $this->action['__ethna_gettext__'] = array( 307 'form_name' => 'Ethna_Form_Gettext', 308 'form_path' => sprintf('%s/class/Action/Ethna_Action_Gettext.php', ETHNA_BASE), 309 'class_name' => 'Ethna_Action_Gettext', 310 'class_path' => sprintf('%s/class/Action/Ethna_Action_Gettext.php', ETHNA_BASE), 311 ); 312 313 // forward�� 314 $this->forward['__ethna_gettext__'] = array( 315 'forward_path' => sprintf('%s/tpl/gettext.tpl', ETHNA_BASE), 316 //'view_name' => 'Ethna_View_Gettext', 317 //'view_path' => sprintf('%s/class/View/Ethna_View_Gettext.php', ETHNA_BASE), 318 ); 319 320 } 278 321 } 279 322 ?> -
websites/events.php.gr.jp/trunk/app/action/Event/Join.php
r11988 r11993 67 67 function prepare() 68 68 { 69 if ($this->af->validate() > 0) {70 return 'error';71 }72 73 69 $this->db = $this->backend->getDB(); 74 70 … … 80 76 } 81 77 } 78 82 79 if (($event['max_register'] - $attendee_count) <= 0) { 80 $this->ae->add('over_quota', '�����С����Ƥ��ޤ�'); 81 } 82 83 if ($this->af->validate() > 0) { 83 84 return 'error'; 84 85 } -
websites/events.php.gr.jp/trunk/app/action/Login.php
r9806 r11993 48 48 { 49 49 /** 50 * authenticate 51 * 52 * @access public 53 */ 54 function authenticate() 55 { 56 //disable authenticate 57 return null; 58 } 59 60 /** 50 61 * Loginアクションの前処理 51 62 * … … 55 66 function prepare() 56 67 { 68 $config = $this->config->get('auth'); 69 $controller =& $this->backend->getController(); 70 $plugin =& $controller->getPlugin(); 71 $this->auth =& $plugin->getPlugin('Auth', ucfirst($config['type'])); 72 73 $this->af->setApp('login_url', $this->auth->getLoginUrl()); 74 75 if (!isset($_GET['name'])) { 76 header('Location: ' . $this->auth->getLoginUrl()); 77 } 78 57 79 return null; 58 80 } … … 66 88 function perform() 67 89 { 68 Event_Util::redirect($this->config->get('base_url'), 2, 'ログインに成功しました。'); 90 $result = $this->auth->login(); 91 if (!Ethna::isError($result) && $result !== false) { 92 $this->user = $this->backend->getManager('User'); 93 $this->session->set('name', $_GET['name']); 94 $this->session->set('nick', $_GET['nick']); 95 $this->session->set('is_admin', $this->user->isAdmin($_GET['name'])); 96 $this->redirect(); 97 } 98 99 return 'login'; 69 100 } 70 101 } -
websites/events.php.gr.jp/trunk/etc
-
Property
svn:ignore set
to
event-ini.php
-
Property
svn:ignore set
to
-
websites/events.php.gr.jp/trunk/etc/event-ini.php.default
r9806 r11993 12 12 'theme' => 'phpgrjp', 13 13 14 'typekey_token' => '', 14 'typekey_admin' => 'your name', 15 16 'auth' => array( 17 'type' => 'typekey', 18 'typekey_token' => 'your token', 19 'author' => 'any', //do not edit 20 ), 15 21 16 22 'debug' => false,
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)