File: FileUserStore.php

package info (click to toggle)
bamboo 1.2-2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 580 kB
  • ctags: 1,338
  • sloc: php: 4,061; makefile: 44; sh: 36
file content (68 lines) | stat: -rw-r--r-- 1,413 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php

/************

FileUserStore
A very simple user storage backend which stores users in a flat file.
Example entry in b.site:
   userbackend = file, /path/to/b.users

*************/

$base = dirname(dirname(__FILE__));
require_once("$base/UserStore.php");

class FileUserStore extends UserStore {

var $file;

function FileUserStore($args) {
	if (is_file($args)) {
		$this->file = $args;	
	}
	elseif (is_file($GLOBALS['docroot'] . "/" . $args)) {
		$this->file = $GLOBALS['docroot'] . "/" . $args;
	}
	else {
		$this->file = '';
	}
}

function authenticate($user,$pass,&$error) {
	if (!$this->file) {
		$error = "The user storage file is missing.";
		return;
	}
	elseif (!is_readable($this->file)) {
		$error = "The user storage file is unreadable";
		return;
	} 
	
	$data = file($this->file);
	$userlines = preg_grep("/$user:/",$data);
	if (count($userlines)) {
		$userline = current($userlines);
		list($storeduser,$storedpass) = explode(":",rtrim($userline));
		$seed = preg_replace('/^\$.\$(.*)\$.*$/','$1',$storedpass);
		$hash_pass = crypt($pass,'$1$'.$seed);
		if ($user == $storeduser && $pass == $storedpass) {
			return true;
		}
		elseif ($user == $storeduser && $hash_pass == $storedpass) {
			return true;
		}
		else {
			$error = _("User or password is incorrect");
			return false;
		}
	}
	else {
		$error = _("User or password is incorrect");
		return false;
	}
}

} // end class

return;
?>