Platform
3.1
PHP API documentation
Main Page
Related Pages
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Pages
Class.UserToken.php
Go to the documentation of this file.
1
<?php
2
/*
3
* @author Anakeen
4
* @license http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Anakeen - licence CC
5
* @package FDL
6
*/
7
/**
8
* UserToken class
9
*
10
* This class provides methods to store and manage authentication
11
* tokens with expiration time
12
*
13
* @author Anakeen 2009
14
* @version $Id: Class.UserToken.php,v 1.6 2009/01/16 13:33:00 jerome Exp $
15
* @license http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Anakeen - licence CC
16
* @package FDL
17
* @subpackage
18
*/
19
/**
20
*/
21
22
include_once (
'Class.DbObj.php'
);
23
24
class
UserToken
extends
DbObj
25
{
26
var
$Class
=
'$Id: Class.UserToken.php,v 1.6 2009/01/16 13:33:00 jerome Exp $'
;
27
28
var
$fields
= array(
29
'token'
,
30
'userid'
,
31
'expire'
,
32
'expendable'
,
33
'context'
34
);
35
36
var
$id_fields
= array(
37
'token'
38
);
39
40
var
$dbtable
=
'usertoken'
;
41
42
var
$sqlcreate
=
"
43
CREATE TABLE usertoken (
44
token VARCHAR(256) NOT NULL PRIMARY KEY,
45
userid INT NOT NULL,
46
expire TIMESTAMP NOT NULL,
47
expendable BOOLEAN DEFAULT FALSE,
48
context text
49
);
50
CREATE INDEX usertoken_idx ON usertoken(token);
51
"
;
52
53
var
$hAlg
=
'sha1'
;
54
var
$rndSize
= 4;
55
var
$expiration
= 86400;
// 24 hours
56
function
setHAlg
(
$hAlg
)
57
{
58
$this->hAlg =
$hAlg
;
59
return
$this->hAlg
;
60
}
61
62
function
setRndSize
(
$rndSize
)
63
{
64
$this->rndSize =
$rndSize
;
65
return
$this->rndSize
;
66
}
67
68
function
setExpiration
(
$expiration
=
""
)
69
{
70
if
(
$expiration
==
""
) {
71
$expiration
=
$this->expiration
;
72
}
73
74
if
(preg_match(
'/^-?infinity$/'
,
$expiration
)) {
75
$this->expire =
$expiration
;
76
}
else
{
77
if
(!is_numeric(
$expiration
)) {
78
return
false
;
79
}
80
81
$this->expire = strftime(
"%Y-%m-%d %H:%M:%S"
, time() +
$expiration
);
82
}
83
84
return
$this->expire;
85
}
86
87
function
genToken
()
88
{
89
$rnd = rand();
90
for
($i = 0; $i <
$this->rndSize
; $i++) {
91
$rnd.= rand();
92
}
93
94
switch
(strtolower($this->hAlg)) {
95
case
'sha1'
:
96
return
sha1($rnd);
97
break
;
98
99
case
'md5'
:
100
return
md5($rnd);
101
break
;
102
103
case
'raw'
:
104
return
$rnd;
105
break
;
106
}
107
108
error_log(__CLASS__ .
"::"
. __FUNCTION__ .
" "
.
"Unknown hAlg "
. $this->hAlg .
". Will return raw random value."
);
109
return
$rnd;
110
}
111
112
function
getToken
()
113
{
114
if
($this->token ==
""
) {
115
error_log(__CLASS__ .
"::"
. __FUNCTION__ .
" "
.
"token is not defined."
);
116
}
117
return
$this->token;
118
}
119
120
function
deleteExpired
()
121
{
122
$err
= $this->
exec_query
(
"DELETE FROM "
. pg_escape_string($this->dbtable) .
" WHERE expire < now()"
);
123
return
$err
;
124
}
125
126
function
preUpdate
()
127
{
128
if
($this->token ==
""
) {
129
return
"Error: token not set"
;
130
}
131
if
($this->userid ==
""
) {
132
return
"Error: userid not set"
;
133
}
134
if
($this->expire ==
""
) {
135
return
"Error: expire not set"
;
136
}
137
}
138
}
139
?>
← centre documentaire
© anakeen
- published under
CC License
-
Dynacase