Projet

Général

Profil

Paste
Télécharger (16,8 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / ldap / ldap_servers / ldap_servers.test_form.inc @ 91af538d

1 85ad3d82 Assos Assos
<?php
2
3 bc175c27 Assos Assos
/**
4
 * @file
5
 */
6
7 85ad3d82 Assos Assos
module_load_include('inc', 'ldap_servers', 'ldap_servers.functions');
8
9
/**
10
 * @file
11
 */
12
13
/**
14
 * Implements the LDAP server test page.
15
 *
16
 * @param $form_state
17
 *   A form state array.
18
 * @param $op
19
 *   An operatin - add or edit.
20
 * @param $sid
21
 *   A LDAP server ID.
22
 *
23
 * @return
24
 *   The form structure.
25
 */
26
function ldap_servers_test_form($form, &$form_state, $op = NULL, $sid = NULL) {
27
28
  $ldap_server = ldap_servers_get_servers($sid, 'all', TRUE);
29
30 32700c57 Assos Assos
  drupal_set_title(t('Test LDAP Server Configuration: !server', ['!server' => $ldap_server->name]));
31 85ad3d82 Assos Assos
32
  $form['#prefix'] = t('This form tests an LDAP configuration to see if
33
    it can bind and basic user and group functions.  It also shows token examples
34
    and a sample user.  The only data this function will modify is the test LDAP group, which will be deleted and added');
35
36 32700c57 Assos Assos
  $variables = [
37
    'ldap_server' => $ldap_server,
38
    'actions' => FALSE,
39
    'type' => 'detail',
40
  ];
41 85ad3d82 Assos Assos
42 32700c57 Assos Assos
  $form['server_variables'] = [
43 85ad3d82 Assos Assos
    '#markup' => theme('ldap_servers_server', $variables),
44 32700c57 Assos Assos
  ];
45 85ad3d82 Assos Assos
46 32700c57 Assos Assos
  $form['sid'] = [
47 85ad3d82 Assos Assos
    '#type' => 'hidden',
48
    '#default_value' => $sid,
49 32700c57 Assos Assos
  ];
50 85ad3d82 Assos Assos
51 32700c57 Assos Assos
  $form['binding']['bindpw'] = [
52 85ad3d82 Assos Assos
    '#type' => 'password',
53
    '#title' => t('Password for non-anonymous search'),
54
    '#size' => 20,
55
    '#maxlength' => 255,
56
    '#description' => t('Leave empty to test with currently stored password.'),
57 32700c57 Assos Assos
  ];
58 85ad3d82 Assos Assos
59 32700c57 Assos Assos
  $form['testing_drupal_username'] = [
60 85ad3d82 Assos Assos
    '#type' => 'textfield',
61
    '#title' => t('Testing Drupal Username'),
62
    '#default_value' => $ldap_server->testingDrupalUsername,
63
    '#size' => 30,
64
    '#maxlength' => 255,
65
    '#description' => t('This is optional and used for testing this server\'s configuration against an actual username.  The user need not exist in Drupal and testing will not affect the user\'s LDAP or Drupal Account.'),
66 32700c57 Assos Assos
  ];
67 85ad3d82 Assos Assos
68 32700c57 Assos Assos
  $form['testingDrupalUserDn'] = [
69 85ad3d82 Assos Assos
    '#type' => 'textfield',
70
    '#title' => t('Testing Drupal DN'),
71
    '#default_value' => $ldap_server->testingDrupalUserDn,
72
    '#size' => 120,
73
    '#maxlength' => 255,
74
    '#description' => t('This is optional and used for testing this server\'s configuration against an actual username.  The user need not exist in Drupal and testing will not affect the user\'s LDAP or Drupal Account.'),
75 32700c57 Assos Assos
  ];
76 85ad3d82 Assos Assos
77 32700c57 Assos Assos
  $form['grp_test_grp_dn'] = [
78 85ad3d82 Assos Assos
    '#type' => 'textfield',
79
    '#title' => t('Testing Group DN'),
80
    '#default_value' => $ldap_server->groupTestGroupDn,
81
    '#size' => 120,
82
    '#maxlength' => 255,
83
    '#description' => t('This is optional and used for testing this server\'s group configuration.'),
84 32700c57 Assos Assos
  ];
85 85ad3d82 Assos Assos
86 32700c57 Assos Assos
  $form['grp_test_grp_dn_writeable'] = [
87 85ad3d82 Assos Assos
    '#type' => 'textfield',
88
    '#title' => t('Testing Group DN that is writeable. Warning!  In test, this group will be deleted, created, have members added to it!'),
89
    '#default_value' => $ldap_server->groupTestGroupDnWriteable,
90
    '#size' => 120,
91
    '#maxlength' => 255,
92
    '#description' => t('This is optional and used for testing this server\'s group configuration.'),
93 32700c57 Assos Assos
  ];
94 85ad3d82 Assos Assos
95 bc175c27 Assos Assos
  if ($ldap_server->bind_method == LDAP_SERVERS_BIND_METHOD_ANON_USER) {
96 32700c57 Assos Assos
    $form['testing_drupal_userpw'] = [
97 85ad3d82 Assos Assos
      '#type' => 'password',
98
      '#title' => t('Testing Drupal User Password'),
99
      '#size' => 30,
100
      '#maxlength' => 255,
101
      '#description' => t('This is optional and used for testing this server\'s configuration against the username above.'),
102 32700c57 Assos Assos
    ];
103 85ad3d82 Assos Assos
  }
104
105 32700c57 Assos Assos
  $form['submit'] = [
106 85ad3d82 Assos Assos
    '#type' => 'submit',
107
    '#value' => 'Test',
108
    '#weight' => 100,
109 32700c57 Assos Assos
  ];
110 85ad3d82 Assos Assos
111
  if (!empty($form_state['ldap_server_test_data'])) {
112
    $test_data = $form_state['ldap_server_test_data'];
113
114
    if (isset($test_data['username']) && isset($test_data['ldap_user'])) {
115
      $form['#prefix'] = theme('ldap_server_ldap_entry_table',
116 32700c57 Assos Assos
        [
117 85ad3d82 Assos Assos
          'entry' => $test_data['ldap_user']['attr'],
118
          'username' => $test_data['username'],
119
          'dn' => $test_data['ldap_user']['dn'],
120 32700c57 Assos Assos
        ]);
121 85ad3d82 Assos Assos
    }
122
123 32700c57 Assos Assos
    $titles = [
124 85ad3d82 Assos Assos
      'basic' => 'Test Results',
125
      'group1' => 'Group Create, Delete, Add Member, Remove Member Tests',
126
      'group2' => 'User Group Membership Functions Test',
127
      'tokens' => 'User Token Samples',
128
      'groupfromDN' => 'Groups Derived From User DN',
129 32700c57 Assos Assos
    ];
130 85ad3d82 Assos Assos
    foreach ($test_data['results_tables'] as $table_name => $table_data) {
131 32700c57 Assos Assos
      $form['#prefix'] .= '<h2>' . $titles[$table_name] . '</h2>' . theme('table', ['header' => ['Test', 'Result'], 'rows' => $table_data]);
132 85ad3d82 Assos Assos
    }
133
134
    if (function_exists('dpm') && !empty($test_data['username'])) {
135
      $user_name = $test_data['username'];
136
      if ($user = user_load_by_name($user_name)) {
137
        dpm("Corresponding Drupal user object for: $user_name");
138
        dpm($user);
139
        if (function_exists('entity_load_single')) {
140
          $user_entity = entity_load_single('user', $user->uid);
141
          dpm("Drupal user entity for: $user_name");
142
          dpm($user_entity);
143
        }
144 bc175c27 Assos Assos
        if (isset($test_data['group_entry'][0])) {
145
          dpm("Test Group LDAP Entry");
146
          dpm($test_data['group_entry'][0]);
147
        }
148 85ad3d82 Assos Assos
      }
149
    }
150
  }
151
  return $form;
152
}
153
154 32700c57 Assos Assos
/**
155
 *
156
 */
157 bc175c27 Assos Assos
function ldap_servers_string_binary_check($input) {
158
  if (preg_match('~[^\x20-\x7E\t\r\n]~', $input) > 0) {
159
    $truncatedString = truncate_utf8($input, 200);
160
    return t('Binary (excerpt): @excerpt', ['@excerpt' => $truncatedString]);
161
  }
162
  else {
163
    return $input;
164
  }
165
}
166
167 85ad3d82 Assos Assos
/**
168
 * Validate hook for the LDAP server form.
169
 */
170
function ldap_servers_test_form_validate($form, &$form_state) {
171
  $values = $form_state['values'];
172
  if (!$values['sid']) {
173
    form_set_error(NULL, t('No server id found in form'));
174
  }
175
  elseif (!$ldap_server = ldap_servers_get_servers($values['sid'], 'all', TRUE)) {
176 32700c57 Assos Assos
    form_set_error(NULL, t('Failed to create server object for server with server id=%sid', ['%sid' => $values['sid']]));
177 85ad3d82 Assos Assos
  }
178
}
179
180
/**
181
 * Submit hook for the LDAP server form.
182
 */
183
function ldap_servers_test_form_submit($form, &$form_state) {
184
185 32700c57 Assos Assos
  // Pass data back to form builder.
186 85ad3d82 Assos Assos
  $form_state['rebuild'] = TRUE;
187
188
  ldap_servers_module_load_include('inc', 'ldap_servers', 'ldap_servers.functions');
189
  $errors = FALSE;
190
  $has_errors = FALSE;
191
  $values = $form_state['values'];
192
  $sid = $values['sid'];
193
  $ldap_server = ldap_servers_get_servers($sid, 'all', TRUE);
194
195 32700c57 Assos Assos
  $results = [];
196
  $results_tables = [];
197 85ad3d82 Assos Assos
  if ($values['bindpw']) {
198
    $bindpw = $values['bindpw'];
199
    $bindpw_type = t('entered in form.');
200
  }
201
  else {
202
    $bindpw = NULL;
203
    $bindpw_type = t('stored in configuration');
204
  }
205
206
  if ($ldap_server->bind_method == LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT) {
207 32700c57 Assos Assos
    $results_tables['basic'][] = [
208
      t('Binding with DN for non-anonymous search (%bind_dn).  Using password ',
209
      ['%bind_dn' => $ldap_server->binddn]) . ' ' . $bindpw_type,
210
    ];
211 85ad3d82 Assos Assos
  }
212
  else {
213 32700c57 Assos Assos
    $results_tables['basic'][] = [t('Binding with null DN for anonymous search.')];
214 85ad3d82 Assos Assos
  }
215
216
  if (@$values['grp_test_grp_dn_writeable'] && @$values['grp_test_grp_dn']) {
217
    $user_test_dn = @$values['grp_test_grp_dn'];
218
    $group_create_test_dn = $values['grp_test_grp_dn_writeable'];
219 32700c57 Assos Assos
    $group_create_test_attr = [
220
      'objectClass' => [$ldap_server->groupObjectClass, 'top'],
221
    ];
222 85ad3d82 Assos Assos
223 32700c57 Assos Assos
    // 1. delete test group if it exists.
224
    if ($ldap_server->dnExists($group_create_test_dn, 'ldap_entry', ['cn', 'member'])) {
225 85ad3d82 Assos Assos
      $result = $ldap_server->groupRemoveGroup($group_create_test_dn, FALSE);
226
    }
227
228 32700c57 Assos Assos
    $group_exists = $ldap_server->dnExists($group_create_test_dn, 'ldap_entry', ['cn', 'member']);
229 85ad3d82 Assos Assos
    $result = ($group_exists === FALSE) ? "PASS" : "FAIL";
230 32700c57 Assos Assos
    $results_tables['group1'][] = ["Starting test without group: $group_create_test_dn ", $result];
231 85ad3d82 Assos Assos
232 32700c57 Assos Assos
    // 2. make sure call to members in empty group returns false.
233 85ad3d82 Assos Assos
    $result = $ldap_server->groupAllMembers($group_create_test_dn);
234
    $result = ($result === FALSE) ? "PASS" : 'FAIL';
235 32700c57 Assos Assos
    $results_tables['group1'][] = ["LdapServer::groupAllMembers($group_create_test_dn) call on nonexistent group returns FALSE", $result];
236 85ad3d82 Assos Assos
237 32700c57 Assos Assos
    // 3. add group.
238 85ad3d82 Assos Assos
    $result = $ldap_server->groupAddGroup($group_create_test_dn, $group_create_test_attr);
239 bc175c27 Assos Assos
    $result = ($result) ? "PASS" : 'FAIL';
240 85ad3d82 Assos Assos
    $attr = serialize($group_create_test_attr);
241 32700c57 Assos Assos
    $results_tables['group1'][] = ["LdapServer::groupAddGroup($group_create_test_dn, $attr)", $result];
242 85ad3d82 Assos Assos
243 32700c57 Assos Assos
    // 4. call to all members in an empty group returns emtpy array, not FALSE.
244 85ad3d82 Assos Assos
    $result = $ldap_server->groupAllMembers($group_create_test_dn);
245 bc175c27 Assos Assos
    $result = (is_array($result) && count($result) == 0) ? 'PASS' : 'FAIL';
246 32700c57 Assos Assos
    $results_tables['group1'][] = ["LdapServer::groupAllMembers($group_create_test_dn) returns empty array for empty group ", $result];
247 85ad3d82 Assos Assos
248 32700c57 Assos Assos
    // 5. add member to group.
249 85ad3d82 Assos Assos
    $result = $ldap_server->groupAddMember($group_create_test_dn, $user_test_dn);
250
    $result = is_array($ldap_server->groupAllMembers($group_create_test_dn)) ? 'PASS' : 'FAIL';
251 32700c57 Assos Assos
    $results_tables['group1'][] = ["LdapServer::groupAddMember($group_create_test_dn, $user_test_dn)", $result];
252 85ad3d82 Assos Assos
253 32700c57 Assos Assos
    // 6. try to remove group with member in it.
254 85ad3d82 Assos Assos
    $only_if_group_empty = TRUE;
255
    $result = $ldap_server->groupRemoveGroup($group_create_test_dn, $only_if_group_empty);
256
    $result = ($result) ? 'FAIL' : 'PASS';
257 32700c57 Assos Assos
    $results_tables['group1'][] = ["LdapServer::groupRemoveGroup($group_create_test_dn, $only_if_group_empty)", $result];
258 85ad3d82 Assos Assos
259 32700c57 Assos Assos
    // 7. remove group member.
260 85ad3d82 Assos Assos
    $result = $ldap_server->groupRemoveMember($group_create_test_dn, $user_test_dn);
261
    $result = $ldap_server->groupAllMembers($group_create_test_dn);
262
    $result = (is_array($result) && count($result) == 0) ? 'PASS' : 'FAIL';
263 32700c57 Assos Assos
    $results_tables['group1'][] = ["LdapServer::groupRemoveMember($group_create_test_dn, $user_test_dn)", $result];
264 85ad3d82 Assos Assos
265
    $only_if_group_empty = TRUE;
266
    $result = $ldap_server->groupRemoveGroup($group_create_test_dn, $only_if_group_empty);
267 32700c57 Assos Assos
    $result = ($ldap_server->dnExists($group_create_test_dn, 'ldap_entry', ['cn', 'member'])) ? "FAIL" : 'PASS';
268
    $results_tables['group1'][] = ["LdapServer::groupRemoveGroup($group_create_test_dn, $only_if_group_empty)", $result];
269 85ad3d82 Assos Assos
  }
270
271 32700c57 Assos Assos
  // Connect to ldap.
272 85ad3d82 Assos Assos
  list($has_errors, $more_results) = ldap_servers_test_binding_credentials($ldap_server, $bindpw, $results_tables);
273
  $results = array_merge($results, $more_results);
274
  if ($ldap_server->bind_method == LDAP_SERVERS_BIND_METHOD_ANON_USER) {
275
    list($has_errors, $more_results, $ldap_user) = ldap_servers_test_user_mapping($values['testing_drupal_username'], $ldap_server);
276
    $results = array_merge($results, $more_results);
277
    if (!$has_errors) {
278
      $mapping[] = "dn = " . $ldap_user['dn'];
279
      foreach ($ldap_user['attr'] as $key => $value) {
280
        if (is_array($value)) {
281
          $mapping[] = "$key = " . $value[0];
282
        }
283
      }
284 32700c57 Assos Assos
      $results_tables['basic'][] = [theme_item_list(['items' => $mapping, 'title' => t('Attributes available to anonymous search', ['%bind_dn' => $ldap_server->binddn]), 'type' => 'ul', 'attributes' => []])];
285 85ad3d82 Assos Assos
    }
286 32700c57 Assos Assos
    $results_tables['basic'][] = [
287
      t('Binding with DN (%bind_dn).  Using supplied password ',
288
      ['%bind_dn' => $ldap_user['dn']]),
289
    ];
290 85ad3d82 Assos Assos
    $result = $ldap_server->bind($ldap_user['dn'], $values['testing_drupal_userpw'], FALSE);
291
    if ($result == LDAP_SUCCESS) {
292 32700c57 Assos Assos
      $results_tables['basic'][] = [t('Successfully bound to server'), 'PASS'];
293 85ad3d82 Assos Assos
    }
294
    else {
295 32700c57 Assos Assos
      $results_tables['basic'][] = [t('Failed to bind to server. ldap error #') . $result . ' ' . $ldap_server->errorMsg('ldap'), 'FAIL'];
296 85ad3d82 Assos Assos
    }
297
  }
298
299
  if (!$has_errors && isset($values['grp_test_grp_dn'])) {
300
    $group_dn = $values['grp_test_grp_dn'];
301
302
    $result = @ldap_read($ldap_server->connection, $group_dn, 'objectClass=*');
303 be58a50c Assos Assos
    if (is_array($result)) {
304
      $group_entry = ldap_get_entries($ldap_server->connection, $result);
305
    }
306 85ad3d82 Assos Assos
    $user = isset($values['testing_drupal_username']) ? $values['testing_drupal_username'] : NULL;
307
308 32700c57 Assos Assos
    // FALSE.
309
    foreach ([FALSE, TRUE] as $nested) {
310 85ad3d82 Assos Assos
      $nested_display = ($nested) ? 'Yes' : 'No';
311
      if ($user) {
312 32700c57 Assos Assos
        // This is the parent function that will call FromUserAttr or FromEntry.
313 85ad3d82 Assos Assos
        $memberships = $ldap_server->groupMembershipsFromUser($user, 'group_dns', $nested);
314 32700c57 Assos Assos
        $result = theme('item_list', ['items' => $memberships, 'type' => 'ul']);
315
        $results_tables['group2'][] = ["ldap_server->groupMembershipsFromUser($user, 'group_dns', nested=$nested_display)<br/>count=" . count($memberships), $result];
316 85ad3d82 Assos Assos
317
        $result = ($ldap_server->groupIsMember($group_dn, $user, $nested)) ? 'Yes' : 'No';
318 32700c57 Assos Assos
        $group_results[] = ["ldap_server->groupIsMember($group_dn, $user, nested=$nested_display)", $result];
319 85ad3d82 Assos Assos
320
        if ($ldap_server->groupUserMembershipsConfigured) {
321
          $groupusermembershipsfromuserattr = $ldap_server->groupUserMembershipsFromUserAttr($user, $nested);
322 bc175c27 Assos Assos
          $count = count($groupusermembershipsfromuserattr);
323 32700c57 Assos Assos
          $result = theme('item_list', ['items' => $groupusermembershipsfromuserattr, 'type' => 'ul']);
324 85ad3d82 Assos Assos
        }
325
        else {
326 32700c57 Assos Assos
          $groupusermembershipsfromuserattr = [];
327 85ad3d82 Assos Assos
          $result = "'A user LDAP attribute such as memberOf exists that contains a list of their group' is not configured.";
328
        }
329 32700c57 Assos Assos
        $results_tables['group2'][] = [
330
          "ldap_server->groupUserMembershipsFromUserAttr($user, nested=$nested_display)<br/> count=" .
331
          count($groupusermembershipsfromuserattr), $result,
332
        ];
333 85ad3d82 Assos Assos
334
        if ($ldap_server->groupGroupEntryMembershipsConfigured) {
335
          $groupusermembershipsfromentry = $ldap_server->groupUserMembershipsFromEntry($user, $nested);
336 32700c57 Assos Assos
          $result = theme('item_list', ['items' => $groupusermembershipsfromentry, 'type' => 'ul']);
337 85ad3d82 Assos Assos
        }
338
        else {
339 32700c57 Assos Assos
          $groupusermembershipsfromentry = [];
340 85ad3d82 Assos Assos
          $result = "Groups by entry not configured.";
341
        }
342 32700c57 Assos Assos
        $results_tables['group2'][] = [
343
          "ldap_server->groupUserMembershipsFromEntry($user, nested=$nested_display)<br/>count=" .
344
          count($groupusermembershipsfromentry), $result,
345
        ];
346 85ad3d82 Assos Assos
347
        if (count($groupusermembershipsfromentry) && count($groupusermembershipsfromuserattr)) {
348
          $diff1 = array_diff($groupusermembershipsfromuserattr, $groupusermembershipsfromentry);
349
          $diff2 = array_diff($groupusermembershipsfromentry, $groupusermembershipsfromuserattr);
350 32700c57 Assos Assos
          $result1 = theme('item_list', ['items' => $diff1, 'type' => 'ul']);
351
          $result2 = theme('item_list', ['items' => $diff2, 'type' => 'ul']);
352
          $results_tables['group2'][] = ["groupUserMembershipsFromEntry and FromUserAttr Diff)", $result1];
353
          $results_tables['group2'][] = ["FromUserAttr and groupUserMembershipsFromEntry Diff)", $result2];
354 85ad3d82 Assos Assos
        }
355
      }
356
    }
357
358
    if ($groups_from_dn = $ldap_server->groupUserMembershipsFromDn($user)) {
359 32700c57 Assos Assos
      $results_tables['groupfromDN'][] = ["Groups from DN", theme('item_list', ['items' => $groups_from_dn, 'type' => 'ul'])];
360 85ad3d82 Assos Assos
    }
361
362 5136ce55 Assos Assos
  }
363 85ad3d82 Assos Assos
364 5136ce55 Assos Assos
  list($has_errors, $more_results, $ldap_user) = ldap_servers_test_user_mapping($values['testing_drupal_username'], $ldap_server);
365
366 32700c57 Assos Assos
  $tokens = ($ldap_user && isset($ldap_user['attr'])) ? ldap_servers_token_tokenize_entry($ldap_user['attr'], 'all') : [];
367 5136ce55 Assos Assos
  foreach ($tokens as $key => $value) {
368 32700c57 Assos Assos
    $results_tables['tokens'][] = [$key, ldap_servers_string_binary_check($value)];
369 5136ce55 Assos Assos
  }
370 32700c57 Assos Assos
  $form_state['ldap_server_test_data'] = [
371 5136ce55 Assos Assos
    'username' => $values['testing_drupal_username'],
372
    'results_tables' => $results_tables,
373 32700c57 Assos Assos
  ];
374 5136ce55 Assos Assos
375
  if (isset($ldap_user)) {
376
    $form_state['ldap_server_test_data']['ldap_user'] = $ldap_user;
377
  }
378
379 32700c57 Assos Assos
  if (isset($group_entry)) {
380 5136ce55 Assos Assos
    $form_state['ldap_server_test_data']['group_entry'] = $group_entry;
381 85ad3d82 Assos Assos
  }
382 bc175c27 Assos Assos
383 85ad3d82 Assos Assos
}
384
385
/**
386
 * Submit hook for the LDAP server form.
387
 */
388
function ldap_servers_test_binding_credentials(&$ldap_server, $bindpw, &$results_tables) {
389
390
  $errors = FALSE;
391 32700c57 Assos Assos
  $results = [];
392 85ad3d82 Assos Assos
393
  $ldap_result = $ldap_server->connect();
394
  if ($ldap_result != LDAP_SUCCESS) {
395 32700c57 Assos Assos
    $results_tables['basic'][] = [
396
      t('Failed to connect to LDAP server.  See watchdog error logs for details.') .
397
      $ldap_server->errorMsg('ldap'),
398
    ];
399 85ad3d82 Assos Assos
    $errors = TRUE;
400
  }
401
402
  if (!$errors) {
403
    $bind_result = $ldap_server->bind($ldap_server->binddn, $bindpw, FALSE);
404
    if ($bind_result == LDAP_SUCCESS) {
405 32700c57 Assos Assos
      $results_tables['basic'][] = [t('Successfully bound to server')];
406 85ad3d82 Assos Assos
    }
407
    else {
408 32700c57 Assos Assos
      $results_tables['basic'][] = [t('Failed to bind to server. ldap error #') . $bind_result . ' ' . $ldap_server->errorMsg('ldap')];
409 85ad3d82 Assos Assos
      $errors = TRUE;
410
    }
411
  }
412 32700c57 Assos Assos
  return [$errors, $results];
413 85ad3d82 Assos Assos
}
414
415 32700c57 Assos Assos
/**
416
 *
417
 */
418 85ad3d82 Assos Assos
function ldap_servers_test_user_mapping($drupal_username, &$ldap_server, $ldap_context = NULL) {
419
420
  $ldap_user = $ldap_server->userUserNameToExistingLdapEntry($drupal_username, $ldap_context);
421
  $errors = FALSE;
422 32700c57 Assos Assos
  if (!$ldap_user) {
423 85ad3d82 Assos Assos
    $results[] = t('Failed to find test user %username by searching on  %user_attr = %username.',
424 32700c57 Assos Assos
      [
425 85ad3d82 Assos Assos
        '%username' => $drupal_username,
426 32700c57 Assos Assos
        '%user_attr' => $ldap_server->user_attr,
427
      ]
428 85ad3d82 Assos Assos
      )
429
      . ' ' . t('Error Message:') . ' ' . $ldap_server->errorMsg('ldap');
430
    $errors = TRUE;
431
  }
432
  else {
433
    $results[] = t('Found test user %username by searching on  %user_attr = %username.',
434 32700c57 Assos Assos
      ['%username' => $drupal_username, '%user_attr' => $ldap_server->user_attr]);
435 85ad3d82 Assos Assos
  }
436 32700c57 Assos Assos
  return [$errors, $results, $ldap_user];
437 85ad3d82 Assos Assos
}