]> andersk Git - sql-web.git/blame - lib/security.lib.php
first stab at 0.2
[sql-web.git] / lib / security.lib.php
CommitLineData
997305cf
JP
1<?php
2
3require_once('mitsql.lib.php');
4
5class 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
59function 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
67function isSSL() {
68 return $_SERVER['SERVER_PORT'] == 443;
69}
70
71function 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
91function 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}
95function redirectFull($target) {
96 redirect2((isSSL()?'https://':'http://').$_SERVER['SERVER_NAME'].$target);
97}
98function redirect2($target) {
99 header('Location: '.$target);
100 exit;
101}
102
103## USER SCRIPTS
104
105function 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.056204 seconds and 5 git commands to generate.