]> andersk Git - sql-web.git/blob - lib/security.lib.php
ee7847e1f9744aaddd550688219f4e0d00c9655e
[sql-web.git] / lib / security.lib.php
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 ?>
This page took 0.068915 seconds and 3 git commands to generate.