add new methods to ldap class
[Snippets.git] / LDAP.class.php
1 <?php
2 /**
3 * @author Jan Altensen (Stricted)
4 * @copyright 2013-2014 Jan Altensen (Stricted)
5 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
6 */
7
8 class LDAP {
9 /**
10 * LDAP resource id
11 * @var object
12 */
13 protected $ldap = Null;
14
15 /**
16 * LDAP DN
17 * @var string
18 */
19 protected $dn = '';
20
21 /**
22 * Constructs a new instance of LDAP class.
23 */
24 public function __construct () {
25 if (!extension_loaded("ldap")) {
26 throw new Exception("Can not find LDAP extension.");
27 }
28 }
29
30 /**
31 * connect to a ldap server
32 *
33 * @param string $server
34 * @param integer $port
35 * @param string $dn
36 * @return bool true/false
37 */
38 public function connect ($server, $port, $dn) {
39 $this->ldap = ldap_connect($server, $port);
40 $this->dn = $dn;
41
42 if ($this->ldap) {
43 ldap_set_option($this->ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
44 ldap_set_option($this->ldap, LDAP_OPT_REFERRALS, 0);
45 return true;
46 }
47 else {
48 throw new Exception("Cant connect to ldap server.");
49 }
50
51 return false;
52 }
53
54 /**
55 * add a user to ldap server
56 *
57 * @param array $user
58 * @return boolean
59 */
60 public function addUser (Array $user) {
61 /*
62 Eampel:
63 $user = array();
64 $user['dn'] = 'uid=testuser,ou=Users,dc=ldap,dc=test,dc=server,dc=com';
65 $user['objectClass'] = array('inetOrgPerson', 'organizationalPerson', 'posixAccount');
66 $user['cn'] = 'Test User';
67 $user['gidNumber'] = '5001';
68 $user['homeDirectory'] = '/home/testuser';
69 $user['sn'] = 'User';
70 $user['uid'] = 'testuser';
71 $user['uidNumber'] = '5001';
72 $user['loginShell'] = '/bin/bash';
73 $user['mail'] = 'test@user.com';
74 $user['userPassword'] = '';
75 */
76 if (is_array($user) && !empty($user)) {
77 if (ldap_add($this->ldap, $this->dn, $user) {
78 return true;
79 }
80 }
81
82 return false;
83 }
84
85 /**
86 * delete ldap user
87 *
88 * @param string $user
89 * @return boolean
90 */
91 public function delUser ($user) {
92 if (ldap_delete ($this->ldap, $user.",".$this->dn)) {
93 return true;
94 }
95
96 return false;
97 }
98
99 /**
100 * returns ldap user array
101 *
102 * @param string $user
103 * @param string $password
104 * @return array
105 */
106 public function bind ($user, $password) {
107 return ldap_bind($this->ldap, $user.",".$this->dn, $password);
108 }
109
110 /**
111 * search user on ldap server
112 *
113 * @param string $search
114 * @return resource
115 */
116 public function search ($search) {
117 return ldap_search($this->ldap, $this->dn, $search);
118 }
119
120 /**
121 * get entries from search resource
122 *
123 * @param resource $resource
124 * @return array
125 */
126 public function get_entries ($resource) {
127 return ldap_get_entries($this->ldap, $resource);
128 }
129
130 /**
131 * close ldap connection
132 */
133 public function close () {
134 ldap_close($this->ldap);
135 }
136 }
137 ?>