]>
Commit | Line | Data |
---|---|---|
997305cf JP |
1 | <?php |
2 | ||
3 | require_once('mitsql.lib.php'); | |
4 | ||
5 | class Login { | |
6 | var $info; | |
7 | function Login($u, $p=null) { | |
8 | $opt = is_null($p)?'':sprintf(" AND Password='%s' ", mysql_escape_string(base64_encode($p))); | |
9 | $sql = sprintf("SELECT UserId, Username, Name, Email, UL, bEnabled | |
10 | FROM User | |
11 | WHERE Username = '%s' | |
12 | $opt", | |
13 | mysql_escape_string($u)); | |
14 | $r = fetchRows(DBSelect($sql),'UserId'); | |
15 | $this->info = count($r)?array_shift($r):null; | |
16 | } | |
17 | function exists() { | |
18 | return !is_null($this->info); | |
19 | } | |
20 | function isValid() { | |
21 | return $this->isEnabled() && $this->getUL()>0; | |
22 | } | |
23 | function isEnabled() { | |
24 | return $this->exists() && $this->info['bEnabled']==1; | |
25 | } | |
26 | function getUserId() { | |
27 | return $this->exists() && $this->info['UserId']; | |
28 | } | |
29 | function getUsername() { | |
30 | return $this->exists() && $this->info['Username']; | |
31 | } | |
32 | function getName() { | |
33 | return $this->exists() && $this->info['Name']; | |
34 | } | |
35 | function getEmail() { | |
36 | return $this->exists() && $this->info['Email']; | |
37 | } | |
38 | function getUL() { | |
39 | return $this->exists() && $this->info['UL']; | |
40 | } | |
41 | function expire() { | |
42 | $this->info = null; | |
43 | } | |
44 | function refresh() { | |
45 | $this->Login($this->getUsername()); | |
46 | } | |
47 | function update($name=null,$email=null) { | |
48 | if (!$this->exists()) return; | |
49 | $arr = array(); | |
50 | is_null($name) || $arr['Name'] = $name; | |
51 | is_null($email) || $arr['Email'] = $email; | |
52 | $sql = sprintf("UPDATE User %s WHERE UserId = '%s'", | |
53 | buildSQLSet($arr), mysql_escape_string($this->getUserId())); | |
54 | DBUpdate($sql); | |
55 | } | |
56 | } | |
57 | ||
58 | ||
59 | function isLoggedIn($aLogin=null) { | |
60 | if (is_null($aLogin)) { | |
61 | global $Login; | |
62 | $aLogin = $Login; | |
63 | } | |
64 | return !empty($aLogin) && is_a($aLogin, 'Login') && $aLogin->isValid(); | |
65 | } | |
66 | ||
67 | function isSSL() { | |
68 | return $_SERVER['SERVER_PORT'] == 443; | |
69 | } | |
70 | ||
71 | function getSSLCert() { | |
72 | if (DEVEL && file_exists('.forceauth')) { | |
73 | $fu = explode('|',file_get_contents('.forceauth')); | |
74 | $name = $fu[0]; | |
75 | $email = $fu[1]; | |
76 | } else { | |
77 | $name = isset($_SERVER['SSL_CLIENT_S_DN_CN'])?$_SERVER['SSL_CLIENT_S_DN_CN']:null; | |
78 | $email = isset($_SERVER['SSL_CLIENT_S_DN_Email'])?$_SERVER['SSL_CLIENT_S_DN_Email']:null; | |
79 | } | |
80 | if (!is_null($email)) { | |
81 | $user = explode('@',$email); | |
82 | $user = $user[0]; | |
83 | return array('Username'=>$user, 'Name'=>$name, 'Email'=>$email); | |
84 | } else { | |
85 | return null; | |
86 | } | |
87 | } | |
88 | ||
89 | ## 302 REDIRECTS | |
90 | ||
91 | function redirect($target=NULL) { | |
92 | $base = (is_null($target)||substr($target,0,1)=='?')?$_SERVER['REDIRECT_URL']:(dirname($_SERVER['REDIRECT_URL']).'/'); | |
93 | redirectFull(is_null($target)?$base:($base.$target)); | |
94 | } | |
95 | function redirectFull($target) { | |
96 | redirect2((isSSL()?'https://':'http://').$_SERVER['SERVER_NAME'].$target); | |
97 | } | |
98 | function redirect2($target) { | |
99 | header('Location: '.$target); | |
100 | exit; | |
101 | } | |
102 | ||
103 | ## USER SCRIPTS | |
104 | ||
105 | function addUser($sslCredentials) { | |
106 | global $_NEW_USER; | |
107 | $arr = array_merge($sslCredentials, $_NEW_USER); | |
108 | $sql = sprintf("INSERT INTO User %s", | |
109 | buildSQLInsert($arr)); | |
110 | return DBInsert($sql); | |
111 | } | |
112 | ||
113 | ?> |