mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-05-09 13:06:14 +00:00
add roles
This commit is contained in:
parent
91db603a89
commit
480aca1c80
|
@ -363,6 +363,7 @@ class SeedDMS_Core_DMS {
|
||||||
$this->classnames['document'] = 'SeedDMS_Core_Document';
|
$this->classnames['document'] = 'SeedDMS_Core_Document';
|
||||||
$this->classnames['documentcontent'] = 'SeedDMS_Core_DocumentContent';
|
$this->classnames['documentcontent'] = 'SeedDMS_Core_DocumentContent';
|
||||||
$this->classnames['user'] = 'SeedDMS_Core_User';
|
$this->classnames['user'] = 'SeedDMS_Core_User';
|
||||||
|
$this->classnames['role'] = 'SeedDMS_Core_Role';
|
||||||
$this->classnames['group'] = 'SeedDMS_Core_Group';
|
$this->classnames['group'] = 'SeedDMS_Core_Group';
|
||||||
$this->classnames['transmittal'] = 'SeedDMS_Core_Transmittal';
|
$this->classnames['transmittal'] = 'SeedDMS_Core_Transmittal';
|
||||||
$this->classnames['transmittalitem'] = 'SeedDMS_Core_TransmittalItem';
|
$this->classnames['transmittalitem'] = 'SeedDMS_Core_TransmittalItem';
|
||||||
|
@ -1598,7 +1599,9 @@ class SeedDMS_Core_DMS {
|
||||||
if (is_object($this->getUserByLogin($login))) {
|
if (is_object($this->getUserByLogin($login))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if($role == '')
|
if(is_object($role))
|
||||||
|
$role = $role->getID();
|
||||||
|
elseif($role == '')
|
||||||
$role = '0';
|
$role = '0';
|
||||||
if(trim($pwdexpiration) == '')
|
if(trim($pwdexpiration) == '')
|
||||||
$pwdexpiration = '0000-00-00 00:00:00';
|
$pwdexpiration = '0000-00-00 00:00:00';
|
||||||
|
@ -1662,6 +1665,57 @@ class SeedDMS_Core_DMS {
|
||||||
return $this->getGroup($this->db->getInsertID());
|
return $this->getGroup($this->db->getInsertID());
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a role by its id
|
||||||
|
*
|
||||||
|
* @param integer $id id of role
|
||||||
|
* @return object/boolean role or false if no role was found
|
||||||
|
*/
|
||||||
|
function getRole($id) { /* {{{ */
|
||||||
|
$classname = $this->classnames['role'];
|
||||||
|
return $classname::getInstance($id, $this);
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a role by its name
|
||||||
|
*
|
||||||
|
* @param integer $name name of role
|
||||||
|
* @return object/boolean role or false if no role was found
|
||||||
|
*/
|
||||||
|
function getRoleByName($name) { /* {{{ */
|
||||||
|
$classname = $this->classnames['role'];
|
||||||
|
return $classname::getInstance($name, $this, 'name');
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return list of all roles
|
||||||
|
*
|
||||||
|
* @return array of instances of {@link SeedDMS_Core_Role} or false
|
||||||
|
*/
|
||||||
|
function getAllRoles($orderby = '') { /* {{{ */
|
||||||
|
$classname = $this->classnames['role'];
|
||||||
|
return $classname::getAllInstances($orderby, $this);
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new role
|
||||||
|
*
|
||||||
|
* @param string $name name of role
|
||||||
|
* @return object/boolean instance of {@link SeedDMS_Core_Role} or false in
|
||||||
|
* case of an error.
|
||||||
|
*/
|
||||||
|
function addRole($name, $role) { /* {{{ */
|
||||||
|
if (is_object($this->getRoleByName($name))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$queryStr = "INSERT INTO tblRoles (name, role) VALUES (".$this->db->qstr($name).", ".$role.")";
|
||||||
|
if (!$this->db->getResult($queryStr))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return $this->getRole($this->db->getInsertID());
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a transmittal by its id
|
* Get a transmittal by its id
|
||||||
*
|
*
|
||||||
|
|
|
@ -151,9 +151,13 @@ class SeedDMS_Core_Group {
|
||||||
|
|
||||||
$this->_users = array();
|
$this->_users = array();
|
||||||
|
|
||||||
|
$classnamerole = $dms->getClassname('role');
|
||||||
|
|
||||||
$classname = $this->_dms->getClassname('user');
|
$classname = $this->_dms->getClassname('user');
|
||||||
foreach ($resArr as $row) {
|
foreach ($resArr as $row) {
|
||||||
$user = new $classname($row["id"], $row["login"], $row["pwd"], $row["fullName"], $row["email"], $row["language"], $row["theme"], $row["comment"], $row["role"], $row['hidden']);
|
$role = $classnamerole::getInstance($row['role'], $dms);
|
||||||
|
$user = new $classname($row["id"], $row["login"], $row["pwd"], $row["fullName"], $row["email"], $row["language"], $row["theme"], $row["comment"], $role, $row['hidden']);
|
||||||
|
$user->setDMS($this->_dms);
|
||||||
array_push($this->_users, $user);
|
array_push($this->_users, $user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,202 @@
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class to represent a role in the document management system
|
||||||
|
*
|
||||||
|
* @category DMS
|
||||||
|
* @package SeedDMS_Core
|
||||||
|
* @author Uwe Steinmann <uwe@steinmann.cx>
|
||||||
|
* @copyright Copyright (C) 2016 Uwe Steinmann
|
||||||
|
* @version Release: @package_version@
|
||||||
|
*/
|
||||||
|
class SeedDMS_Core_Role { /* {{{ */
|
||||||
|
/**
|
||||||
|
* @var integer id of role
|
||||||
|
*
|
||||||
|
* @access protected
|
||||||
|
*/
|
||||||
|
var $_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string name of role
|
||||||
|
*
|
||||||
|
* @access protected
|
||||||
|
*/
|
||||||
|
var $_login;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string role of user. Can be one of SeedDMS_Core_User::role_user,
|
||||||
|
* SeedDMS_Core_User::role_admin, SeedDMS_Core_User::role_guest
|
||||||
|
*
|
||||||
|
* @access protected
|
||||||
|
*/
|
||||||
|
var $_role;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var object reference to the dms instance this user belongs to
|
||||||
|
*
|
||||||
|
* @access protected
|
||||||
|
*/
|
||||||
|
var $_dms;
|
||||||
|
|
||||||
|
const role_user = '0';
|
||||||
|
const role_admin = '1';
|
||||||
|
const role_guest = '2';
|
||||||
|
|
||||||
|
function SeedDMS_Core_Role($id, $name, $role) { /* {{{ */
|
||||||
|
$this->_id = $id;
|
||||||
|
$this->_name = $name;
|
||||||
|
$this->_role = $role;
|
||||||
|
$this->_dms = $role;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an instance of a role object
|
||||||
|
*
|
||||||
|
* @param string|integer $id Id, login name, or email of user, depending
|
||||||
|
* on the 3rd parameter.
|
||||||
|
* @param object $dms instance of dms
|
||||||
|
* @param string $by search by [name|email]. If 'name' is passed, the method
|
||||||
|
* will check for the 4th paramater and also filter by email. If this
|
||||||
|
* parameter is left empty, the user will be search by its Id.
|
||||||
|
* @param string $email optional email address if searching for name
|
||||||
|
* @return object instance of class SeedDMS_Core_User
|
||||||
|
*/
|
||||||
|
public static function getInstance($id, $dms, $by='') { /* {{{ */
|
||||||
|
$db = $dms->getDB();
|
||||||
|
|
||||||
|
switch($by) {
|
||||||
|
case 'name':
|
||||||
|
$queryStr = "SELECT * FROM `tblRoles` WHERE `name` = ".$db->qstr($id);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$queryStr = "SELECT * FROM `tblRoles` WHERE id = " . (int) $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$resArr = $db->getResultArray($queryStr);
|
||||||
|
if (is_bool($resArr) && $resArr == false) return false;
|
||||||
|
if (count($resArr) != 1) return false;
|
||||||
|
|
||||||
|
$resArr = $resArr[0];
|
||||||
|
|
||||||
|
$role = new self($resArr["id"], $resArr["name"], $resArr["role"]);
|
||||||
|
$role->setDMS($dms);
|
||||||
|
return $role;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
public static function getAllInstances($orderby, $dms) { /* {{{ */
|
||||||
|
$db = $dms->getDB();
|
||||||
|
|
||||||
|
if($orderby == 'ame')
|
||||||
|
$queryStr = "SELECT * FROM tblRoles ORDER BY name";
|
||||||
|
else
|
||||||
|
$queryStr = "SELECT * FROM tblRoles ORDER BY id";
|
||||||
|
$resArr = $db->getResultArray($queryStr);
|
||||||
|
|
||||||
|
if (is_bool($resArr) && $resArr == false)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$roles = array();
|
||||||
|
|
||||||
|
for ($i = 0; $i < count($resArr); $i++) {
|
||||||
|
$role = new self($resArr[$i]["id"], $resArr[$i]["name"], $resArr[$i]["role"]);
|
||||||
|
$role->setDMS($dms);
|
||||||
|
$roles[$i] = $role;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $roles;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
function setDMS($dms) {
|
||||||
|
$this->_dms = $dms;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getID() { return $this->_id; }
|
||||||
|
|
||||||
|
function getName() { return $this->_name; }
|
||||||
|
|
||||||
|
function setName($newName) { /* {{{ */
|
||||||
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
|
$queryStr = "UPDATE tblRoles SET name =".$db->qstr($newName)." WHERE id = " . $this->_id;
|
||||||
|
$res = $db->getResult($queryStr);
|
||||||
|
if (!$res)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$this->_name = $newName;
|
||||||
|
return true;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
function isAdmin() { return ($this->_role == SeedDMS_Core_Role::role_admin); }
|
||||||
|
|
||||||
|
function isGuest() { return ($this->_role == SeedDMS_Core_Role::role_guest); }
|
||||||
|
|
||||||
|
function getRole() { return $this->_role; }
|
||||||
|
|
||||||
|
function setRole($newrole) { /* {{{ */
|
||||||
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
|
$queryStr = "UPDATE tblRoles SET role = " . $newrole . " WHERE id = " . $this->_id;
|
||||||
|
if (!$db->getResult($queryStr))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$this->_role = $newrole;
|
||||||
|
return true;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete role
|
||||||
|
*
|
||||||
|
* @return boolean true on success or false in case of an error
|
||||||
|
*/
|
||||||
|
function remove($user) { /* {{{ */
|
||||||
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
|
$queryStr = "DELETE FROM tblRoles WHERE id = " . $this->_id;
|
||||||
|
if (!$db->getResult($queryStr)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
function isUsed() { /* {{{ */
|
||||||
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
|
$queryStr = "SELECT * FROM tblUsers WHERE role=".$this->_id;
|
||||||
|
$resArr = $db->getResultArray($queryStr);
|
||||||
|
if (is_array($resArr) && count($resArr) == 0)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
function getUsers() { /* {{{ */
|
||||||
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
|
if (!isset($this->_users)) {
|
||||||
|
$queryStr = "SELECT * FROM tblUsers WHERE role=".$this->_id;
|
||||||
|
$resArr = $db->getResultArray($queryStr);
|
||||||
|
if (is_bool($resArr) && $resArr == false)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$this->_users = array();
|
||||||
|
|
||||||
|
$classnamerole = $this->_dms->getClassname('role');
|
||||||
|
|
||||||
|
$classname = $this->_dms->getClassname('user');
|
||||||
|
foreach ($resArr as $row) {
|
||||||
|
$role = $classnamerole::getInstance($row['role'], $this->_dms);
|
||||||
|
$user = new $classname($row["id"], $row["login"], $row["pwd"], $row["fullName"], $row["email"], $row["language"], $row["theme"], $row["comment"], $role, $row['hidden']);
|
||||||
|
$user->setDMS($this->_dms);
|
||||||
|
array_push($this->_users, $user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $this->_users;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to represent a user in the document management system
|
* Class to represent a user in the document management system
|
||||||
*
|
*
|
||||||
|
@ -203,7 +399,10 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
|
|
||||||
$resArr = $resArr[0];
|
$resArr = $resArr[0];
|
||||||
|
|
||||||
$user = new self($resArr["id"], $resArr["login"], $resArr["pwd"], $resArr["fullName"], $resArr["email"], $resArr["language"], $resArr["theme"], $resArr["comment"], $resArr["role"], $resArr["hidden"], $resArr["disabled"], $resArr["pwdExpiration"], $resArr["loginfailures"], $resArr["quota"], $resArr["homefolder"]);
|
$classname = $dms->getClassname('role');
|
||||||
|
$role = $classname::getInstance($resArr['role'], $dms);
|
||||||
|
|
||||||
|
$user = new self($resArr["id"], $resArr["login"], $resArr["pwd"], $resArr["fullName"], $resArr["email"], $resArr["language"], $resArr["theme"], $resArr["comment"], $role, $resArr["hidden"], $resArr["disabled"], $resArr["pwdExpiration"], $resArr["loginfailures"], $resArr["quota"], $resArr["homefolder"]);
|
||||||
$user->setDMS($dms);
|
$user->setDMS($dms);
|
||||||
return $user;
|
return $user;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
@ -356,6 +555,9 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
function setRole($newrole) { /* {{{ */
|
function setRole($newrole) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
|
if(is_object($newrole))
|
||||||
|
$queryStr = "UPDATE tblUsers SET role = " . $newrole->getID() . " WHERE id = " . $this->_id;
|
||||||
|
else
|
||||||
$queryStr = "UPDATE tblUsers SET role = " . $newrole . " WHERE id = " . $this->_id;
|
$queryStr = "UPDATE tblUsers SET role = " . $newrole . " WHERE id = " . $this->_id;
|
||||||
if (!$db->getResult($queryStr))
|
if (!$db->getResult($queryStr))
|
||||||
return false;
|
return false;
|
||||||
|
@ -364,9 +566,12 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
return true;
|
return true;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function isAdmin() { return ($this->_role == SeedDMS_Core_User::role_admin); }
|
function isAdmin() { return (is_object($this->_role) ? $this->_role->isAdmin() : $this->_role == SeedDMS_Core_User::role_admin); }
|
||||||
|
|
||||||
function setAdmin($isAdmin) { /* {{{ */
|
/**
|
||||||
|
* Was never used and is now deprecated
|
||||||
|
*/
|
||||||
|
function _setAdmin($isAdmin) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "UPDATE tblUsers SET role = " . SeedDMS_Core_User::role_admin . " WHERE id = " . $this->_id;
|
$queryStr = "UPDATE tblUsers SET role = " . SeedDMS_Core_User::role_admin . " WHERE id = " . $this->_id;
|
||||||
|
@ -377,9 +582,12 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
return true;
|
return true;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function isGuest() { return ($this->_role == SeedDMS_Core_User::role_guest); }
|
function isGuest() { return (is_object($this->_role) ? $this->_role->isGuest() : $this->_role == SeedDMS_Core_User::role_guest); }
|
||||||
|
|
||||||
function setGuest($isGuest) { /* {{{ */
|
/**
|
||||||
|
* Was never used and is now deprecated
|
||||||
|
*/
|
||||||
|
function _setGuest($isGuest) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "UPDATE tblUsers SET role = " . SeedDMS_Core_User::role_guest . " WHERE id = " . $this->_id;
|
$queryStr = "UPDATE tblUsers SET role = " . SeedDMS_Core_User::role_guest . " WHERE id = " . $this->_id;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user