rhaco: ユーザ認証実装 with cookie(最小ソース)

project.xml

<project rhacover="1.6.1" version="0.0.1" name="userauth" 
 xmlns="http://rhaco.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://rhaco.org http://m.rhaco.org/xsd/project_1_6_x.xsd">
	<database name="userauth">
		<table name="users" admin="true">
			<column name="id" type="serial" />
			<column name="user" type="string" size="50" require="true" />
			<column name="pass" type="string" require="true" />
		</table>
	</database>
</project>

__init__.php

include_once("./__settings__.php");
Rhaco::import("database.DbUtil");
Rhaco::import("model.Users");
Rhaco::import("network.http.RequestLogin");
Rhaco::import("network.http.model.RequestLoginConditionDb");
$users_db = new DbUtil(Users::connection());

model/Users.php

Rhaco::import("model.table.UsersTable");
class Users extends UsersTable{
	function loginCondition(&$db, &$var, $request){
		
		$user = $request->getVariable("login");
		$pass = $request->getVariable("password");
		
		$var = $db->get($this,new C(
			Q::eq($this->columnUser(), $user),
			Q::eq($this->columnPass(), $pass)
		));
		return V::istype($this, $var);
	}
	function loginConditionCookie(&$db, &$var, $cookiekey){
		$oauth_id = $cookiekey;
		$var = $db->get($this,new C(
			Q::eq($this->columnId(), $oauth_id)
		));
		return V::istype($this, $var);
	}
}

index.php

require('__init__.php');

RequestLogin::login(
	new RequestLoginConditionDb($users_db, new Users())
);
$login_session = RequestLogin::getLoginSession();
if(!$login_session) Header::redirect(Rhaco::url().'login.php');

var_dump($login_session);

logout.php

require('__init__.php');
RequestLogin::silent($users_db);
RequestLogin::logout();
Header::redirect('index.php');

login.php

require('__init__.php');
RequestLogin::login(new RequestLoginConditionDb($users_db, new Users()));
if(RequestLogin::isLogin()) {
	$session_log = RequestLogin::getLoginSession();
	RequestLogin::setLoginCookie($session_log->id);
	Header::redirect(Rhaco::url());
}