Subversion-Projekte lars-tiefland.prado

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
/**
3
 * User Dao class file.
4
 *
5
 * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
6
 * @link http://www.pradosoft.com/
7
 * @copyright Copyright &copy; 2005-2006 PradoSoft
8
 * @license http://www.pradosoft.com/license/
9
 * @version $Id: UserDao.php 1578 2006-12-17 22:20:50Z wei $
10
 * @package Demos
11
 */
12
 
13
/**
14
 * UserDao class list, create, find and delete users.
15
 * In addition, it can validate username and password, and update
16
 * the user roles. Furthermore, a unique new token can be generated,
17
 * this token can be used to perform persistent cookie login.
18
 *
19
 * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
20
 * @version $Id: UserDao.php 1578 2006-12-17 22:20:50Z wei $
21
 * @package Demos
22
 * @since 3.1
23
 */
24
class UserDao extends BaseDao
25
{
26
	/**
27
	 * @param string username
28
	 * @return TimeTrackerUser find by user name, null if not found or disabled.
29
	 */
30
	public function getUserByName($username)
31
	{
32
		$sqlmap = $this->getSqlMap();
33
		return $sqlmap->queryForObject('GetUserByName', $username);
34
	}
35
 
36
	/**
37
	 * @param string username
38
	 * @return boolean true if username already exists, false otherwise.
39
	 */
40
	public function usernameExists($username)
41
	{
42
		$sqlmap = $this->getSqlMap();
43
		return $sqlmap->queryForObject('UsernameExists', $username);
44
	}
45
 
46
	/**
47
	 * @return array list of all enabled users.
48
	 */
49
	public function getAllUsers()
50
	{
51
		$sqlmap = $this->getSqlMap();
52
		return $sqlmap->queryForList('GetAllUsers');
53
	}
54
 
55
	/**
56
	 * @param TimeTrackerUser new user details.
57
	 * @param string new user password.
58
	 */
59
	public function addNewUser($user, $password)
60
	{
61
		$sqlmap = $this->getSqlMap();
62
		$param['user'] = $user;
63
		$param['password'] = md5($password);
64
		$sqlmap->insert('AddNewUser', $param);
65
		if(count($user->getRoles()) > 0)
66
			$this->updateUserRoles($user);
67
	}
68
 
69
	/**
70
	 * @param string username to delete
71
	 */
72
	public function deleteUserByName($username)
73
	{
74
		$sqlmap = $this->getSqlMap();
75
		$sqlmap->delete('DeleteUserByName', $username);
76
	}
77
 
78
	/**
79
	 * Updates the user profile details, including user roles.
80
	 * @param TimeTrackerUser updated user details.
81
	 * @param string new user password, null to avoid updating password.
82
	 */
83
	public function updateUser($user,$password=null)
84
	{
85
		$sqlmap = $this->getSqlMap();
86
		if($password !== null)
87
		{
88
			$param['user'] = $user;
89
			$param['password'] = md5($password);
90
			$sqlmap->update('UpdateUserDetailsAndPassword', $param);
91
		}
92
		else
93
		{
94
			$sqlmap->update('UpdateUserDetails', $user);
95
		}
96
		$this->updateUserRoles($user);
97
	}
98
 
99
	/**
100
	 * @param string username to be validated
101
	 * @param string matching password
102
	 * @return boolean true if the username and password matches.
103
	 */
104
	public function validateUser($username, $password)
105
	{
106
		$sqlmap = $this->getSqlMap();
107
		$param['username'] = $username;
108
		$param['password'] = md5($password);
109
		return $sqlmap->queryForObject('ValidateUser', $param);
110
	}
111
 
112
	/**
113
	 * @param string unique persistent session token
114
	 * @return TimeTrackerUser user details if valid token, null otherwise.
115
	 */
116
	public function validateSignon($token)
117
	{
118
		$sqlmap = $this->getSqlMap();
119
		$sqlmap->update('UpdateSignon', $token);
120
		return $sqlmap->queryForObject('ValidateAutoSignon', $token);
121
	}
122
 
123
	/**
124
	 * @param TimeTrackerUser user details to generate the token
125
	 * @return string unique persistent login token.
126
	 */
127
	public function createSignonToken($user)
128
	{
129
		$sqlmap = $this->getSqlMap();
130
		$param['username'] = $user->getName();
131
		$param['token'] = md5(microtime().$param['username']);
132
		$sqlmap->insert('RegisterAutoSignon', $param);
133
		return $param['token'];
134
	}
135
 
136
	/**
137
	 * @param TimeTrackerUser deletes all signon token for given user, null to delete all
138
	 * tokens.
139
	 */
140
	public function clearSignonTokens($user=null)
141
	{
142
		$sqlmap = $this->getSqlMap();
143
		if($user !== null)
144
			$sqlmap->delete('DeleteAutoSignon', $user->getName());
145
		else
146
			$sqlmap->delete('DeleteAllSignon');
147
	}
148
 
149
	/**
150
	 * @param TimeTrackerUser user details for updating the assigned roles.
151
	 */
152
	public function updateUserRoles($user)
153
	{
154
		$sqlmap = $this->getSqlMap();
155
		$sqlmap->delete('DeleteUserRoles', $user);
156
		foreach($user->getRoles() as $role)
157
		{
158
			$param['username'] = $user->getName();
159
			$param['role'] = $role;
160
			$sqlmap->update('AddUserRole', $param);
161
		}
162
	}
163
}
164
 
165
?>