update 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'] = ''; // use ldap hash class to generate a password
75 or see here: http://techiesf1.blogspot.de/2012/03/add-ldap-user-from-php.html
76 */
77 if (is_array($user) && !empty($user)) {
78 if (ldap_add($this->ldap, "uid=".$user['uid'].",".$this->dn, $user) {
79 return true;
80 }
81 }
82
83 return false;
84 }
85
86 /**
87 * delete ldap user
88 *
89 * @param string $user
90 * @return boolean
91 */
92 public function delUser ($user) {
93 if (ldap_delete ($this->ldap, $user.",".$this->dn)) {
94 return true;
95 }
96
97 return false;
98 }
99
100 /**
101 * returns ldap user array
102 *
103 * @param string $user
104 * @param string $password
105 * @return array
106 */
107 public function bind ($user, $password) {
108 return ldap_bind($this->ldap, $user.",".$this->dn, $password);
109 }
110
111 /**
112 * search user on ldap server
113 *
114 * @param string $search
115 * @return resource
116 */
117 public function search ($search) {
118 return ldap_search($this->ldap, $this->dn, $search);
119 }
120
121 /**
122 * get entries from search resource
123 *
124 * @param resource $resource
125 * @return array
126 */
127 public function get_entries ($resource) {
128 return ldap_get_entries($this->ldap, $resource);
129 }
130
131 /**
132 * close ldap connection
133 */
134 public function close () {
135 ldap_close($this->ldap);
136 }
137 }
138 ?>