1 23 24 package org.infoglue.deliver.controllers.kernel.impl.simple; 25 26 import java.security.Principal ; 27 import java.util.Collection ; 28 import java.util.Iterator ; 29 import java.util.List ; 30 import java.util.Map ; 31 import java.util.Properties ; 32 33 import org.apache.log4j.Logger; 34 import org.exolab.castor.jdo.Database; 35 import org.infoglue.cms.controllers.kernel.impl.simple.GroupPropertiesController; 36 import org.infoglue.cms.controllers.kernel.impl.simple.RolePropertiesController; 37 import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeController; 38 import org.infoglue.cms.controllers.kernel.impl.simple.UserControllerProxy; 39 import org.infoglue.cms.controllers.kernel.impl.simple.UserPropertiesController; 40 import org.infoglue.cms.entities.content.DigitalAsset; 41 import org.infoglue.cms.entities.management.GroupProperties; 42 import org.infoglue.cms.entities.management.LanguageVO; 43 import org.infoglue.cms.entities.management.RoleProperties; 44 import org.infoglue.cms.entities.management.UserProperties; 45 import org.infoglue.cms.entities.structure.SiteNode; 46 import org.infoglue.cms.exception.SystemException; 47 import org.infoglue.cms.security.AuthenticationModule; 48 import org.infoglue.cms.security.InfoGlueAuthenticationFilter; 49 import org.infoglue.cms.security.InfoGlueGroup; 50 import org.infoglue.cms.security.InfoGluePrincipal; 51 import org.infoglue.cms.security.InfoGlueRole; 52 import org.infoglue.deliver.applications.databeans.DeliveryContext; 53 54 60 61 public class ExtranetController extends BaseDeliveryController 62 { 63 private final static Logger logger = Logger.getLogger(ExtranetController.class.getName()); 64 65 68 69 private ExtranetController() 70 { 71 } 72 73 76 77 public static ExtranetController getController() 78 { 79 return new ExtranetController(); 80 } 81 82 86 87 public Principal getAuthenticatedPrincipal(Database db, Map request) throws Exception 88 { 89 Principal principal = null; 90 91 try 92 { 93 String authenticatorClass = InfoGlueAuthenticationFilter.authenticatorClass; 94 String authorizerClass = InfoGlueAuthenticationFilter.authorizerClass; 95 String invalidLoginUrl = InfoGlueAuthenticationFilter.invalidLoginUrl; 96 String loginUrl = InfoGlueAuthenticationFilter.loginUrl; 97 String serverName = InfoGlueAuthenticationFilter.serverName; 98 Properties extraProperties = InfoGlueAuthenticationFilter.extraProperties; 99 String casRenew = InfoGlueAuthenticationFilter.casRenew; 100 String casServiceUrl = InfoGlueAuthenticationFilter.casServiceUrl; 101 String casValidateUrl = InfoGlueAuthenticationFilter.casValidateUrl; 102 103 AuthenticationModule authenticationModule = (AuthenticationModule)Class.forName(authenticatorClass).newInstance(); 104 authenticationModule.setAuthenticatorClass(authenticatorClass); 105 authenticationModule.setAuthorizerClass(authorizerClass); 106 authenticationModule.setInvalidLoginUrl(invalidLoginUrl); 107 authenticationModule.setLoginUrl(loginUrl); 108 authenticationModule.setServerName(serverName); 109 authenticationModule.setExtraProperties(extraProperties); 110 authenticationModule.setCasRenew(casRenew); 111 authenticationModule.setCasServiceUrl(casServiceUrl); 112 authenticationModule.setCasValidateUrl(casValidateUrl); 113 authenticationModule.setTransactionObject(db); 114 115 String authenticatedUserName = authenticationModule.authenticateUser(request); 116 logger.info("authenticatedUserName:" + authenticatedUserName); 117 principal = UserControllerProxy.getController(db).getUser(authenticatedUserName); 118 logger.info("principal:" + principal); 119 } 120 catch(Exception e) 121 { 122 logger.error("An error occurred so we should not complete the transaction:" + e, e); 123 throw new SystemException("The login process failed: " + e.getMessage(), e); 124 } 125 126 return principal; 127 } 128 129 130 134 135 public Principal getAuthenticatedPrincipal(Map request) throws Exception 136 { 137 Principal principal = null; 138 139 try 140 { 141 String authenticatedUserName = AuthenticationModule.getAuthenticationModule(null, null).authenticateUser(request); 142 logger.info("authenticatedUserName:" + authenticatedUserName); 143 principal = UserControllerProxy.getController().getUser(authenticatedUserName); 144 logger.info("principal:" + principal); 145 } 146 catch(Exception e) 147 { 148 logger.error("An error occurred so we should not complete the transaction:" + e, e); 149 throw new SystemException("The login process failed: " + e.getMessage(), e); 150 } 151 152 return principal; 153 } 154 157 203 204 207 253 254 259 378 379 380 385 386 public String getPrincipalAssetUrl(Database db, InfoGluePrincipal infoGluePrincipal, String assetKey, Integer languageId, Integer siteNodeId, boolean useLanguageFallback, DeliveryContext deliveryContext) throws Exception 387 { 388 String assetUrl = ""; 389 390 if(infoGluePrincipal == null || assetKey == null) 391 return null; 392 393 Collection userPropertiesList = UserPropertiesController.getController().getUserPropertiesList(infoGluePrincipal.getName(), languageId, db, true); 394 logger.info("userProperties:" + userPropertiesList.size()); 395 Iterator userPropertiesListIterator = userPropertiesList.iterator(); 396 while(userPropertiesListIterator.hasNext()) 397 { 398 UserProperties userProperties = (UserProperties)userPropertiesListIterator.next(); 399 logger.info("userProperties:" + userProperties.getValue()); 402 logger.info("assetKey:" + assetKey); 403 404 if(userProperties != null && userProperties.getLanguage().getLanguageId().equals(languageId)) 405 { 406 Collection assets = userProperties.getDigitalAssets(); 407 logger.info("assets:" + assets.size()); 408 Iterator assetsIterator = assets.iterator(); 409 while(assetsIterator.hasNext()) 410 { 411 DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next(); 412 logger.info("digitalAsset:" + digitalAsset.getAssetKey()); 413 if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey)) 414 { 415 SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db); 416 assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetUrl(digitalAsset, siteNode.getRepository(), deliveryContext); 417 logger.info("assetUrl:" + assetUrl); 418 break; 419 } 420 } 421 } 422 } 423 424 if(assetUrl.equals("")) 425 { 426 List roles = infoGluePrincipal.getRoles(); 427 Iterator rolesIterator = roles.iterator(); 428 while(rolesIterator.hasNext()) 429 { 430 InfoGlueRole role = (InfoGlueRole)rolesIterator.next(); 431 432 Collection rolePropertiesList = RolePropertiesController.getController().getRolePropertiesList(role.getName(), languageId, db, true); 433 Iterator rolePropertiesListIterator = rolePropertiesList.iterator(); 434 while(rolePropertiesListIterator.hasNext()) 435 { 436 RoleProperties roleProperties = (RoleProperties)rolePropertiesListIterator.next(); 437 438 if(roleProperties != null && roleProperties.getLanguage().getLanguageId().equals(languageId)) 439 { 440 Collection assets = roleProperties.getDigitalAssets(); 441 Iterator assetsIterator = assets.iterator(); 442 while(assetsIterator.hasNext()) 443 { 444 DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next(); 445 if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey)) 446 { 447 SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db); 448 assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetUrl(digitalAsset, siteNode.getRepository(), deliveryContext); 449 break; 450 } 451 } 452 } 453 } 454 455 } 456 457 if(assetUrl.equals("") && useLanguageFallback) 458 { 459 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId); 460 if(!masterLanguageVO.getLanguageId().equals(languageId)) 461 return getPrincipalAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, deliveryContext); 462 } 463 } 464 465 if(assetUrl.equals("")) 466 { 467 List groups = infoGluePrincipal.getGroups(); 468 Iterator groupsIterator = groups.iterator(); 469 while(groupsIterator.hasNext()) 470 { 471 InfoGlueGroup group = (InfoGlueGroup)groupsIterator.next(); 472 473 Collection groupPropertiesList = GroupPropertiesController.getController().getGroupPropertiesList(group.getName(), languageId, db, true); 474 Iterator groupPropertiesListIterator = groupPropertiesList.iterator(); 475 while(groupPropertiesListIterator.hasNext()) 476 { 477 GroupProperties groupProperties = (GroupProperties)groupPropertiesListIterator.next(); 478 479 if(groupProperties != null && groupProperties.getLanguage().getLanguageId().equals(languageId)) 480 { 481 Collection assets = groupProperties.getDigitalAssets(); 482 Iterator assetsIterator = assets.iterator(); 483 while(assetsIterator.hasNext()) 484 { 485 DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next(); 486 if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey)) 487 { 488 SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db); 489 assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetUrl(digitalAsset, siteNode.getRepository(), deliveryContext); 490 break; 491 } 492 } 493 } 494 } 495 496 } 497 498 if(assetUrl.equals("") && useLanguageFallback) 499 { 500 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId); 501 if(!masterLanguageVO.getLanguageId().equals(languageId)) 502 return getPrincipalAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, deliveryContext); 503 } 504 } 505 506 return assetUrl; 507 } 508 509 510 515 516 public String getPrincipalThumbnailAssetUrl(Database db, InfoGluePrincipal infoGluePrincipal, String assetKey, Integer languageId, Integer siteNodeId, boolean useLanguageFallback, int width, int height, DeliveryContext deliveryContext) throws Exception 517 { 518 String assetUrl = ""; 519 520 if(infoGluePrincipal == null || assetKey == null) 521 return null; 522 523 Collection userPropertiesList = UserPropertiesController.getController().getUserPropertiesList(infoGluePrincipal.getName(), languageId, db, true); 524 Iterator userPropertiesListIterator = userPropertiesList.iterator(); 525 while(userPropertiesListIterator.hasNext()) 526 { 527 UserProperties userProperties = (UserProperties)userPropertiesListIterator.next(); 528 529 if(userProperties != null && userProperties.getLanguage().getLanguageId().equals(languageId)) 530 { 531 Collection assets = userProperties.getDigitalAssets(); 532 Iterator assetsIterator = assets.iterator(); 533 while(assetsIterator.hasNext()) 534 { 535 DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next(); 536 if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey)) 537 { 538 SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db); 539 assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetThumbnailUrl(digitalAsset, siteNode.getRepository(), width, height, deliveryContext); 540 break; 541 } 542 } 543 } 544 } 545 546 if(assetUrl.equals("")) 547 { 548 List roles = infoGluePrincipal.getRoles(); 549 Iterator rolesIterator = roles.iterator(); 550 while(rolesIterator.hasNext()) 551 { 552 InfoGlueRole role = (InfoGlueRole)rolesIterator.next(); 553 554 Collection rolePropertiesList = RolePropertiesController.getController().getRolePropertiesList(role.getName(), languageId, db, true); 555 Iterator rolePropertiesListIterator = rolePropertiesList.iterator(); 556 while(rolePropertiesListIterator.hasNext()) 557 { 558 RoleProperties roleProperties = (RoleProperties)rolePropertiesListIterator.next(); 559 560 if(roleProperties != null && roleProperties.getLanguage().getLanguageId().equals(languageId)) 561 { 562 Collection assets = roleProperties.getDigitalAssets(); 563 Iterator assetsIterator = assets.iterator(); 564 while(assetsIterator.hasNext()) 565 { 566 DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next(); 567 if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey)) 568 { 569 SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db); 570 assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetThumbnailUrl(digitalAsset, siteNode.getRepository(), width, height, deliveryContext); 571 break; 572 } 573 } 574 } 575 } 576 577 } 578 579 if(assetUrl.equals("") && useLanguageFallback) 580 { 581 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId); 582 if(!masterLanguageVO.getLanguageId().equals(languageId)) 583 return getPrincipalThumbnailAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, width, height, deliveryContext); 584 } 585 } 586 587 if(assetUrl.equals("")) 588 { 589 List groups = infoGluePrincipal.getGroups(); 590 Iterator groupsIterator = groups.iterator(); 591 while(groupsIterator.hasNext()) 592 { 593 InfoGlueGroup group = (InfoGlueGroup)groupsIterator.next(); 594 595 Collection groupPropertiesList = GroupPropertiesController.getController().getGroupPropertiesList(group.getName(), languageId, db, true); 596 Iterator groupPropertiesListIterator = groupPropertiesList.iterator(); 597 while(groupPropertiesListIterator.hasNext()) 598 { 599 GroupProperties groupProperties = (GroupProperties)groupPropertiesListIterator.next(); 600 601 if(groupProperties != null && groupProperties.getLanguage().getLanguageId().equals(languageId)) 602 { 603 Collection assets = groupProperties.getDigitalAssets(); 604 Iterator assetsIterator = assets.iterator(); 605 while(assetsIterator.hasNext()) 606 { 607 DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next(); 608 if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey)) 609 { 610 SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db); 611 assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetThumbnailUrl(digitalAsset, siteNode.getRepository(), width, height, deliveryContext); 612 break; 613 } 614 } 615 } 616 } 617 618 } 619 620 if(assetUrl.equals("") && useLanguageFallback) 621 { 622 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId); 623 if(!masterLanguageVO.getLanguageId().equals(languageId)) 624 return getPrincipalThumbnailAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, width, height, deliveryContext); 625 } 626 } 627 628 return assetUrl; 629 } 630 631 632 637 651 652 } 653 | Popular Tags |