summaryrefslogtreecommitdiff
path: root/src/lib/Auth.class.php
blob: e49ebf7031369916492ba568c7624c0ab9b5fc18 (plain)
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
require_once('MessageManager.class.php');

class Auth {
	protected $mm = null;
	protected $uid = false;
	public function __construct($uid) {
		global $mm;
		$this->mm = $mm;
		$this->uid = $uid;
	}
	public function getUID() {
		return $this->uid;
	}
	
	/**********************************************************************\
	 * The 'auth' table.                                                  *
	\**********************************************************************/
	
	// Row Type ////////////////////////////////////////////////////////////
	/**
	 * @return 0=unverified 1=user 2=admin 3=group
	 */
	protected function getType() {
		$type = $this->mm->getStatus($this->uid);
		return $type;
	}
	protected function setType($type) {
		$logged_in_uid = $this->mm->isLoggedIn();
		$logged_in_obj = $this->mm->getAuthObj($logged_in_uid);
		$is_admin = $logged_in_obj->isAdmin();		
		if (!$is_admin) return false;
		
		return $this->mm->setStatus($this->uid, $type);
	}
	public function isUser() {
		$type = $this->getType();
		return ($type===1) || ($type===2);
	}
	public function isAdmin() {
		$type = $this->getType();
		return ($type===2);
	}
	public function isGroup() {
		$type = $this->getType();
		return ($type===3);
	}
	public function setUser($is_user) {
		$is_user = ($is_user?true:false);
		if ($this->isUser() != $is_user) {
			$this->setType($is_user?1:0);
		}
	}
	public function setAdmin($is_admin) {
		$is_admin = ($is_admin?true:false);
		$is_user = $this->isUser();
		$this->setType($is_admin?2:($is_user?1:0));
	}
	
	// Permissions /////////////////////////////////////////////////////////
	public function canRead() {
		$logged_in_uid = $this->mm->isLoggedIn();
		$is_me = ($logged_in_uid === $this->uid);
		
		$logged_in_obj = $this->mm->getAuthObj($logged_in_uid);
		$is_user = $logged_in_obj->isUser();
		
		return ($is_me || $is_user);
	}
	public function canEdit() {
		$logged_in_uid = $this->mm->isLoggedIn();
		$is_me = ($logged_in_uid === $this->uid);
		
		$logged_in_obj = $this->mm->getAuthObj($logged_in_uid);
		$is_admin = $logged_in_obj->isAdmin();
		
		return ($is_me || $is_admin);
	}

	// [user|group]name ////////////////////////////////////////////////////
	public function getName() {
		if (!$this->canRead()) return false;
		return $this->mm->getUsername($this->uid);
	}
	public function setName($new_name) {
		if (!$this->canEdit()) return false;
		return $this->mm->setUsername($this->uid, $new_name);
	}
	
	/**********************************************************************\
	 * The 'users' table.                                                 *
	\**********************************************************************/
	
	public function getConf($setting) {
		if (!$this->canRead()) return false;
		return $this->mm->getUserConf($this->uid, $setting);
	}
	public function setConf($setting, $value) {
		if (!$this->canEdit()) return false;
		return $this->mm->setUserConf($this->uid, $setting, $value);
	}
	public function getConfArray($setting) {
		$string = $this->getConf($setting);
		return $this->mm->valueToArray($string);
	}
	public function setConfArray($setting, $list) {
		$string = $this->mm->arrayToValue($list);
		return $this->setConf($setting, $string);
	}
}