summaryrefslogtreecommitdiffstats
path: root/lib/class/access.class.php
diff options
context:
space:
mode:
authorKarl 'vollmerk' Vollmer <vollmer@ampache.org>2006-09-25 01:05:23 +0000
committerKarl 'vollmerk' Vollmer <vollmer@ampache.org>2006-09-25 01:05:23 +0000
commite32557bf900153c5cfb0d2f28640aa9091ef7488 (patch)
tree56e2d9b722c582d536a6b3e8065914851894db72 /lib/class/access.class.php
parent3ad79fc4c9a6718a336fd929e33b6a0ac9bbf173 (diff)
downloadampache-e32557bf900153c5cfb0d2f28640aa9091ef7488.tar.gz
ampache-e32557bf900153c5cfb0d2f28640aa9091ef7488.tar.bz2
ampache-e32557bf900153c5cfb0d2f28640aa9091ef7488.zip
finished up ACL work
Diffstat (limited to 'lib/class/access.class.php')
-rw-r--r--lib/class/access.class.php49
1 files changed, 40 insertions, 9 deletions
diff --git a/lib/class/access.class.php b/lib/class/access.class.php
index 330156b7..5e664741 100644
--- a/lib/class/access.class.php
+++ b/lib/class/access.class.php
@@ -89,8 +89,13 @@ class Access {
$start = ip2int($data['start']);
$end = ip2int($data['end']);
$level = sql_escape($data['level']);
-
- $sql = "UPDATE access_list SET start='$start', end='$end', level='$level' WHERE id='" . sql_escape($this->id) . "'";
+ $user = sql_escape($data['user']);
+ $key = sql_escape($data['key']);
+
+ $sql = "UPDATE access_list " .
+ "SET start='$start', end='$end', level='$level', user='$user' " .
+ "WHERE id='" . sql_escape($this->id) . "'";
+
$db_results = mysql_query($sql, dbh());
return true;
@@ -115,10 +120,12 @@ class Access {
$level = intval($level);
$type = $this->validate_type($type);
- $sql = "INSERT INTO access_list (`name`,`level`,`start`,`end`) VALUES ".
- "('$name','$level','$start','$end')";
+ $sql = "INSERT INTO access_list (`name`,`level`,`start`,`end`,`key`,`user`,`type`) " .
+ "VALUES ('$name','$level','$start','$end','$key','$user','$type')";
$db_results = mysql_query($sql, dbh());
+ return true;
+
} // create
/*!
@@ -140,7 +147,7 @@ class Access {
@function check
@discussion check to see if they have rights
*/
- function check($needed, $ip) {
+ function check($type,$ip,$user,$level,$key='') {
// They aren't using access control
// lets just keep on trucking
@@ -148,9 +155,29 @@ class Access {
return true;
}
- $ip = ip2int($ip);
+ // Clean incomming variables
+ $ip = ip2int(intval($ip));
+ $user = sql_escape($user);
+ $key = sql_escape($key);
+ $level = sql_escape($level);
- $sql = "SELECT id FROM access_list WHERE start<='$ip' AND end>='$ip' AND level>='$needed'";
+ switch ($type) {
+ case 'xml-rpc':
+ $sql = "SELECT id FROM access_list" .
+ " WHERE `start` <= '$ip' AND `end` >= '$ip'" .
+ " AND `key` = '$key' AND `level` >= '$level'";
+ break;
+ case 'network':
+ case 'interface':
+ case 'stream':
+ default:
+ $sql = "SELECT id FROM access_list" .
+ " WHERE `start` <= '$ip' AND `end` >= '$ip'" .
+ " AND `level` >= '$level' AND `type` = '$type'";
+ if (strlen($user)) { $sql .= " AND (`user` = '$user' OR `user` IS NULL)"; }
+ else { $sql .= " AND `user` IS NULL"; }
+ break;
+ } // end switch on type
$db_results = mysql_query($sql, dbh());
// Yah they have access they can use the mojo
@@ -240,9 +267,13 @@ class Access {
* Take a user and return their full name
*/
function get_user_name() {
-
+
$user = new User($this->user);
- return $user->name;
+ if ($user->username) {
+ return $user->fullname . " (" . $user->username . ")";
+ }
+
+ return false;
} // get_user_name