Initial commit of Session/Authentication code

Plugin architecture with single Database-backed implementation.
This commit is contained in:
2011-12-19 12:13:14 +00:00
parent 5b72a8a206
commit d92cc576d7
16 changed files with 507 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
<?php
class SihnonFramework_Auth_Plugin_Database_User extends Sihnon_DatabaseObject implements Sihnon_Auth_IUser {
protected static $table = 'user';
protected $_db_id;
protected $_db_username;
protected $_db_password;
protected $_db_fullname;
protected $_db_email;
protected $_db_last_login;
protected $_db_last_password_change;
protected $groups = null;
protected $permissions = null;
public static function exists($username) {
return static::exists('username', $username);
}
public static function add($username, $password) {
$user = new self();
$user->username = $username;
$user->password = sha1($password);
$user->last_password_change = time();
$user->create();
return $user;
}
public function username() {
return $this->username;
}
public function checkPassword($password) {
return ($this->password == sha1($password));
}
public function changePassword($new_password) {
$this->password = sha1($new_password);
$this->save();
}
public function groups($ignore_cache = false) {
if ($this->groups === null || $ignore_cache) {
$this->groups = Sihnon_Auth_Plugin_Database_Group::all_for('user', $this->id, 'groups_by_user');
}
return $this->groups;
}
public function permissions($ignore_cache = false) {
if ($this->permissions === null || $ignore_cache) {
$this->permissions = Sihnon_Auth_Plugin_Database_Permission::all_for('user', $this->id, 'permissions_by_user');
}
return $this->permissions;
}
public function hasPermission($permission) {
$permissions = $this->permissions();
foreach ($permissions as $has_permission) {
if ($permission == $has_permission->id) {
return true;
}
}
return false;
}
}
?>