001/* 002 * (C) Copyright 2006-2007 Nuxeo SAS (http://nuxeo.com/) and contributors. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser General Public License 006 * (LGPL) version 2.1 which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/lgpl.html 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * Contributors: 015 * Florent Guillaume 016 * 017 * $Id: FakeUserManagerImpl.java 28010 2007-12-07 19:23:44Z fguillaume $ 018 */ 019 020package org.nuxeo.ecm.platform.usermanager; 021 022import java.io.Serializable; 023import java.security.Principal; 024import java.util.Arrays; 025import java.util.HashMap; 026import java.util.LinkedHashMap; 027import java.util.List; 028import java.util.Map; 029import java.util.Set; 030import java.util.regex.Matcher; 031import java.util.regex.Pattern; 032 033import org.nuxeo.ecm.core.api.DocumentModel; 034import org.nuxeo.ecm.core.api.DocumentModelList; 035import org.nuxeo.ecm.core.api.NuxeoGroup; 036import org.nuxeo.ecm.core.api.NuxeoPrincipal; 037import org.nuxeo.ecm.core.api.security.ACP; 038import org.nuxeo.ecm.core.api.security.SecurityConstants; 039import org.nuxeo.runtime.services.event.Event; 040 041/** 042 * @author Florent Guillaume 043 */ 044public class FakeUserManagerImpl implements UserManager { 045 046 private static final long serialVersionUID = 1L; 047 048 String userListingMode; 049 050 String groupListingMode; 051 052 List<String> defaultAdministratorIds; 053 054 List<String> administratorsGroups; 055 056 String defaultGroup; 057 058 String userSortField; 059 060 String groupSortField; 061 062 String userDirectoryName; 063 064 String userEmailField; 065 066 Map<String, MatchType> userSearchFields; 067 068 Pattern userPasswordPattern; 069 070 String groupDirectoryName; 071 072 String groupMembersField; 073 074 Map<String, MatchType> groupSearchFields; 075 076 String groupSubGroupsField; 077 078 String groupParentGroupsField; 079 080 VirtualUser anonymousUser; 081 082 final Map<String, VirtualUserDescriptor> virtualUsers; 083 084 public FakeUserManagerImpl() { 085 virtualUsers = new HashMap<String, VirtualUserDescriptor>(); 086 } 087 088 public String getUserListingMode() { 089 return userListingMode; 090 } 091 092 public void setUserListingMode(String userListingMode) { 093 this.userListingMode = userListingMode; 094 } 095 096 public String getGroupListingMode() { 097 return groupListingMode; 098 } 099 100 public void setGroupListingMode(String groupListingMode) { 101 this.groupListingMode = groupListingMode; 102 } 103 104 public String getDefaultGroup() { 105 return defaultGroup; 106 } 107 108 public void setDefaultGroup(String defaultGroup) { 109 this.defaultGroup = defaultGroup; 110 } 111 112 public String getUserSortField() { 113 return userSortField; 114 } 115 116 public void setUserSortField(String sortField) { 117 userSortField = sortField; 118 } 119 120 public void setGroupSortField(String sortField) { 121 groupSortField = sortField; 122 } 123 124 public void setUserDirectoryName(String userDirectoryName) { 125 this.userDirectoryName = userDirectoryName; 126 } 127 128 public String getUserDirectoryName() { 129 return userDirectoryName; 130 } 131 132 public void setUserEmailField(String userEmailField) { 133 this.userEmailField = userEmailField; 134 } 135 136 public String getUserEmailField() { 137 return userEmailField; 138 } 139 140 public void setUserSearchFields(Set<String> userSearchFields) { 141 this.userSearchFields = new LinkedHashMap<String, MatchType>(); 142 for (String searchField : userSearchFields) { 143 this.userSearchFields.put(searchField, MatchType.SUBSTRING); 144 } 145 } 146 147 public void setUserSearchFields(Map<String, MatchType> userSearchFields) { 148 this.userSearchFields = userSearchFields; 149 } 150 151 public Set<String> getUserSearchFields() { 152 return userSearchFields.keySet(); 153 } 154 155 public Set<String> getGroupSearchFields() { 156 return groupSearchFields.keySet(); 157 } 158 159 public void setGroupDirectoryName(String groupDirectoryName) { 160 this.groupDirectoryName = groupDirectoryName; 161 } 162 163 public String getGroupDirectoryName() { 164 return groupDirectoryName; 165 } 166 167 public void setGroupMembersField(String groupMembersField) { 168 this.groupMembersField = groupMembersField; 169 } 170 171 public String getGroupMembersField() { 172 return groupMembersField; 173 } 174 175 public void setGroupSubGroupsField(String groupSubGroupsField) { 176 this.groupSubGroupsField = groupSubGroupsField; 177 } 178 179 public String getGroupSubGroupsField() { 180 return groupSubGroupsField; 181 } 182 183 public void setGroupParentGroupsField(String groupParentGroupsField) { 184 this.groupParentGroupsField = groupParentGroupsField; 185 } 186 187 public String getGroupParentGroupsField() { 188 return groupParentGroupsField; 189 } 190 191 public Boolean areGroupsReadOnly() { 192 throw new UnsupportedOperationException(); 193 } 194 195 public Boolean areUsersReadOnly() { 196 throw new UnsupportedOperationException(); 197 } 198 199 public boolean checkUsernamePassword(String username, String password) { 200 throw new UnsupportedOperationException(); 201 } 202 203 public boolean validatePassword(String password) { 204 if (userPasswordPattern == null) { 205 return true; 206 } else { 207 Matcher userPasswordMatcher = userPasswordPattern.matcher(password); 208 return userPasswordMatcher.find(); 209 } 210 } 211 212 public List<String> getGroupsInGroup(String parentId) { 213 throw new UnsupportedOperationException(); 214 } 215 216 public NuxeoPrincipal getPrincipal(String username) { 217 NuxeoPrincipalImpl principal = new NuxeoPrincipalImpl(SecurityConstants.ADMINISTRATOR, false, true); 218 principal.setGroups(Arrays.asList(SecurityConstants.ADMINISTRATORS)); 219 principal.setEmail("admin@example.com"); 220 return principal; 221 } 222 223 public List<String> getTopLevelGroups() { 224 throw new UnsupportedOperationException(); 225 } 226 227 public List<String> getUsersInGroup(String groupId) { 228 throw new UnsupportedOperationException(); 229 } 230 231 public List<String> getUsersInGroupAndSubGroups(String groupId) { 232 throw new UnsupportedOperationException(); 233 } 234 235 public DocumentModelList searchGroups(String pattern) { 236 throw new UnsupportedOperationException(); 237 } 238 239 public List<NuxeoPrincipal> searchPrincipals(String pattern) { 240 throw new UnsupportedOperationException(); 241 } 242 243 public Pattern getUserPasswordPattern() { 244 return userPasswordPattern; 245 } 246 247 public void setUserPasswordPattern(Pattern userPasswordPattern) { 248 this.userPasswordPattern = userPasswordPattern; 249 } 250 251 public void setAnonymousUser(VirtualUser anonymousUser) { 252 this.anonymousUser = anonymousUser; 253 } 254 255 public void setVirtualUsers(Map<String, VirtualUserDescriptor> virtualUsers) { 256 this.virtualUsers.clear(); 257 if (virtualUsers != null) { 258 this.virtualUsers.putAll(virtualUsers); 259 } 260 } 261 262 public String getAnonymousUserId() { 263 if (anonymousUser == null) { 264 return null; 265 } 266 return anonymousUser.getId(); 267 } 268 269 @Override 270 public String getDigestAuthDirectory() { 271 return null; 272 } 273 274 @Override 275 public String getDigestAuthRealm() { 276 return null; 277 } 278 279 public void setConfiguration(UserManagerDescriptor descriptor) { 280 setDefaultGroup(descriptor.defaultGroup); 281 defaultAdministratorIds = descriptor.defaultAdministratorIds; 282 administratorsGroups = descriptor.administratorsGroups; 283 setUserSortField(descriptor.userSortField); 284 setGroupSortField(descriptor.groupSortField); 285 setUserListingMode(descriptor.userListingMode); 286 setGroupListingMode(descriptor.groupListingMode); 287 setUserDirectoryName(descriptor.userDirectoryName); 288 setUserEmailField(descriptor.userEmailField); 289 setUserSearchFields(descriptor.userSearchFields); 290 setUserPasswordPattern(descriptor.userPasswordPattern); 291 setGroupDirectoryName(descriptor.groupDirectoryName); 292 setGroupMembersField(descriptor.groupMembersField); 293 setGroupSubGroupsField(descriptor.groupSubGroupsField); 294 setGroupParentGroupsField(descriptor.groupParentGroupsField); 295 setAnonymousUser(descriptor.anonymousUser); 296 setVirtualUsers(descriptor.virtualUsers); 297 } 298 299 public DocumentModel getBareUserModel() { 300 throw new UnsupportedOperationException(); 301 } 302 303 public DocumentModel createGroup(DocumentModel groupModel) { 304 throw new UnsupportedOperationException(); 305 } 306 307 public DocumentModel createUser(DocumentModel userModel) { 308 throw new UnsupportedOperationException(); 309 } 310 311 public void deleteGroup(DocumentModel groupModel) { 312 throw new UnsupportedOperationException(); 313 } 314 315 public void deleteGroup(String groupId) { 316 throw new UnsupportedOperationException(); 317 } 318 319 public void deleteUser(DocumentModel userModel) { 320 throw new UnsupportedOperationException(); 321 } 322 323 public void deleteUser(String userId) { 324 throw new UnsupportedOperationException(); 325 } 326 327 public DocumentModel getBareGroupModel() { 328 throw new UnsupportedOperationException(); 329 } 330 331 public NuxeoGroup getGroup(String groupName) { 332 throw new UnsupportedOperationException(); 333 } 334 335 public List<String> getGroupIds() { 336 throw new UnsupportedOperationException(); 337 } 338 339 public List<String> getUserIds() { 340 throw new UnsupportedOperationException(); 341 } 342 343 public DocumentModelList searchGroups(Map<String, Serializable> filter, Set<String> fulltext) 344 { 345 throw new UnsupportedOperationException(); 346 } 347 348 public DocumentModelList searchUsers(Map<String, Serializable> filter, Set<String> fulltext) { 349 throw new UnsupportedOperationException(); 350 } 351 352 public DocumentModelList searchUsers(String pattern) { 353 throw new UnsupportedOperationException(); 354 } 355 356 public void updateGroup(DocumentModel groupModel) { 357 throw new UnsupportedOperationException(); 358 } 359 360 public void updateUser(DocumentModel userModel) { 361 throw new UnsupportedOperationException(); 362 } 363 364 public DocumentModel getGroupModel(String groupName) { 365 throw new UnsupportedOperationException(); 366 } 367 368 public DocumentModel getUserModel(String userName) { 369 throw new UnsupportedOperationException(); 370 } 371 372 public String getGroupIdField() { 373 return "groupname"; 374 } 375 376 public String getGroupLabelField() { 377 return "grouplabel"; 378 } 379 380 public String getGroupSchemaName() { 381 return "group"; 382 } 383 384 public String getUserIdField() { 385 return "username"; 386 } 387 388 public String getUserSchemaName() { 389 return "user"; 390 } 391 392 public void createGroup(NuxeoGroup group) { 393 throw new UnsupportedOperationException(); 394 } 395 396 public void createPrincipal(NuxeoPrincipal principal) { 397 throw new UnsupportedOperationException(); 398 } 399 400 public void deleteGroup(NuxeoGroup group) { 401 throw new UnsupportedOperationException(); 402 } 403 404 public void deletePrincipal(NuxeoPrincipal principal) { 405 throw new UnsupportedOperationException(); 406 } 407 408 public List<NuxeoGroup> getAvailableGroups() { 409 throw new UnsupportedOperationException(); 410 } 411 412 public List<NuxeoPrincipal> getAvailablePrincipals() { 413 throw new UnsupportedOperationException(); 414 } 415 416 public DocumentModel getModelForUser(String name) { 417 throw new UnsupportedOperationException(); 418 } 419 420 public List<NuxeoPrincipal> searchByMap(Map<String, Serializable> filter, Set<String> pattern) 421 { 422 throw new UnsupportedOperationException(); 423 } 424 425 public void updateGroup(NuxeoGroup group) { 426 throw new UnsupportedOperationException(); 427 } 428 429 public void updatePrincipal(NuxeoPrincipal principal) { 430 throw new UnsupportedOperationException(); 431 } 432 433 public List<String> getAdministratorsGroups() { 434 throw new UnsupportedOperationException(); 435 } 436 437 public String[] getUsersForPermission(String perm, ACP acp) { 438 throw new UnsupportedOperationException(); 439 } 440 441 @Override 442 public Principal authenticate(String name, String password) { 443 return checkUsernamePassword(name, password) ? getPrincipal(name) : null; 444 } 445 446 @Override 447 public boolean aboutToHandleEvent(Event event) { 448 return false; 449 } 450 451 @Override 452 public void handleEvent(Event event) { 453 } 454}