blob: eff5fd0ad2ed7d2a941767406f7d0e9ed005f82b (
plain) (
tree)
|
|
<?php
class User extends Object
{
/*
* Create a new User object with the given username and keyed with the given plain-text password
* This function returns false if $username is already being used
* On success, this object should be initialized as the new user (use only on new User() objects)
*/
function createNewUser($username, $password)
{
if ($this->usernameInUse($username))
return false;
/* if there exist no users already, make this new one an admin */
if (count($this->getAllUsers_orderByName()) == 0)
$this->admin = 1;
$this->perms = 0;
$this->name = $username;
$this->type = "user";
$this->setPassword($password);
$this->setEmail("");
$this->saveObj();
$this->owner = $this->guid;
$this->saveObj();
return true;
}
/*
* Validate the password for this user. Returns true if correct, false otherwise
*/
function validatePassword($password)
{
$key = $this->getKey($password, $this->salt);
return $key == $this->key;
}
/*
* Validate the email confirmation key for a user, returns true if correct, false otherwise. On success, $this->emailConf is also set to 1
*/
function confirmEmailKey($key)
{
if ($key != $this->emailConfKey)
return false;
$this->emailConf = 1;
return true;
}
/*
* Overwrite the salt and key for this user, given a new plaintext password
*/
function setPassword($password)
{
$this->salt = $this->getBlob();
$this->key = $this->getKey($password, $this->salt);
}
/*
* Overwrite the emailConfKey and flag, and change user's saved email address
*/
function setEmail($email)
{
$this->email = $email;
$this->emailConf = 0;
$this->emailConfKey = $this->getBlob();
}
/*
* If a user has an alias set, display it instead of their username
*/
function getDisplayName()
{
if ($this->alias != "")
return $this->alias;
return $this->name;
}
/*
* Get the glyphicon to use for this user
*/
function getGlyphicon()
{
if ($this->admin)
return "glyphicon glyphicon-sunglasses";
return "glyphicon glyphicon-user";
}
/*
* Get all groups this user owns or is a member of
*/
function getGroups()
{
/* owner */
$query = "SELECT guid FROM object WHERE type = 'group' AND owner = '" . $this->db->esc($this->guid) . "'";
$result = $this->db->query($query);
$groups = array();
foreach ($result as $g)
$groups[] = new Group($g['guid']);
/* member */
$query = "SELECT o.guid FROM object o JOIN obj_member om ON o.guid = om.guid WHERE o.type = 'group' AND member = '" . $this->db->esc($this->guid) . "'";
$result = $this->db->query($query);
foreach ($result as $g)
$groups[] = new Group($g['guid']);
return $groups;
}
}
?>
|