[smarcet] - Refs #4578- OpenId - Server Core Logic - Authentication Workflow

This commit is contained in:
smarcet 2013-10-17 18:43:55 -03:00
parent 9c407de37d
commit d1e6d73f8f
65 changed files with 2208 additions and 384 deletions

View File

@ -1,126 +1,273 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/auth/AuthService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/auth/AuthenticationServiceProvider.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/services/AuthenticationStrategy.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/auth/CustomAuthProvider.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/auth/CustomUser.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/services/IAuthService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/services/IMementoOpenIdRequestService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/handlers/IOpenIdAuthenticationStrategy.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/strategies/IOpenIdResponseStrategy.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/exceptions/InvalidKVFormat.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/exceptions/InvalidOpenIdMessageException.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/services/MementoRequestService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/requests/OpenIdAuthenticationRequest.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdDirectGenericErrorResponse.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdDirectResponse.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdIndirectResponse.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/requests/OpenIdRequest.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdResponse.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/strategies/OpenIdResponseStrategyFactoryMethod.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/services/ServicesProvider.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/controllers/UserController.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/views/consent.blade.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/views/error.blade.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/views/home.blade.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/views/layout.blade.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/views/login.blade.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/controllers/DiscoveryController.php" afterPath="$PROJECT_DIR$/app/controllers/DiscoveryController.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/controllers/HomeController.php" afterPath="$PROJECT_DIR$/app/controllers/HomeController.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/IOpenIdProtocol.php" afterPath="$PROJECT_DIR$/app/libs/openid/IOpenIdProtocol.php" />
<list default="true" id="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" name="Default" comment="[smarcet] - Refs #4576, #4578 : XRDS discovery and Authentication Workflow main classes">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/database/migrations/2013_10_17_210518_create_users_table.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/database/migrations/2013_10_17_210730_create_associations_table.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/database/migrations/2013_10_17_211051_create_trusted_sites_table.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/database/migrations/2013_10_17_211839_alter_trusted_sites_table.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/model/IAssociation.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/services/IAssociationService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/extensions/IOpenIdExtension.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/model/IOpenIdUser.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/services/IServerConfigurationService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/services/IServerExtensionsService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/model/ITrustedSite.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/services/ITrustedSitesService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/exceptions/InvalidOpenIdAuthenticationRequestMode.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/exceptions/InvalidOpenIdMessageMode.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/exceptions/InvalidRequestContextException.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/extensions/implementations/OpenIdAXExtension.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/helpers/OpenIdCryptoHelper.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/strategies/OpenIdDirectResponseStrategy.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/helpers/OpenIdErrorMessages.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdImmediateNegativeAssertion.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdIndirectGenericErrorResponse.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/strategies/OpenIdIndirectResponseStrategy.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdNonImmediateNegativeAssertion.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/extensions/implementations/OpenIdOAuthExtension.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/extensions/implementations/OpenIdPAPEExtension.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdPositiveAssertionResponse.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/strategies/OpenIdResponseStrategyProvider.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/extensions/implementations/OpenIdSREGExtension.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/helpers/OpenIdSignatureBuilder.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/models/OpenIdTrustedSite.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/helpers/OpenIdUriHelper.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/auth/OpenIdUser.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/requests/contexts/PartialView.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/requests/contexts/RequestContext.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/responses/contexts/ResponseContext.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/services/ServerExtensionsService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/views/extensions/ax.blade.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/views/extensions/oauth.blade.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/views/extensions/pape.blade.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/views/extensions/sreg.blade.php" />
<change type="DELETED" beforePath="$PROJECT_DIR$/app/libs/auth/CustomUser.php" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/app/models/User.php" afterPath="" />
<change type="MOVED" beforePath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdVoidRequestHandler.php" afterPath="$PROJECT_DIR$/app/models/OpenIdAssociation.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/database/migrations/2013_10_14_155702_create_extension_table.php" afterPath="$PROJECT_DIR$/app/database/migrations/2013_10_14_155702_create_extension_table.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/auth/AuthService.php" afterPath="$PROJECT_DIR$/app/libs/auth/AuthService.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/services/AuthenticationStrategy.php" afterPath="$PROJECT_DIR$/app/services/AuthenticationStrategy.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/services/IAuthService.php" afterPath="$PROJECT_DIR$/app/libs/openid/services/IAuthService.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/handlers/IOpenIdAuthenticationStrategy.php" afterPath="$PROJECT_DIR$/app/libs/openid/handlers/IOpenIdAuthenticationStrategy.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/strategies/IOpenIdResponseStrategy.php" afterPath="$PROJECT_DIR$/app/libs/openid/strategies/IOpenIdResponseStrategy.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/repositories/IServerExtensionsRepository.php" afterPath="$PROJECT_DIR$/app/libs/openid/repositories/IServerExtensionsRepository.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/requests/OpenIdAuthenticationRequest.php" afterPath="$PROJECT_DIR$/app/libs/openid/requests/OpenIdAuthenticationRequest.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdAuthenticationRequestHandler.php" afterPath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdAuthenticationRequestHandler.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdDirectGenericErrorResponse.php" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdDirectGenericErrorResponse.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdIndirectResponse.php" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdIndirectResponse.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/OpenIdMessage.php" afterPath="$PROJECT_DIR$/app/libs/openid/OpenIdMessage.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdMessageHandler.php" afterPath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdMessageHandler.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/OpenIdProtocol.php" afterPath="$PROJECT_DIR$/app/libs/openid/OpenIdProtocol.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/controllers/OpenIdProviderController.php" afterPath="$PROJECT_DIR$/app/controllers/OpenIdProviderController.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/OpenIdServiceProvider.php" afterPath="$PROJECT_DIR$/app/libs/openid/OpenIdServiceProvider.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdResponse.php" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdResponse.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/repositories/ServerExtensionsRepositoryEloquent.php" afterPath="$PROJECT_DIR$/app/repositories/ServerExtensionsRepositoryEloquent.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/services/ServicesProvider.php" afterPath="$PROJECT_DIR$/app/services/ServicesProvider.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/controllers/UserController.php" afterPath="$PROJECT_DIR$/app/controllers/UserController.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/config/app.php" afterPath="$PROJECT_DIR$/app/config/app.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/config/auth.php" afterPath="$PROJECT_DIR$/app/config/auth.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/composer.json" afterPath="$PROJECT_DIR$/composer.json" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/filters.php" afterPath="$PROJECT_DIR$/app/filters.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/start/global.php" afterPath="$PROJECT_DIR$/app/start/global.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/routes.php" afterPath="$PROJECT_DIR$/app/routes.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/bootstrap/start.php" afterPath="$PROJECT_DIR$/bootstrap/start.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/vcs.xml" afterPath="$PROJECT_DIR$/.idea/vcs.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/views/login.blade.php" afterPath="$PROJECT_DIR$/app/views/login.blade.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
</list>
<ignored path="openidIdp.iws" />
<ignored path=".idea/workspace.xml" />
<file path="/DiscoveryController.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381940543859" ignored="false" />
<file path="/DiscoveryControllerTest.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381770482258" ignored="false" />
<file path="/2013_10_14_155702_create_extension_table.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381766606263" ignored="false" />
<file path="/2013_10_14_155702_create_extension_table.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382044897650" ignored="false" />
<file path="/ServerExtension.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381766727808" ignored="false" />
<file path="/ServerExtensionTest.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381768563012" ignored="false" />
<file path="/tmp/ide-phpunit.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381932516605" ignored="false" />
<file path="/fragment.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381939546131" ignored="false" />
<file path="/fragment.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382027125981" ignored="false" />
<file path="/HomeController.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381939659852" ignored="false" />
<file path="/XrdsDocumentBuilder.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381773998567" ignored="false" />
<file path="/a.dummy" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381860882058" ignored="false" />
<file path="/Dummy.txt" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381928444614" ignored="false" />
<file path="/a.dummy" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382043231261" ignored="false" />
<file path="/Dummy.txt" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382040143611" ignored="false" />
<file path="/IXRDSService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381773588280" ignored="false" />
<file path="/XRDSService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381772341971" ignored="false" />
<file path="/XRDSDocumentTest.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381774070136" ignored="false" />
<file path="/OpenIdProtocol.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381931590407" ignored="false" />
<file path="/IServerExtensionsRepository.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381777956130" ignored="false" />
<file path="/OpenIdProtocol.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382038957857" ignored="false" />
<file path="/IServerExtensionsRepository.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381944367232" ignored="false" />
<file path="/IServerConfigurationRepository.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381778188675" ignored="false" />
<file path="/OpenIdProtocolTest.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381781851602" ignored="false" />
<file path="/app.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381929077974" ignored="false" />
<file path="/RepositoriesServiceProvider.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381780638618" ignored="false" />
<file path="/ServerConfigurationRepositoryEloquent.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381781085301" ignored="false" />
<file path="/ServerExtensionsRepositoryEloquent.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381781161806" ignored="false" />
<file path="/ServerExtensionsRepositoryEloquent.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381946012463" ignored="false" />
<file path="/IOpenIdProtocol.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381858939899" ignored="false" />
<file path="/*.regexp" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381929360132" ignored="false" />
<file path="/*.regexp" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382023929834" ignored="false" />
<file path="/IOpenIdMessageHandler.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381784676935" ignored="false" />
<file path="/OpenIdAuthenticationRequestHandler.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381931145138" ignored="false" />
<file path="/OpenIdAuthenticationRequestHandler.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382041988563" ignored="false" />
<file path="/OpenIdSessionAssociationRequestHandler.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381784308892" ignored="false" />
<file path="/OpenIdCheckAuthenticationRequestHandler.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381783903261" ignored="false" />
<file path="/OpenIdMessage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381850575982" ignored="false" />
<file path="/OpenIdMessage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382033984714" ignored="false" />
<file path="/OpenIdMessageHandler.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381861117166" ignored="false" />
<file path="/OpenIdProviderController.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381931867204" ignored="false" />
<file path="/OpenIdProviderController.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381953184255" ignored="false" />
<file path="/OpenIdProviderControllerTest.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381786052450" ignored="false" />
<file path="/routes.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381938649068" ignored="false" />
<file path="/OpenIdResponse.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381845379523" ignored="false" />
<file path="/OpenIdResponse.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382035157533" ignored="false" />
<file path="/OpenIdDirectResponse.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381845248602" ignored="false" />
<file path="/InvalidKVFormat.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381844314772" ignored="false" />
<file path="/OpenIdDirectGenericErrorResponse.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381845936007" ignored="false" />
<file path="/OpenIdIndirectResponse.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381849721836" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/training/Training.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381847865179" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/registration/code/EditProfileForm.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381847865179" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/registration/code/EditProfilePage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381847865179" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Project.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381847865179" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/SpeakerVotingPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381847865179" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/training/Frontend/TrainingDirectoryPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381847865179" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/registration/code/MemberDecorator.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381847865179" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/_config.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381848984796" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/registration/code/RegistrationPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381847865179" ignored="false" />
<file path="/OpenIdDirectGenericErrorResponse.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382038608960" ignored="false" />
<file path="/OpenIdIndirectResponse.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381963106374" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/training/Training.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370381" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/registration/code/EditProfileForm.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/registration/code/EditProfilePage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Project.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/SpeakerVotingPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/training/Frontend/TrainingDirectoryPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/registration/code/MemberDecorator.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/_config.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/registration/code/RegistrationPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/_ss_environment.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381848972509" ignored="false" />
<file path="/_config.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381848980103" ignored="false" />
<file path="/OpenIdRequest.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381937700057" ignored="false" />
<file path="/OpenIdAuthenticationRequest.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381938030158" ignored="false" />
<file path="/OpenIdAuthenticationRequest.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382037263085" ignored="false" />
<file path="$PROJECT_DIR$/../../LaravelTest/test/bootstrap/start.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381851672863" ignored="false" />
<file path="/CustomUser.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381851695261" ignored="false" />
<file path="/IAuthService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381935330879" ignored="false" />
<file path="/CustomUser.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382043218430" ignored="false" />
<file path="/IAuthService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382036720942" ignored="false" />
<file path="/AuthService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381935287069" ignored="false" />
<file path="/IMementoRequestService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381852639908" ignored="false" />
<file path="/layout.blade.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381853928575" ignored="false" />
<file path="/error.blade.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381854085102" ignored="false" />
<file path="/global.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381857547950" ignored="false" />
<file path="/IOpenIdResponseStrategy.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381858495548" ignored="false" />
<file path="/OpenIdResponseStrategyFactoryMethod.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381858678733" ignored="false" />
<file path="/OpenIdResponseStrategyFactoryMethod.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381952554728" ignored="false" />
<file path="/IAuthenticationStrategy.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381861012975" ignored="false" />
<file path="/UserController.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381938151332" ignored="false" />
<file path="/login.blade.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381937249526" ignored="false" />
<file path="/UserController.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381951280957" ignored="false" />
<file path="/login.blade.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381950573256" ignored="false" />
<file path="/consent.blade.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381863616193" ignored="false" />
<file path="/MementoRequestService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381934837267" ignored="false" />
<file path="/AuthenticationStrategy.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381931567723" ignored="false" />
<file path="/AuthenticationStrategy.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381945904565" ignored="false" />
<file path="/ServicesProvider.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381865901188" ignored="false" />
<file path="/AuthenticationServiceProvider.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381866053563" ignored="false" />
<file path="/IMementoOpenIdRequestService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381930275650" ignored="false" />
<file path="/filters.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381939274202" ignored="false" />
<file path="/home.blade.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381939705628" ignored="false" />
<file path="/IOpenIdExtension.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381945256985" ignored="false" />
<file path="/RequestContext.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381951760812" ignored="false" />
<file path="/PartialView.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381944893338" ignored="false" />
<file path="/ResponseContext.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381945217299" ignored="false" />
<file path="/OpenIdAXExtension.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381945303588" ignored="false" />
<file path="/OpenIdSREGExtension.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381945368209" ignored="false" />
<file path="/IOpenIdAuthenticationStrategy.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381945734462" ignored="false" />
<file path="/IServerExtensionsService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381949170421" ignored="false" />
<file path="/ServerExtensionsService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381949632227" ignored="false" />
<file path="/pape.blade.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381951022347" ignored="false" />
<file path="/OpenIdDirectResponseStrategy.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381952729742" ignored="false" />
<file path="/OpenIdIndirectResponseStrategy.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1381953888687" ignored="false" />
<file path="/IAssociationService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382040567532" ignored="false" />
<file path="/IAssociation.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382017552899" ignored="false" />
<file path="$PROJECT_DIR$/../../ZendFramework-1.12.3/demos/Zend/OpenId/test_server.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382020503104" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/_ss_environment.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382021988019" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/sample._live-config.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382022713443" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/input_html_purifier_validator/_config.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382023130737" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/input_html_purifier_validator/code/input_html_purifier_validator.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382023249388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/form_html_purifier/code/input_html_purifier_validator.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382023612389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/form_html_purifier/code/form_html_purifier.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382023668653" ignored="false" />
<file path="/form_html_purifier.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382025598743" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/form_html_purifier/code/SafeXSSForm.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382026977713" ignored="false" />
<file path="/tmp/silverstripe-cache-home-smarcet-git-www.openstack.org/.cache.registration.templates.Layout.EditProfilePage.ss" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382024476892" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/form_html_purifier/_config.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382026977713" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/dataobject_manager/code/HasManyFileDataObjectManager.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370381" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/dataobject_manager/code/simple_html_editor_field/SimpleHTMLEditorField.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370381" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/training/TrainingProgram.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370382" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/dataobject_manager/code/ManyManyFileDataObjectManager.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370382" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/themes/openstack-old/javascript/jquery.raty-2.1.0/js/jquery.min.js" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370382" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/dataobject_manager/code/HasManyDataObjectManager.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370382" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/event-signin/SigninPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370382" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/SpeakerSubmission.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370382" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/event-signin/EventSignIn.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370382" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/SpeakerListPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370382" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/BoardOfDirectorsPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370382" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/deployment-survey/Deployment.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370384" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/dataobject_manager/code/FileDataObjectManager.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370384" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/PresentationCategoryPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370384" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/dataobject_manager/code/DataObjectManager.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370384" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/ConferenceNewsPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/deployment-survey/DeploymentSurveyPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/SpeakerVote.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/SecureFiles/code/SecureFileAccessToken.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/UserStoriesHolder.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/LogoDownloadPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/JobHolder.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/LegalDocumentPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/CompaniesPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/BrandingPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/OpenstackUser.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/JSONMember.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/IVotedPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/LegalAgreement.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370385" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/SpeakerVoteTotals.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/CompanyListPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/UserStoryPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/LogoRightsSubmission.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Voter.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/CandidatePage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/TechnicalCommitteePage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/FeedbackSubmission.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/CandidateNomination.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Page.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/RestrictedDownloadPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/OpenStackUserRequest.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/ProductPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/AffiliationUpdate.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/ElectionVoterPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370386" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/ArticlePage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Feature.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/EventPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/CallForSpeakersPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/NewCompanyListPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/CallForSpeakersForm.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/PdfPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/PrimaryLogoPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/AttachmentFile.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/CommMember.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370387" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/ElectionSystem.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/ArticleHolder.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/ElectionPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/JobPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/uploadify/code/s3/S3File.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/WebBadgeDownloadPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/SangriaPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/LegalDocumentsHolder.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/MemberListPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/LogoRightsPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/MemberVerifyPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Link.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/InvolvementType.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370388" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/CommunityPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/CommPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/HomePage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Bio.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Org.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Presentation.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/OneColumn.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/themes/openstack/javascript/jquery.raty-2.1.0/js/jquery.min.js" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Candidate.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/EventHolder.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/LogoGuidelinesPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/AttachmentImage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/BioPage.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/openstack/code/Company.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/dataobject_manager/code/ImageDataObjectManager.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/themes/openstack-new/javascript/jquery.raty-2.1.0/js/jquery.min.js" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370389" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/dataobject_manager/code/ManyManyDataObjectManager.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028370390" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/registration/javascript/registration.page.js" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382027810599" ignored="false" />
<file path="/registration.page.js" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382027595478" ignored="false" />
<file path="$PROJECT_DIR$/../../www.openstack.org/registration/javascript/edit.profile.page.js" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382028395150" ignored="false" />
<file path="/OpenIdPositiveAssertionResponse.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382040841463" ignored="false" />
<file path="/OpenIdImmediateNegativeAssertion.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382038406853" ignored="false" />
<file path="/OpenIdNonImmediateNegativeAssertion.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382035302961" ignored="false" />
<file path="/ITrustedSitesService.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382039793081" ignored="false" />
<file path="/IOpenIdUser.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382036261557" ignored="false" />
<file path="/ITrustedSite.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382036504552" ignored="false" />
<file path="/OpenIdUriHelper.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382037709193" ignored="false" />
<file path="/OpenIdIndirectGenericErrorResponse.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382038560203" ignored="false" />
<file path="/OpenIdErrorMessages.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382038761070" ignored="false" />
<file path="/OpenIdCryptoHelper.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382042927540" ignored="false" />
<file path="/OpenIdSignatureBuilder.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382042943494" ignored="false" />
<file path="/2013_10_17_210518_create_users_table.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382043971133" ignored="false" />
<file path="/OpenIdAssociation.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382044104891" ignored="false" />
<file path="/OpenIdTrustedSite.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382044287141" ignored="false" />
<file path="/2013_10_17_211051_create_trusted_sites_table.php" changelist="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" time="1382045588474" ignored="false" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -143,7 +290,53 @@
<favorites_list name="openidIdp" />
</component>
<component name="FileEditorManager">
<leaf />
<leaf>
<file leaf-file-name="2013_10_14_155702_create_extension_table.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/database/migrations/2013_10_14_155702_create_extension_table.php">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="33" selection-start="286" selection-end="286" vertical-scroll-proportion="-5.7916665">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="2013_10_17_210518_create_users_table.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/database/migrations/2013_10_17_210518_create_users_table.php">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="33" selection-start="277" selection-end="277" vertical-scroll-proportion="-7.0416665">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="2013_10_17_211051_create_trusted_sites_table.php" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/app/database/migrations/2013_10_17_211051_create_trusted_sites_table.php">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="53" selection-start="428" selection-end="428" vertical-scroll-proportion="0.47191012">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="2013_10_17_210730_create_associations_table.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/database/migrations/2013_10_17_210730_create_associations_table.php">
<provider selected="true" editor-type-id="text-editor">
<state line="10" column="33" selection-start="242" selection-end="242" vertical-scroll-proportion="-5.4166665">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="2013_10_17_211839_alter_trusted_sites_table.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/database/migrations/2013_10_17_211839_alter_trusted_sites_table.php">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="0" selection-start="388" selection-end="388" vertical-scroll-proportion="-10.625">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FindManager">
<FindUsagesManager>
@ -161,22 +354,22 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/app/libs/openid/OpenIdProtocol.php" />
<option value="$PROJECT_DIR$/app/controllers/OpenIdProviderController.php" />
<option value="$PROJECT_DIR$/app/libs/openid/OpenIdMessage.php" />
<option value="$PROJECT_DIR$/app/services/MementoRequestService.php" />
<option value="$PROJECT_DIR$/app/libs/openid/services/IAuthService.php" />
<option value="$PROJECT_DIR$/app/libs/openid/services/ITrustedSitesService.php" />
<option value="$PROJECT_DIR$/app/libs/openid/services/IAssociationService.php" />
<option value="$PROJECT_DIR$/app/libs/openid/responses/OpenIdPositiveAssertionResponse.php" />
<option value="$PROJECT_DIR$/app/libs/openid/services/IServerConfigurationService.php" />
<option value="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdAuthenticationRequestHandler.php" />
<option value="$PROJECT_DIR$/app/libs/openid/helpers/OpenIdCryptoHelper.php" />
<option value="$PROJECT_DIR$/app/libs/openid/helpers/OpenIdSignatureBuilder.php" />
<option value="$PROJECT_DIR$/app/libs/auth/CustomUser.php" />
<option value="$PROJECT_DIR$/app/libs/auth/AuthService.php" />
<option value="$PROJECT_DIR$/app/views/login.blade.php" />
<option value="$PROJECT_DIR$/app/libs/openid/requests/OpenIdRequest.php" />
<option value="$PROJECT_DIR$/app/libs/openid/requests/OpenIdAuthenticationRequest.php" />
<option value="$PROJECT_DIR$/app/routes.php" />
<option value="$PROJECT_DIR$/app/services/AuthenticationStrategy.php" />
<option value="$PROJECT_DIR$/app/filters.php" />
<option value="$PROJECT_DIR$/app/controllers/UserController.php" />
<option value="$PROJECT_DIR$/app/controllers/HomeController.php" />
<option value="$PROJECT_DIR$/app/views/home.blade.php" />
<option value="$PROJECT_DIR$/app/controllers/DiscoveryController.php" />
<option value="$PROJECT_DIR$/app/models/OpenIdAssociation.php" />
<option value="$PROJECT_DIR$/app/models/OpenIdTrustedSite.php" />
<option value="$PROJECT_DIR$/app/database/migrations/2013_10_17_211839_alter_trusted_sites_table.php" />
<option value="$PROJECT_DIR$/app/database/migrations/2013_10_14_155702_create_extension_table.php" />
<option value="$PROJECT_DIR$/app/database/migrations/2013_10_17_210518_create_users_table.php" />
<option value="$PROJECT_DIR$/app/database/migrations/2013_10_17_210730_create_associations_table.php" />
<option value="$PROJECT_DIR$/app/database/migrations/2013_10_17_211051_create_trusted_sites_table.php" />
</list>
</option>
</component>
@ -215,7 +408,7 @@
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="2" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectReloadState">
@ -234,6 +427,7 @@
<sortByType />
</navigator>
<panes>
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<PATH>
@ -252,6 +446,20 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="vendor" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
@ -266,21 +474,78 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="models" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="database" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="database" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="migrations" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="options.splitter.main.proportions" value="0.3" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="options.lastSelected" value="Configurable.PHP.Debug" />
<property name="recentsLimit" value="5" />
<property name="options.lastSelected" value="Configurable.PHP.Debug" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../www.openstack.org" />
<property name="restartRequiresConfirmation" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../LaravelTest" />
<property name="GoToClass.includeJavaFiles" value="false" />
<property name="options.searchVisible" value="true" />
<property name="options.splitter.details.proportions" value="0.2" />
<property name="options.searchVisible" value="true" />
<property name="GoToClass.includeJavaFiles" value="false" />
</component>
<component name="RunManager" selected="PHP Web Application.dev.openstackid.com">
<configuration default="false" name="OpenIdProviderController.php" type="PhpLocalRunConfigurationType" factoryName="PHP Console" temporary="true" path="$PROJECT_DIR$/app/controllers/OpenIdProviderController.php">
@ -332,8 +597,8 @@
<method />
</configuration>
<list size="6">
<item index="0" class="java.lang.String" itemvalue="PHP Script.OpenIdProviderController.php" />
<item index="1" class="java.lang.String" itemvalue="PHP Web Application.dev.openstackid.com" />
<item index="0" class="java.lang.String" itemvalue="PHP Web Application.dev.openstackid.com" />
<item index="1" class="java.lang.String" itemvalue="PHP Script.OpenIdProviderController.php" />
<item index="2" class="java.lang.String" itemvalue="PHPUnit.DiscoveryControllerTest" />
<item index="3" class="java.lang.String" itemvalue="PHPUnit.XRDSDocumentTest" />
<item index="4" class="java.lang.String" itemvalue="PHPUnit.DiscoveryControllerTest.testIdpDiscovery" />
@ -373,19 +638,23 @@
<created>1381763171476</created>
<updated>1381763171476</updated>
</task>
<task id="LOCAL-00001" summary="[smarcet] - Refs #4576, #4578 : XRDS discovery and Authentication Workflow main classes">
<created>1381940958233</created>
<updated>1381940958233</updated>
</task>
<option name="localTasksCounter" value="2" />
<servers />
</component>
<component name="ToolWindowManager">
<frame x="65" y="32" width="1301" height="728" extended-state="0" />
<editor active="false" />
<editor active="true" />
<layout>
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.27702162" sideWeight="0.6445993" order="0" side_tool="false" content_ui="combo" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3554007" sideWeight="0.6180945" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.28182545" sideWeight="0.75261325" order="0" side_tool="false" content_ui="combo" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24707846" sideWeight="0.6180945" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3554007" sideWeight="0.38190553" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3292683" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
@ -393,6 +662,8 @@
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
@ -440,7 +711,7 @@
<option name="WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN" value="false" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" />
<option name="LAST_COMMIT_MESSAGE" />
<option name="LAST_COMMIT_MESSAGE" value="[smarcet] - Refs #4576, #4578 : XRDS discovery and Authentication Workflow main classes" />
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="false" />
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
@ -454,15 +725,11 @@
<option name="UPDATE_FILTER_BY_SCOPE" value="false" />
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
<MESSAGE value="[smarcet] - Refs #4576, #4578 : XRDS discovery and Authentication Workflow main classes" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/app/libs/auth/AuthService.php</url>
<line>21</line>
<option name="timeStamp" value="80" />
</line-breakpoint>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/app/libs/auth/CustomAuthProvider.php</url>
<line>43</line>
@ -473,21 +740,6 @@
<line>57</line>
<option name="timeStamp" value="84" />
</line-breakpoint>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/app/libs/auth/CustomUser.php</url>
<line>31</line>
<option name="timeStamp" value="85" />
</line-breakpoint>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/app/libs/auth/CustomUser.php</url>
<line>21</line>
<option name="timeStamp" value="86" />
</line-breakpoint>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/app/controllers/UserController.php</url>
<line>33</line>
<option name="timeStamp" value="87" />
</line-breakpoint>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Auth/Guard.php</url>
<line>271</line>
@ -498,11 +750,6 @@
<line>61</line>
<option name="timeStamp" value="91" />
</line-breakpoint>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/app/filters.php</url>
<line>100</line>
<option name="timeStamp" value="93" />
</line-breakpoint>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/app/controllers/HomeController.php</url>
<line>7</line>
@ -518,134 +765,140 @@
<line>297</line>
<option name="timeStamp" value="96" />
</line-breakpoint>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Routing/Redirector.php</url>
<line>114</line>
<option name="timeStamp" value="108" />
</line-breakpoint>
</breakpoints>
<breakpoints-dialog>
<breakpoints-dialog />
</breakpoints-dialog>
<option name="time" value="97" />
<option name="time" value="109" />
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Exception/Handler.php">
<entry file="file://$PROJECT_DIR$/app/libs/openid/helpers/OpenIdCryptoHelper.php">
<provider selected="true" editor-type-id="text-editor">
<state line="257" column="0" selection-start="6464" selection-end="6464" vertical-scroll-proportion="0.306962">
<state line="42" column="22" selection-start="1060" selection-end="1060" vertical-scroll-proportion="-22.5">
<folding>
<element signature="e#192#218#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/libs/openid/responses/OpenIdPositiveAssertionResponse.php">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="26" selection-start="176" selection-end="192" vertical-scroll-proportion="-1.7916666">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/services/AuthenticationStrategy.php">
<entry file="file://$PROJECT_DIR$/app/libs/openid/handlers/OpenIdAuthenticationRequestHandler.php">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="5" selection-start="445" selection-end="445" vertical-scroll-proportion="0.36082473">
<state line="173" column="13" selection-start="8594" selection-end="8594" vertical-scroll-proportion="-10.625">
<folding>
<element signature="e#194#219#0" expanded="true" />
<element signature="e#8626#9554#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Auth/UserInterface.php">
<provider selected="true" editor-type-id="text-editor">
<state line="18" column="1" selection-start="282" selection-end="282" vertical-scroll-proportion="-11.25">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/libs/auth/OpenIdUser.php">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="6" selection-start="256" selection-end="266" vertical-scroll-proportion="-5.0">
<folding>
<element signature="e#184#218#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/libs/auth/CustomAuthProvider.php">
<provider selected="true" editor-type-id="text-editor">
<state line="50" column="6" selection-start="1087" selection-end="1087" vertical-scroll-proportion="1.2403846">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/libs/auth/AuthService.php">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="0" selection-start="367" selection-end="367" vertical-scroll-proportion="0.35759494">
<state line="52" column="58" selection-start="1034" selection-end="1034" vertical-scroll-proportion="0.7692308">
<folding>
<element signature="e#183#216#0" expanded="true" />
<element signature="e#183#226#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/filters.php">
<entry file="file://$PROJECT_DIR$/app/libs/auth/AuthenticationServiceProvider.php">
<provider selected="true" editor-type-id="text-editor">
<state line="100" column="0" selection-start="2792" selection-end="2792" vertical-scroll-proportion="-6.9166665">
<folding>
<element signature="e#2091#2140#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/controllers/UserController.php">
<provider selected="true" editor-type-id="text-editor">
<state line="22" column="8" selection-start="634" selection-end="634" vertical-scroll-proportion="-8.791667">
<folding>
<element signature="e#165#214#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/views/login.blade.php">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="943" vertical-scroll-proportion="-0.0">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/views/home.blade.php">
<entry file="file://$PROJECT_DIR$/app/models/ServerExtension.php">
<provider selected="true" editor-type-id="text-editor">
<state line="4" column="40" selection-start="128" selection-end="128" vertical-scroll-proportion="-2.5">
<state line="11" column="1" selection-start="209" selection-end="209" vertical-scroll-proportion="-3.125">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/libs/openid/XRDS/XRDSDocumentBuilder.php">
<entry file="file://$PROJECT_DIR$/app/models/OpenIdAssociation.php">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="44" selection-start="266" selection-end="286" vertical-scroll-proportion="0.5221519">
<state line="10" column="23" selection-start="203" selection-end="220" vertical-scroll-proportion="-0.8787879">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Client.php">
<entry file="file://$PROJECT_DIR$/app/models/OpenIdTrustedSite.php">
<provider selected="true" editor-type-id="text-editor">
<state line="8" column="26" selection-start="318" selection-end="318" vertical-scroll-proportion="0.18987341">
<state line="10" column="23" selection-start="203" selection-end="220" vertical-scroll-proportion="0.115384616">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Client.php">
<entry file="file://$PROJECT_DIR$/app/database/migrations/2013_10_17_211839_alter_trusted_sites_table.php">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="25" selection-start="957" selection-end="957" vertical-scroll-proportion="0.44554454">
<state line="19" column="0" selection-start="388" selection-end="388" vertical-scroll-proportion="-10.625">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/symfony/browser-kit/Symfony/Component/BrowserKit/Client.php">
<entry file="file://$PROJECT_DIR$/app/database/migrations/2013_10_14_155702_create_extension_table.php">
<provider selected="true" editor-type-id="text-editor">
<state line="226" column="5" selection-start="5753" selection-end="5759" vertical-scroll-proportion="0.3309091">
<state line="15" column="33" selection-start="286" selection-end="286" vertical-scroll-proportion="-5.7916665">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/tests/DiscoveryControllerTest.php">
<entry file="file://$PROJECT_DIR$/app/database/migrations/2013_10_17_210518_create_users_table.php">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="25" selection-start="552" selection-end="552" vertical-scroll-proportion="-5.625">
<state line="15" column="33" selection-start="277" selection-end="277" vertical-scroll-proportion="-7.0416665">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php">
<entry file="file://$PROJECT_DIR$/app/database/migrations/2013_10_17_210730_create_associations_table.php">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="6" selection-start="325" selection-end="325" vertical-scroll-proportion="18.291666">
<state line="10" column="33" selection-start="242" selection-end="242" vertical-scroll-proportion="-5.4166665">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/routes.php">
<entry file="file://$PROJECT_DIR$/app/database/migrations/2013_10_17_211051_create_trusted_sites_table.php">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="12" selection-start="447" selection-end="457" vertical-scroll-proportion="0.23734178">
<state line="14" column="53" selection-start="428" selection-end="428" vertical-scroll-proportion="0.47191012">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/controllers/HomeController.php">
<provider selected="true" editor-type-id="text-editor">
<state line="1" column="0" selection-start="6" selection-end="42" vertical-scroll-proportion="-0.625">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/controllers/DiscoveryController.php">
<provider selected="true" editor-type-id="text-editor">
<state line="10" column="36" selection-start="231" selection-end="231" vertical-scroll-proportion="0.18987341">
<folding>
<element signature="e#167#194#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
</project>

View File

@ -116,7 +116,8 @@ return array(
'openid\OpenIdServiceProvider',
'repositories\RepositoriesServiceProvider',
'auth\AuthenticationServiceProvider',
'services\ServicesProvider'
'services\ServicesProvider',
'strategies\OpenIdResponseStrategyProvider'
),
/*

View File

@ -9,7 +9,7 @@
use openid\services\IMementoOpenIdRequestService;
use openid\services\IAuthService;
use openid\requests\OpenIdAuthenticationRequest;
use openid\exceptions\InvalidRequestContextException;
class UserController extends BaseController{
@ -25,13 +25,26 @@ class UserController extends BaseController{
$this->beforeFilter('openid.needs.auth.request',array('only' => array('getLogin', 'getConsent')));
}
public function getLogin(){
private function getViewData(){
$context = Session::get('context');
if(is_null($context))
throw new InvalidRequestContextException();
$partial_views = $context->getPartials();
$data = array();
$views = array();
foreach($partial_views as $partial){
$views[$partial->getName()] = View::make($partial->getName(),$partial->getData());
}
$data["views"]=$views;
return $data;
}
return View::make("login");
public function getLogin(){
$data = $this->getViewData();
return View::make("login",$data);
}
public function postLogin(){
$data = Input::all();
// Build the validation constraint set.
$rules = array(
@ -44,7 +57,8 @@ class UserController extends BaseController{
$username = Input::get("username");
$password = Input::get("password");
if($this->auth_service->Login($username,$password)){
return Redirect::to('/accounts/user/consent');
//go to authentication flow again
return Redirect::action("OpenIdProviderController@op_endpoint");
}
return Redirect::action('UserController@getLogin')->with('flash_notice', 'Authentication Failed!');
}
@ -52,11 +66,12 @@ class UserController extends BaseController{
}
public function getConsent(){
return View::make("consent")->with("realm","test");
$data = $this->getViewData();
$data["realm"] ="test";
return View::make("consent",$data);
}
public function postConsent(){
return Redirect::to('/accounts/openid/v2');
}
}

View File

@ -13,7 +13,7 @@ class CreateExtensionTable extends Migration {
{
Schema::create('server_extensions', function($table)
{
$table->increments('id');
$table->bigIncrements('id');
$table->string('name',100);
$table->string('namespace',255);
$table->boolean('active');

View File

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('openid_users', function($table)
{
$table->bigIncrements('id');
$table->string('identifier',255);
$table->string('external_id',100);
$table->boolean('active');
$table->dateTime('last_login_date');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('openid_users');
}
}

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
class CreateAssociationsTable extends Migration {
public function up()
{
Schema::create('openid_associations', function($table)
{
$table->bigIncrements('id');
$table->string('identifier',255);
$table->string('mac_function',100);
$table->string('secret',1024);
$table->smallInteger('type');
$table->integer('lifetime');
$table->dateTime('issued');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('openid_associations');
}
}

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
class CreateTrustedSitesTable extends Migration {
public function up()
{
Schema::create('openid_trusted_sites', function($table)
{
$table->bigIncrements('id');
$table->string('realm',255);
$table->string('data',1024);
$table->string('policy',100);
$table->bigInteger("user_id")->unsigned();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('openid_trusted_sites');
}
}

View File

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
class AlterTrustedSitesTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('openid_trusted_sites', function($table)
{
$table->index('user_id');
$table->foreign('user_id')->references('id')->on('openid_users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('openid_trusted_sites', function($table)
{
$table->dropForeign('user_id');
});
}
}

View File

@ -8,6 +8,7 @@
*/
namespace auth;
use openid\services\AuthorizationResponse_;
use openid\services\IAuthService;
use \Auth;
use \Session;
@ -40,15 +41,15 @@ class AuthService implements IAuthService {
return Auth::attempt(array('username' => $username, 'password' => $password), true);
}
/**
* @return mixed
*/
public function isUserAuthorized()
{
return Session::get("authorized_state");
}
public function logout(){
Auth::logout();
}
/**
* @return AuthorizationResponse_*
*/
public function getUserAuthorizationResponse()
{
return Session::get("openid.authorization.response");
}
}

View File

@ -1,35 +0,0 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/15/13
* Time: 12:40 PM
* To change this template use File | Settings | File Templates.
*/
namespace auth;
use Illuminate\Auth\UserInterface;
class CustomUser implements UserInterface{
/**
* Get the unique identifier for the user.
*
* @return mixed
*/
public function getAuthIdentifier()
{
// TODO: Implement getAuthIdentifier() method.
}
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
// TODO: Implement getAuthPassword() method.
}
}

View File

@ -0,0 +1,91 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/15/13
* Time: 12:40 PM
* To change this template use File | Settings | File Templates.
*/
namespace auth;
use Illuminate\Auth\UserInterface;
use openid\model\IOpenIdUser;
class OpenIdUser extends Eloquent implements UserInterface , IOpenIdUser{
/**
* Get the unique identifier for the user.
*
* @return mixed
*/
public function getAuthIdentifier()
{
// TODO: Implement getAuthIdentifier() method.
}
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
// TODO: Implement getAuthPassword() method.
}
public function getIdentifier()
{
// TODO: Implement getIdentifier() method.
}
public function getEmail()
{
// TODO: Implement getEmail() method.
}
public function getFirstName()
{
// TODO: Implement getFirstName() method.
}
public function getLastName()
{
// TODO: Implement getLastName() method.
}
public function getFullName()
{
// TODO: Implement getFullName() method.
}
public function getNickName()
{
// TODO: Implement getNickName() method.
}
public function getGender()
{
// TODO: Implement getGender() method.
}
public function getCountry()
{
// TODO: Implement getCountry() method.
}
public function getLanguage()
{
// TODO: Implement getLanguage() method.
}
public function getTimeZone()
{
// TODO: Implement getTimeZone() method.
}
public function getDateOfBirth()
{
// TODO: Implement getDateOfBirth() method.
}
}

View File

@ -9,16 +9,13 @@
namespace openid;
use openid\exceptions\InvalidOpenIdMessageMode;
class OpenIdMessage implements \ArrayAccess {
protected $container = array();
const OpenID2MessageType="http://specs.openid.net/auth/2.0";
const ModeType = "openid_mode";
const NSType = "openid_ns";
public function __construct(array $values) {
$this->container = $values;
}
@ -45,13 +42,19 @@ class OpenIdMessage implements \ArrayAccess {
public function getMode(){
return $this->container[self::ModeType];
return $this->container[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Mode,"_")];
}
protected function setMode($mode){
if(!OpenIdProtocol::isValidMode($mode))
throw new InvalidOpenIdMessageMode($mode);
$this->container[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Mode)]=$mode;;
}
public function IsValid(){
if (isset($this->container[self::NSType])
&& $this->container[self::NSType] == self::OpenID2MessageType
&& isset($this->container[self::ModeType])){
if (isset($this->container[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_NS,"_")])
&& $this->container[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_NS,"_")] == OpenIdProtocol::OpenID2MessageType
&& isset($this->container[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Mode,"_")])){
return true;
}
return false;

View File

@ -23,8 +23,84 @@ use openid\IOpenIdProtocol;
class OpenIdProtocol implements IOpenIdProtocol {
const OPIdentifierType = "http://specs.openid.net/auth/2.0/server";
const ClaimedIdentifierType = "http://specs.openid.net/auth/2.0/signon";
const OpenIdPrefix = "openid";
//protocol constants
const OPIdentifierType = "http://specs.openid.net/auth/2.0/server";
const ClaimedIdentifierType = "http://specs.openid.net/auth/2.0/signon";
const OpenID2MessageType = "http://specs.openid.net/auth/2.0";
const IdentifierSelectType = "http://specs.openid.net/auth/2.0/identifier_select";
const ImmediateMode = "checkid_immediate";
const SetupMode = "checkid_setup";
const IdMode = "id_res";
const SetupNeededMode = "setup_needed";
const CancelMode = "cancel";
const CheckAuthenticationMode = "check_authentication";
const ErrorMode = "error";
const AssociateMode = "associate";
const SignatureAlgorithmHMAC_SHA1 = "HMAC-SHA1";
const SignatureAlgorithmHMAC_SHA256 = "HMAC-SHA256";
const OpenIDProtocol_Mode = "mode";
const OpenIDProtocol_NS = "ns";
const OpenIDProtocol_ReturnTo = "return_to";
const OpenIDProtocol_ClaimedId = "claimed_id";
const OpenIDProtocol_Identity = "identity";
const OpenIDProtocol_AssocHandle = "assoc_handle";
const OpenIDProtocol_Realm = "realm";
const OpenIDProtocol_OpEndpoint = "op_endpoint";
const OpenIDProtocol_Nonce = "response_nonce";
const OpenIDProtocol_InvalidateHandle = "invalidate_handle";
const OpenIDProtocol_Signed = "signed";
const OpenIDProtocol_Sig = "sig";
const OpenIDProtocol_Error = "error";
const OpenIDProtocol_Contact = "contact";
const OpenIDProtocol_Reference = "reference";
private static $OpenIDProtocol_ValidModes = array(
self::ImmediateMode,
self::SetupMode,
self::IdMode,
self::SetupNeededMode,
self::CancelMode,
self::CheckAuthenticationMode,
self::ErrorMode,
self::AssociateMode,
);
private static $protocol_definition = array(
self::OpenIDProtocol_Mode => self::OpenIDProtocol_Mode,
self::OpenIDProtocol_NS => self::OpenIDProtocol_NS,
self::OpenIDProtocol_ReturnTo => self::OpenIDProtocol_ReturnTo,
self::OpenIDProtocol_ClaimedId => self::OpenIDProtocol_ClaimedId,
self::OpenIDProtocol_Identity => self::OpenIDProtocol_Identity,
self::OpenIDProtocol_AssocHandle => self::OpenIDProtocol_AssocHandle,
self::OpenIDProtocol_Realm => self::OpenIDProtocol_Realm,
self::OpenIDProtocol_OpEndpoint => self::OpenIDProtocol_OpEndpoint,
self::OpenIDProtocol_Nonce => self::OpenIDProtocol_Nonce,
self::OpenIDProtocol_InvalidateHandle => self::OpenIDProtocol_InvalidateHandle,
self::OpenIDProtocol_Signed => self::OpenIDProtocol_Signed,
self::OpenIDProtocol_Sig => self::OpenIDProtocol_Sig,
self::OpenIDProtocol_Error => self::OpenIDProtocol_Error,
self::OpenIDProtocol_Contact => self::OpenIDProtocol_Contact,
self::OpenIDProtocol_Reference => self::OpenIDProtocol_Reference,
);
/**
* check if a provide message mode is valid or not in openid 2.0 protocol
* @param $mode
* @return bool
*/
public static function isValidMode($mode){
return in_array($mode,self::$OpenIDProtocol_ValidModes);
}
public static function param($param, $separator='.'){
return Self::OpenIdPrefix.$separator.self::$protocol_definition[$param];
}
private $server_extension_repository;
private $server_configuration;
@ -33,18 +109,19 @@ class OpenIdProtocol implements IOpenIdProtocol {
public function __construct(IServerConfigurationRepository $server_configuration,IServerExtensionsRepository $server_extension_repository){
$this->server_extension_repository = $server_extension_repository;
$this->server_configuration = $server_configuration;
//create chain of responsibility
$authService = \App::make("openid\\services\\IAuthService");
$mementoRequestService = \App::make("openid\\services\\IMementoOpenIdRequestService");
$auth_strategy = \App::make("openid\\handlers\\IOpenIdAuthenticationStrategy");
$auth_service = \App::make("openid\\services\\IAuthService");
$memento_request_service = \App::make("openid\\services\\IMementoOpenIdRequestService");
$auth_strategy = \App::make("openid\\handlers\\IOpenIdAuthenticationStrategy");
$server_extension_service = \App::make("openid\\services\\IServerExtensionsService");
$association_service = \App::make("openid\\services\\IAssociationService");
$trusted_sites_service = \App::make("openid\\services\\ITrustedSitesService");
$successor = new OpenIdSessionAssociationRequestHandler(new OpenIdCheckAuthenticationRequestHandler(null));
$this->request_handlers = new OpenIdAuthenticationRequestHandler($authService,$mementoRequestService,$auth_strategy,$successor);
$successor = new OpenIdSessionAssociationRequestHandler(new OpenIdCheckAuthenticationRequestHandler(null));
$this->request_handlers = new OpenIdAuthenticationRequestHandler($auth_service,$memento_request_service,$auth_strategy,$server_extension_service,$association_service,$trusted_sites_service,$successor);
}
public function getXRDSDiscovery(){
$active_extensions = $this->server_extension_repository->GetAllExtensions();
$extensions = array();
foreach($active_extensions as $ext){

View File

@ -0,0 +1,20 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 10:35 AM
* To change this template use File | Settings | File Templates.
*/
namespace openid\exceptions;
use \Exception;
class InvalidOpenIdAuthenticationRequestMode extends Exception{
public function __construct($message = "") {
$message = "InvalidOpenIdAuthenticationRequestMode : ".$message;
parent::__construct($message, 0 , null);
}
}

View File

@ -0,0 +1,20 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 3:19 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\exceptions;
use \Exception;
class InvalidOpenIdMessageMode extends Exception{
public function __construct($message = "") {
$message = "InvalidOpenIdMessageMode : ".$message;
parent::__construct($message, 0 , null);
}
}

View File

@ -0,0 +1,20 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 4:00 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\exceptions;
use \Exception;
class InvalidRequestContextException extends Exception{
public function __construct($message = "") {
$message = "InvalidRequestContextException : ".$message;
parent::__construct($message, 0 , null);
}
}

View File

@ -0,0 +1,21 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 2:29 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\extensions;
use openid\requests\OpenIdRequest;
use openid\requests\contexts\RequestContext;
use openid\responses\OpenIdResponse;
use openid\responses\contexts\ResponseContext;
interface IOpenIdExtension {
public function apply(OpenIdRequest $request,RequestContext $context);
public function transform(OpenIdRequest $request,OpenIdResponse $response ,ResponseContext $context);
}

View File

@ -0,0 +1,30 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 2:41 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\extensions\implementations;
use openid\extensions\IOpenIdExtension;
use openid\requests\contexts\RequestContext;
use openid\requests\OpenIdRequest;
use openid\responses\contexts\ResponseContext;
use openid\responses\OpenIdResponse;
class OpenIdAXExtension implements IOpenIdExtension {
public function apply(OpenIdRequest $request, RequestContext $context)
{
// TODO: Implement apply() method.
}
public function transform(OpenIdRequest $request, OpenIdResponse $response, ResponseContext $context)
{
// TODO: Implement transform() method.
}
}

View File

@ -0,0 +1,28 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 2:43 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\extensions\implementations;
use openid\extensions\IOpenIdExtension;
use openid\requests\contexts\RequestContext;
use openid\requests\OpenIdRequest;
use openid\responses\contexts\ResponseContext;
use openid\responses\OpenIdResponse;
class OpenIdOAuthExtension implements IOpenIdExtension {
public function apply(OpenIdRequest $request, RequestContext $context)
{
// TODO: Implement apply() method.
}
public function transform(OpenIdRequest $request, OpenIdResponse $response, ResponseContext $context)
{
// TODO: Implement transform() method.
}
}

View File

@ -0,0 +1,28 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 2:42 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\extensions\implementations;
use openid\extensions\IOpenIdExtension;
use openid\requests\contexts\RequestContext;
use openid\requests\OpenIdRequest;
use openid\responses\contexts\ResponseContext;
use openid\responses\OpenIdResponse;
class OpenIdPAPEExtension implements IOpenIdExtension {
public function apply(OpenIdRequest $request, RequestContext $context)
{
// TODO: Implement apply() method.
}
public function transform(OpenIdRequest $request, OpenIdResponse $response, ResponseContext $context)
{
// TODO: Implement transform() method.
}
}

View File

@ -0,0 +1,29 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 2:42 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\extensions\implementations;
use openid\extensions\IOpenIdExtension;
use openid\requests\contexts\RequestContext;
use openid\requests\OpenIdRequest;
use openid\responses\contexts\ResponseContext;
use openid\responses\OpenIdResponse;
class OpenIdSREGExtension implements IOpenIdExtension
{
public function apply(OpenIdRequest $request, RequestContext $context)
{
// TODO: Implement apply() method.
}
public function transform(OpenIdRequest $request, OpenIdResponse $response, ResponseContext $context)
{
// TODO: Implement transform() method.
}
}

View File

@ -9,9 +9,10 @@
namespace openid\handlers;
use openid\requests\OpenIdAuthenticationRequest;
use openid\requests\contexts\RequestContext;
interface IOpenIdAuthenticationStrategy {
public function doLogin(OpenIdAuthenticationRequest $request);
public function doConsent(OpenIdAuthenticationRequest $request);
public function doLogin(OpenIdAuthenticationRequest $request,RequestContext $context);
public function doConsent(OpenIdAuthenticationRequest $request,RequestContext $context);
}

View File

@ -9,11 +9,28 @@
namespace openid\handlers;
use openid\OpenIdMessage;
use openid\OpenIdProtocol;
use openid\requests\OpenIdAuthenticationRequest;
use openid\services\IAuthService;
use openid\services\IMementoOpenIdRequestService;
use openid\services\IServerExtensionsService;
use openid\services\IAssociationService;
use openid\requests\contexts\RequestContext;
use openid\responses\contexts\ResponseContext;
use openid\exceptions\InvalidOpenIdAuthenticationRequestMode;
use openid\responses\OpenIdNonImmediateNegativeAssertion;
use openid\responses\OpenIdImmediateNegativeAssertion;
use openid\services\ITrustedSitesService;
use openid\responses\OpenIdIndirectResponse;
use openid\exceptions\OpenIdIndirectGenericErrorResponse;
use openid\helpers\OpenIdErrorMessages;
use openid\helpers\OpenIdCryptoHelper;
use openid\model\IAssociation;
use openid\responses\OpenIdPositiveAssertionResponse;
use openid\services\IServerConfigurationService;
use openid\helpers\OpenIdSignatureBuilder;
/**
* Class OpenIdAuthenticationRequestHandler
* @package openid\handlers
@ -23,38 +40,160 @@ class OpenIdAuthenticationRequestHandler extends OpenIdMessageHandler
private $authService;
private $mementoRequestService;
private $auth_strategy;
private $server_extensions_service;
private $association_service;
private $trusted_sites_service;
private $server_configuration_service;
public function __construct(IAuthService $authService,
IMementoOpenIdRequestService $mementoRequestService,
IOpenIdAuthenticationStrategy $auth_strategy, $successor)
IOpenIdAuthenticationStrategy $auth_strategy,
IServerExtensionsService $server_extensions_service,
IAssociationService $association_service,
ITrustedSitesService $trusted_sites_service,
IServerConfigurationService $server_configuration_service,
$successor)
{
parent::__construct($successor);
$this->authService = $authService;
$this->mementoRequestService = $mementoRequestService;
$this->auth_strategy = $auth_strategy;
$this->authService = $authService;
$this->mementoRequestService = $mementoRequestService;
$this->auth_strategy = $auth_strategy;
$this->server_extensions_service = $server_extensions_service;
$this->association_service = $association_service;
$this->trusted_sites_service = $trusted_sites_service;
$this->server_configuration_service = $server_configuration_service;
}
private function doAssertion(OpenIdAuthenticationRequest $request,$extensions){
$currentUser = $this->authService->getCurrentUser();
$context = new ResponseContext;
$op_endpoint = $this->server_configuration_service->getOPEndpointURL();
$identity = $currentUser->getIdentifier();
$response = new OpenIdPositiveAssertionResponse($op_endpoint,$identity,$identity,$request->getReturnTo());
foreach($extensions as $ext){
$ext->transform($request,$response,$context);
}
//check former assoc handle...
$assoc_handle = $request->getAssocHandle();
$association = $this->association_service->getAssociation($assoc_handle);
if(empty($assoc_handle) || is_null($association)){
// if not present or if it already void then enter on dumb mode
$new_secret = OpenIdCryptoHelper::generateSecret(OpenIdProtocol::SignatureAlgorithmHMAC_SHA256);
$new_handle = uniqid();
//todo: get from somewhere?
$lifetime = 120;
$issued = gmdate("Y-m-d H:i:s", time());
$this->association_service->addAssociation($new_handle,$new_secret,$lifetime,$issued,IAssociation::TypePrivate);
$response->setAssocHandle($new_handle);
if(!empty($assoc_handle)){
$response->setInvalidateHandle($assoc_handle);
}
$association = $this->association_service->getAssociation($new_handle);
}
else{
$response->setAssocHandle($assoc_handle);
}
OpenIdSignatureBuilder::build($context,$association->getMacFunction(),$association->getSecret(),$response);
return $response;
}
protected function InternalHandle(OpenIdMessage $message)
{
$request = new OpenIdAuthenticationRequest($message);
//validate request?
if(!$this->authService->isUserLogged()){
//do login process
$this->mementoRequestService->saveCurrentRequest();
return $this->auth_strategy->doLogin($request);
}
else {
//user already logged
$currentUser = $this->authService->getCurrentUser();
if($this->authService->isUserAuthorized()){
// make assertion about identity
// factory response and return
$request = new OpenIdAuthenticationRequest($message);
$extensions = $this->server_extensions_service->getAllActiveExtensions();
$context = new RequestContext;
$mode = $request->getMode();
switch($mode){
case OpenIdProtocol::SetupMode:
{
if(!$this->authService->isUserLogged()){
//do login process
$context->setStage(RequestContext::StageLogin);
foreach($extensions as $ext){
$ext->apply($request,$context);
}
$this->mementoRequestService->saveCurrentRequest();
return $this->auth_strategy->doLogin($request,$context);
}
else {
//user already logged
$currentUser = $this->authService->getCurrentUser();
$site = $this->trusted_sites_service->getTrustedSite($currentUser,$request->getTrustedRoot());
$authorization_response = $this->authService->getUserAuthorizationResponse();
if($authorization_response == IAuthService::AuthorizationResponse_None){
if(is_null($site)){
//do consent process
$this->mementoRequestService->saveCurrentRequest();
$context->setStage(RequestContext::StageConsent);
foreach($extensions as $ext){
$ext->apply($request,$context);
}
$this->auth_strategy->doConsent($request,$context);
}
else{
$policy = $site->getAuthorizationPolicy();
switch($policy){
case IAuthService::AuthorizationResponse_AllowForever:
return $this->doAssertion($request,$extensions);
break;
case IAuthService::AuthorizationResponse_DenyForever:
// black listed site
return new OpenIdIndirectGenericErrorResponse(sprintf(OpenIdErrorMessages::RealmNotAllowedByUserMessage,$site->getRealm()));
break;
default:
throw new \Exception("Invalid Realm Policy");
break;
}
}
}
else {
// check response
switch ($authorization_response){
case IAuthService::AuthorizationResponse_AllowForever:
$this->trusted_sites_service->addTrustedSite($currentUser,$request->getTrustedRoot(),IAuthService::AuthorizationResponse_AllowForever);
return $this->doAssertion($request,$extensions);
break;
case IAuthService::AuthorizationResponse_AllowOnce:
return $this->doAssertion($request,$extensions);
break;
case IAuthService::AuthorizationResponse_DenyOnce:
return new OpenIdNonImmediateNegativeAssertion;
break;
case IAuthService::AuthorizationResponse_DenyForever:
$this->trusted_sites_service->addTrustedSite($currentUser,$request->getTrustedRoot(),IAuthService::AuthorizationResponse_DenyForever);
return new OpenIdNonImmediateNegativeAssertion;
break;
default:
throw new \Exception("Invalid Authorization response!");
break;
}
}
}
}
else{
//do consent process
$this->mementoRequestService->saveCurrentRequest();
$this->auth_strategy->doConsent($request);
break;
case OpenIdProtocol::ImmediateMode:
{
if(!$this->authService->isUserLogged()){
return new OpenIdImmediateNegativeAssertion;
}
$currentUser = $this->authService->getCurrentUser();
$site = $this->trusted_sites_service->getTrustedSite($currentUser,$request->getTrustedRoot());
if(is_null($site)){
return new OpenIdImmediateNegativeAssertion;
}
$policy = $site->getAuthorizationPolicy();
if($policy == IAuthService::AuthorizationResponse_DenyForever){
// black listed site
return new OpenIdIndirectGenericErrorResponse(sprintf(OpenIdErrorMessages::RealmNotAllowedByUserMessage,$site->getRealm()));
}
return $this->doAssertion($request,$extensions);
}
break;
default:
throw new InvalidOpenIdAuthenticationRequestMode;
break;
}
}

View File

@ -1,15 +0,0 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/14/13
* Time: 6:33 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\handlers;
class OpenIdVoidRequestHandler {
}

View File

@ -0,0 +1,124 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 5:01 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\helpers;
use openid\OpenIdProtocol;
use Zend\Math\Rand;
class OpenIdCryptoHelper
{
public static function generateSecret($func)
{
if ($func == OpenIdProtocol::SignatureAlgorithmHMAC_SHA1) {
$macLen = 20; /* 160 bit */
} else if ($func == OpenIdProtocol::SignatureAlgorithmHMAC_SHA256) {
$macLen = 32; /* 256 bit */
} else {
return false;
}
return self::randomBytes($macLen);
}
/**
* Produces string of random byte of given length.
*
* @param integer $len length of requested string
* @return string RAW random binary string
*/
static public function randomBytes($len)
{
Rand::getBytes($len,true);
}
static public function computeHMAC($macFunc, $data, $secret)
{
if (function_exists('hash_hmac')) {
return hash_hmac($macFunc, $data, $secret, 1);
} else {
if (self::strlen($secret) > 64) {
$secret = self::digest($macFunc, $secret);
}
$secret = str_pad($secret, 64, chr(0x00));
$ipad = str_repeat(chr(0x36), 64);
$opad = str_repeat(chr(0x5c), 64);
$hash1 = self::digest($macFunc, ($secret ^ $ipad) . $data);
return self::digest($macFunc, ($secret ^ $opad) . $hash1);
}
}
/**
* Returns lenght of binary string in bytes
*
* @param string $str
* @return int the string lenght
*/
static public function strlen($str)
{
if (extension_loaded('mbstring') &&
(((int)ini_get('mbstring.func_overload')) & 2)
) {
return mb_strlen($str, 'latin1');
} else {
return strlen($str);
}
}
/**
* Generates a hash value (message digest) according to given algorithm.
* It returns RAW binary string.
*
* This is a wrapper function that uses one of available internal function
* dependent on given PHP configuration. It may use various functions from
* ext/openssl, ext/hash, ext/mhash or ext/standard.
*
* @param string $func digest algorithm
* @param string $data data to sign
* @return string RAW digital signature
* @throws \Exception
*/
static public function digest($func, $data)
{
if (function_exists('openssl_digest')) {
return openssl_digest($data, $func, true);
} else if (function_exists('hash')) {
return hash($func, $data, true);
} else if ($func === 'sha1') {
return sha1($data, true);
} else if ($func === 'sha256') {
if (function_exists('mhash')) {
return mhash(MHASH_SHA256, $data);
}
}
throw new \Exception('Unsupported digest algorithm "' . $func . '".');
}
/**
* Takes an arbitrary precision integer and returns its shortest big-endian
* two's complement representation.
*
* Arbitrary precision integers MUST be encoded as big-endian signed two's
* complement binary strings. Henceforth, "btwoc" is a function that takes
* an arbitrary precision integer and returns its shortest big-endian two's
* complement representation. All integers that are used with
* Diffie-Hellman Key Exchange are positive. This means that the left-most
* bit of the two's complement representation MUST be zero. If it is not,
* implementations MUST add a zero byte at the front of the string.
*
* @param string $str binary representation of arbitrary precision integer
* @return string big-endian signed representation
*/
static public function btwoc($str)
{
if (ord($str[0]) > 127) {
return "\0" . $str;
}
return $str;
}
}

View File

@ -0,0 +1,15 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 4:39 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\helpers;
class OpenIdErrorMessages {
const RealmNotAllowedByUserMessage = "Realm %s is not authorized by user";
}

View File

@ -0,0 +1,39 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 5:26 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\helpers;
use openid\responses\contexts\ResponseContext;
use openid\responses\OpenIdPositiveAssertionResponse;
class OpenIdSignatureBuilder {
public static function build(ResponseContext $context,$macAlg,$secret,OpenIdPositiveAssertionResponse &$response){
//do signing ...
$signed = '';
$data = '';
$params = $context->getSignParams();
foreach($params as $key => $val){
if (strpos($key, 'openid.') === 0) {
$key = substr($key, strlen('openid.'));
if (!empty($signed)) {
$signed .= ',';
}
$signed .= $key;
$data .= $key . ':' . $val . "\n";
}
}
$signed .= ',signed';
$data .= 'signed:' . $signed . "\n";
$sig = base64_encode(OpenIdCryptoHelper::computeHMAC($macAlg, $data, $secret));
$response->setSigned($signed);
$response->setSig($sig);
}
}

View File

@ -0,0 +1,214 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 4:10 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\helpers;
class OpenIdUriHelper {
/**
* Returns an absolute URL for the given one
*
* @param string $url absilute or relative URL
* @return string
*/
static public function absoluteUrl($url)
{
if (empty($url)) {
return Zend_OpenId::selfUrl();
} else if (!preg_match('|^([^:]+)://|', $url)) {
if (preg_match('|^([^:]+)://([^:@]*(?:[:][^@]*)?@)?([^/:@?#]*)(?:[:]([^/?#]*))?(/[^?]*)?((?:[?](?:[^#]*))?(?:#.*)?)$|', Zend_OpenId::selfUrl(), $reg)) {
$scheme = $reg[1];
$auth = $reg[2];
$host = $reg[3];
$port = $reg[4];
$path = $reg[5];
$query = $reg[6];
if ($url[0] == '/') {
return $scheme
. '://'
. $auth
. $host
. (empty($port) ? '' : (':' . $port))
. $url;
} else {
$dir = dirname($path);
return $scheme
. '://'
. $auth
. $host
. (empty($port) ? '' : (':' . $port))
. (strlen($dir) > 1 ? $dir : '')
. '/'
. $url;
}
}
}
return $url;
}
/**
* Normalizes URL according to RFC 3986 to use it in comparison operations.
* The function gets URL argument by reference and modifies it.
* It returns true on success and false of failure.
*
* @param string &$id url to be normalized
* @return bool
*/
static public function normalizeUrl(&$id)
{
// RFC 3986, 6.2.2. Syntax-Based Normalization
// RFC 3986, 6.2.2.2 Percent-Encoding Normalization
$i = 0;
$n = strlen($id);
$res = '';
while ($i < $n) {
if ($id[$i] == '%') {
if ($i + 2 >= $n) {
return false;
}
++$i;
if ($id[$i] >= '0' && $id[$i] <= '9') {
$c = ord($id[$i]) - ord('0');
} else if ($id[$i] >= 'A' && $id[$i] <= 'F') {
$c = ord($id[$i]) - ord('A') + 10;
} else if ($id[$i] >= 'a' && $id[$i] <= 'f') {
$c = ord($id[$i]) - ord('a') + 10;
} else {
return false;
}
++$i;
if ($id[$i] >= '0' && $id[$i] <= '9') {
$c = ($c << 4) | (ord($id[$i]) - ord('0'));
} else if ($id[$i] >= 'A' && $id[$i] <= 'F') {
$c = ($c << 4) | (ord($id[$i]) - ord('A') + 10);
} else if ($id[$i] >= 'a' && $id[$i] <= 'f') {
$c = ($c << 4) | (ord($id[$i]) - ord('a') + 10);
} else {
return false;
}
++$i;
$ch = chr($c);
if (($ch >= 'A' && $ch <= 'Z') ||
($ch >= 'a' && $ch <= 'z') ||
$ch == '-' ||
$ch == '.' ||
$ch == '_' ||
$ch == '~') {
$res .= $ch;
} else {
$res .= '%';
if (($c >> 4) < 10) {
$res .= chr(($c >> 4) + ord('0'));
} else {
$res .= chr(($c >> 4) - 10 + ord('A'));
}
$c = $c & 0xf;
if ($c < 10) {
$res .= chr($c + ord('0'));
} else {
$res .= chr($c - 10 + ord('A'));
}
}
} else {
$res .= $id[$i++];
}
}
if (!preg_match('|^([^:]+)://([^:@]*(?:[:][^@]*)?@)?([^/:@?#]*)(?:[:]([^/?#]*))?(/[^?#]*)?((?:[?](?:[^#]*))?)((?:#.*)?)$|', $res, $reg)) {
return false;
}
$scheme = $reg[1];
$auth = $reg[2];
$host = $reg[3];
$port = $reg[4];
$path = $reg[5];
$query = $reg[6];
$fragment = $reg[7]; /* strip it */ /* ZF-4358 Fragment retained under OpenID 2.0 */
if (empty($scheme) || empty($host)) {
return false;
}
// RFC 3986, 6.2.2.1. Case Normalization
$scheme = strtolower($scheme);
$host = strtolower($host);
// RFC 3986, 6.2.2.3. Path Segment Normalization
if (!empty($path)) {
$i = 0;
$n = strlen($path);
$res = "";
while ($i < $n) {
if ($path[$i] == '/') {
++$i;
while ($i < $n && $path[$i] == '/') {
++$i;
}
if ($i < $n && $path[$i] == '.') {
++$i;
if ($i < $n && $path[$i] == '.') {
++$i;
if ($i == $n || $path[$i] == '/') {
if (($pos = strrpos($res, '/')) !== false) {
$res = substr($res, 0, $pos);
}
} else {
$res .= '/..';
}
} else if ($i != $n && $path[$i] != '/') {
$res .= '/.';
}
} else {
$res .= '/';
}
} else {
$res .= $path[$i++];
}
}
$path = $res;
}
// RFC 3986,6.2.3. Scheme-Based Normalization
if ($scheme == 'http') {
if ($port == 80) {
$port = '';
}
} else if ($scheme == 'https') {
if ($port == 443) {
$port = '';
}
}
if (empty($path)) {
$path = '/';
}
$id = $scheme
. '://'
. $auth
. $host
. (empty($port) ? '' : (':' . $port))
. $path
. $query
. $fragment;
return true;
}
static public function checkRealmWildcard($root,$realm){
$n = strpos($realm, '://*.');
if ($n != false) {
$regex = '/^'. preg_quote(substr($realm, 0, $n+3), '/'). '[A-Za-z1-9_\.]+?'. preg_quote(substr($realm, $n+4), '/'). '/';
if (preg_match($regex, $root)) {
return true;
}
}
return false;
}
}

View File

@ -0,0 +1,35 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 10:41 AM
* To change this template use File | Settings | File Templates.
*/
namespace openid\model;
interface IAssociation {
const TypePrivate = "Private";
const TypeSession = "Session";
public function getMacFunction();
public function setMacFunction($mac_function);
public function getSecret();
public function setSecret($secret);
public function getLifetime();
public function setLifetime($lifetime);
public function getIssued();
public function setIssued($issued);
public function getType();
public function setType($type);
public function IsExpired();
}

View File

@ -0,0 +1,26 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 3:55 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\model;
interface IOpenIdUser {
public function getIdentifier();
public function getEmail();
public function getFirstName();
public function getLastName();
public function getFullName();
public function getNickName();
public function getGender();
public function getCountry();
public function getLanguage();
public function getTimeZone();
public function getDateOfBirth();
}

View File

@ -0,0 +1,25 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 3:58 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\model;
interface ITrustedSite {
public function setRealm($realm);
public function getRealm();
public function setData($data);
public function getData();
public function getUser();
public function getAuthorizationPolicy();
public function setAuthorizationPolicy($policy);
}

View File

@ -12,7 +12,7 @@ namespace openid\repositories;
interface IServerExtensionsRepository {
/**
* @return all active server extensions
* @return array of IOpenIdExtension
*/
public function GetAllExtensions();
public function getAllActiveExtensions();
}

View File

@ -8,44 +8,53 @@
*/
namespace openid\requests;
use openid\requests\OpenIdRequest;
use openid\OpenIdMessage;
use openid\OpenIdProtocol;
use openid\helpers\OpenIdUriHelper;
class OpenIdAuthenticationRequest extends OpenIdRequest{
const IdentifierSelectType = "http://specs.openid.net/auth/2.0/identifier_select";
const ImmediateMode = "checkid_immediate";
const SetupMode = "checkid_setup";
const ClaimedIdType = "openid_claimed_id";
const IdentityType = "openid_identity";
const AssocHandleType = "openid_assoc_handle";
const ReturnToType = "openid_return_to";
const RealmType = "openid_realm";
public static function IsOpenIdAuthenticationRequest(OpenIdMessage $message){
$mode = $message->getMode();
if($mode==self::ImmediateMode || $mode==self::SetupMode) return true;
if($mode==OpenIdProtocol::ImmediateMode || $mode==OpenIdProtocol::SetupMode) return true;
return false;
}
public function getClaimedId(){
return isset($this->message[self::ClaimedIdType])?$this->message[self::ClaimedIdType]:null;
return isset($this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ClaimedId,"_")])?$this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ClaimedId,"_")]:null;
}
public function getIdentity(){
return isset($this->message[self::IdentityType])?$this->message[self::IdentityType]:null;
return isset($this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Identity,"_")])?$this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Identity,"_")]:null;
}
public function getAssocHandle(){
return isset($this->message[self::AssocHandleType])?$this->message[self::AssocHandleType]:null;
return isset($this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_AssocHandle,"_")])?$this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_AssocHandle,"_")]:null;
}
public function getReturnTo(){
return isset($this->message[self::ReturnToType])?$this->message[self::ReturnToType]:null;
return isset($this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ReturnTo,"_")])?$this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ReturnTo,"_")]:null;
}
public function getRealm(){
return isset($this->message[self::RealmType])?$this->message[self::RealmType]:null;
return isset($this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Realm,"_")])?$this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Realm,"_")]:null;
}
public function getTrustedRoot() {
if (isset($this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Realm,"_")])) {
$root = $this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Realm,"_")];
} else if (isset($this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ReturnTo,"_")])) {
$root = $this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ReturnTo,"_")];
} else {
return null;
}
if (OpenIdUriHelper::normalizeUrl($root) && !empty($root)) {
return $root;
}
return null;
}
public function IsValid(){
@ -55,9 +64,9 @@ class OpenIdAuthenticationRequest extends OpenIdRequest{
$mode = $this->getMode();
//todo: validate url(format-regex) - white list /black list?
return !empty($return_to)
&& !empty($claimed_id) && $claimed_id==self::IdentifierSelectType
&& !empty($identity) && $identity==self::IdentifierSelectType
&& !empty($mode) && ($mode == self::ImmediateMode || $mode == self::SetupMode);
&& !empty($claimed_id) && $claimed_id == OpenIdProtocol::IdentifierSelectType
&& !empty($identity) && $identity == OpenIdProtocol::IdentifierSelectType
&& !empty($mode) && ($mode == OpenIdProtocol::ImmediateMode || $mode == OpenIdProtocol::SetupMode);
}
}

View File

@ -0,0 +1,30 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 2:33 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\requests\contexts;
use \string;
class PartialView {
private $name;
private $data;
public function __construct($name,array $data = null){
$this->name = $name;
$this->data = $data;
}
public function getData(){
return $this->data;
}
public function getName(){
return $this->name;
}
}

View File

@ -0,0 +1,48 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 2:31 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\requests\contexts;
class RequestContext
{
private $partial_views;
const StageNull = -1;
const StageLogin = 0;
const StageConsent = 1;
private $stage;
public function __construct()
{
$this->partial_views = array();
$this->stage = self::StageNull;
}
public function addPartialView(PartialView $partial_view)
{
$this->partial_views[$partial_view->getName()] = $partial_view;
}
public function getPartials()
{
return $this->partial_views;
}
public function setStage($stage)
{
$this->stage = $stage;
}
public function getStage()
{
return $this->stage;
}
}

View File

@ -9,7 +9,7 @@
namespace openid\responses;
use openid\responses\OpenIdDirectResponse;
use openid\OpenIdProtocol;
/**
* Class OpenIdDirectGenericErrorResponse
* implements 5.1.2.2. Error Responses
@ -27,11 +27,11 @@ class OpenIdDirectGenericErrorResponse extends OpenIdDirectResponse {
public function __construct($error, $contact=null, $reference=null){
parent::__construct();
$this->setHttpCode(self::HttpErrorResponse);
$this["error"] = $error;
$this[OpenIdProtocol::OpenIDProtocol_Error] = $error;
//opt values
if(!is_null($contact))
$this["contact"] = $contact;
$this[OpenIdProtocol::OpenIDProtocol_Contact] = $contact;
if(!is_null($reference))
$this["reference"] = $reference;
$this[OpenIdProtocol::OpenIDProtocol_Reference] = $reference;
}
}

View File

@ -0,0 +1,21 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 3:16 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\responses;
use openid\OpenIdProtocol;
class OpenIdImmediateNegativeAssertion extends OpenIdIndirectResponse{
public function __construct(){
parent::__construct();
$this->setMode(OpenIdProtocol::SetupNeededMode);
}
}

View File

@ -0,0 +1,28 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 4:32 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\responses;
use openid\OpenIdProtocol;
class OpenIdIndirectGenericErrorResponse extends OpenIdIndirectResponse {
public function __construct($error,$contact,$reference){
parent::__construct();
$this->setHttpCode(self::HttpErrorResponse);
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Error)] = $error;
//opt values
if(!is_null($contact))
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Contact)] = $contact;
if(!is_null($reference))
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Reference)] = $reference;
}
}

View File

@ -8,9 +8,10 @@
*/
namespace openid\responses;
use openid\OpenIdProtocol;
use openid\responses\OpenIdResponse;
class OpenIdIndirectResponse extends OpenIdResponse{
class OpenIdIndirectResponse extends OpenIdResponse {
const IndirectResponseContentType ="application/x-www-form-urlencoded";
@ -23,7 +24,7 @@ class OpenIdIndirectResponse extends OpenIdResponse{
* response. Future versions of the specification may define different values in order
* to allow message recipients to properly interpret the request.
*/
$this["openid.ns"] = self::OpenId2ResponseType;
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_NS)] = OpenIdProtocol::OpenID2MessageType;
}
@ -48,4 +49,12 @@ class OpenIdIndirectResponse extends OpenIdResponse{
{
return "indirect";
}
public function setReturnTo($return_to){
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ReturnTo)] = $return_to;
}
public function getReturnTo(){
return $this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ReturnTo)];
}
}

View File

@ -0,0 +1,19 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 3:16 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\responses;
use openid\OpenIdProtocol;
class OpenIdNonImmediateNegativeAssertion extends OpenIdIndirectResponse {
public function __construct(){
$this->setMode(OpenIdProtocol::CancelMode);
}
}

View File

@ -0,0 +1,45 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 3:15 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\responses;
use openid\OpenIdProtocol;
class OpenIdPositiveAssertionResponse extends OpenIdIndirectResponse {
public function __construct($op_endpoint,$claimed_id,$identity,$return_to){
$this->setMode(OpenIdProtocol::IdMode);
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_OpEndpoint)] = $op_endpoint;
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ClaimedId)] = $claimed_id;
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Identity)] = $identity;
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ReturnTo)] = $return_to;
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Nonce)] = $this->generateNonce();
}
public function setAssocHandle($assoc_handle){
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_AssocHandle)] = $assoc_handle;
}
public function setSigned($signed){
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Signed)] = $signed;
}
public function setSig($sig){
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Sig)] = $sig;
}
public function setInvalidateHandle($invalidate_handle){
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_InvalidateHandle)] = $invalidate_handle;
}
private function generateNonce(){
return gmdate('Y-m-d\TH:i:s\Z') . uniqid();
}
}

View File

@ -14,7 +14,7 @@ abstract class OpenIdResponse extends OpenIdMessage {
const HttpOkResponse = 200;
const HttpErrorResponse = 400;
const OpenId2ResponseType = "http://specs.openid.net/auth/2.0";
protected $http_code;
protected $content_type;
@ -39,4 +39,9 @@ abstract class OpenIdResponse extends OpenIdMessage {
}
abstract public function getType();
public function addParam($name,$value){
//todo: validate if $name is a valid openid 2.0 param name?
$this[$name] = $value;
}
}

View File

@ -0,0 +1,33 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 2:38 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\responses\contexts;
class ResponseContext
{
private $sign_params;
public function __construct()
{
$this->sign_params = array();
}
public function addSignParam(string $param)
{
array_push($this->sign_params, $param);
}
public function getSignParams()
{
ksort($this->sign_params);
return $this->sign_params;
}
}

View File

@ -0,0 +1,31 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 10:39 AM
* To change this template use File | Settings | File Templates.
*/
namespace openid\services;
use openid\model\IAssociation;
interface IAssociationService {
/**
* @param $handle
* @return IAssociation
*/
public function getAssociation($handle);
/**
* @param IAssociation $association
* @return bool
*/
public function addAssociation($handle,$secret,$type,$lifetime,$issued);
/**
* @param $handle
* @return bool
*/
public function deleteAssociation($handle);
}

View File

@ -8,16 +8,16 @@
*/
namespace openid\services;
use openid\model\IOpenIdUser;
interface IAuthService {
/**
* @return mixed
* @return bool
*/
public function isUserLogged();
/**
* @return mixed
* @return IOpenIdUser
*/
public function getCurrentUser();
@ -28,10 +28,15 @@ interface IAuthService {
*/
public function Login($username,$password);
const AuthorizationResponse_None = "None";
const AuthorizationResponse_AllowOnce = "AllowOnce";
const AuthorizationResponse_AllowForever = "AllowForever";
const AuthorizationResponse_DenyForever = "DenyForever";
const AuthorizationResponse_DenyOnce = "DenyOnce";
/**
* @return mixed
* @return AuthorizationResponse_*
*/
public function isUserAuthorized();
public function getUserAuthorizationResponse();
public function logout();
}

View File

@ -0,0 +1,15 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 5:16 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\services;
interface IServerConfigurationService {
public function getOPEndpointURL();
}

View File

@ -0,0 +1,15 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 3:45 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\services;
interface IServerExtensionsService {
public function getAllActiveExtensions();
}

View File

@ -0,0 +1,23 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 3:54 PM
* To change this template use File | Settings | File Templates.
*/
namespace openid\services;
use openid\model\IOpenIdUser;
use openid\model\ITrustedSite;
interface ITrustedSitesService {
public function addTrustedSite(IOpenIdUser $user,$realm,$policy,$data=array());
public function delTrustedSite($realm);
/**
* @param IOpenIdUser $user
* @param $return_to
* @return ITrustedSite
*/
public function getTrustedSite(IOpenIdUser $user,$return_to);
}

View File

@ -9,8 +9,6 @@
namespace openid\strategies;
use openid\responses\OpenIdResponse;
interface IOpenIdResponseStrategy {
public function handle(OpenIdResponse $response);
public function handle($response);
}

View File

@ -0,0 +1,67 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 6:08 PM
* To change this template use File | Settings | File Templates.
*/
use openid\model\IAssociation;
class OpenIdAssociation extends Eloquent implements IAssociation{
public function getMacFunction()
{
// TODO: Implement getMacFunction() method.
}
public function setMacFunction($mac_function)
{
// TODO: Implement setMacFunction() method.
}
public function getSecret()
{
// TODO: Implement getSecret() method.
}
public function setSecret($secret)
{
// TODO: Implement setSecret() method.
}
public function getLifetime()
{
// TODO: Implement getLifetime() method.
}
public function setLifetime($lifetime)
{
// TODO: Implement setLifetime() method.
}
public function getIssued()
{
// TODO: Implement getIssued() method.
}
public function setIssued($issued)
{
// TODO: Implement setIssued() method.
}
public function getType()
{
// TODO: Implement getType() method.
}
public function setType($type)
{
// TODO: Implement setType() method.
}
public function IsExpired()
{
// TODO: Implement IsExpired() method.
}
}

View File

@ -0,0 +1,47 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/17/13
* Time: 6:11 PM
* To change this template use File | Settings | File Templates.
*/
use openid\model\ITrustedSite;
class OpenIdTrustedSite extends Eloquent implements ITrustedSite{
public function setRealm($realm)
{
// TODO: Implement setRealm() method.
}
public function getRealm()
{
// TODO: Implement getRealm() method.
}
public function setData($data)
{
// TODO: Implement setData() method.
}
public function getData()
{
// TODO: Implement getData() method.
}
public function getUser()
{
// TODO: Implement getUser() method.
}
public function getAuthorizationPolicy()
{
// TODO: Implement getAuthorizationPolicy() method.
}
public function setAuthorizationPolicy($policy)
{
// TODO: Implement setAuthorizationPolicy() method.
}
}

View File

@ -1,52 +0,0 @@
<?php
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;
class User extends Eloquent implements UserInterface, RemindableInterface {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('password');
/**
* Get the unique identifier for the user.
*
* @return mixed
*/
public function getAuthIdentifier()
{
return $this->getKey();
}
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
return $this->password;
}
/**
* Get the e-mail address where password reminders are sent.
*
* @return string
*/
public function getReminderEmail()
{
return $this->email;
}
}

View File

@ -17,7 +17,7 @@ class ServerExtensionsRepositoryEloquent implements IServerExtensionsRepository
/**
* @return all active server extensions
*/
public function GetAllExtensions()
public function getAllActiveExtensions()
{
$extensions = array();

View File

@ -12,15 +12,17 @@ namespace services;
use openid\handlers\IOpenIdAuthenticationStrategy;
use openid\requests\OpenIdAuthenticationRequest;
use \Redirect;
use openid\requests\contexts\RequestContext;
class AuthenticationStrategy implements IOpenIdAuthenticationStrategy{
public function doLogin(OpenIdAuthenticationRequest $request)
public function doLogin(OpenIdAuthenticationRequest $request,RequestContext $context)
{
return Redirect::action('UserController@getLogin');
return Redirect::action('UserController@getLogin')->with('context', $context);
}
public function doConsent(OpenIdAuthenticationRequest $request)
public function doConsent(OpenIdAuthenticationRequest $request,RequestContext $context)
{
return Redirect::action('UserController@getConsent');
return Redirect::action('UserController@getConsent')->with('context', $context);;
}
}

View File

@ -0,0 +1,20 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 3:47 PM
* To change this template use File | Settings | File Templates.
*/
namespace services;
use openid\services\IServerExtensionsService;
class ServerExtensionsService implements IServerExtensionsService{
public function getAllActiveExtensions()
{
return array();
}
}

View File

@ -16,5 +16,7 @@ class ServicesProvider extends ServiceProvider {
{
$this->app->singleton('openid\\services\\IMementoOpenIdRequestService','services\\MementoRequestService');
$this->app->singleton('openid\\handlers\\IOpenIdAuthenticationStrategy','services\\AuthenticationStrategy');
$this->app->singleton('openid\\services\\IServerExtensionsService','services\\ServerExtensionsService');
}
}

View File

@ -0,0 +1,22 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 4:36 PM
* To change this template use File | Settings | File Templates.
*/
namespace strategies;
use openid\responses\OpenIdResponse;
use openid\strategies\IOpenIdResponseStrategy;
use \Response;
class OpenIdDirectResponseStrategy implements IOpenIdResponseStrategy {
public function handle($response)
{
$response = Response::make($response->getContent(), $response->getHttpCode());
$response->header('Content-Type', $response->getContentType());
return $response;
}
}

View File

@ -0,0 +1,22 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 4:36 PM
* To change this template use File | Settings | File Templates.
*/
namespace strategies;
use openid\strategies\IOpenIdResponseStrategy;
use \Response;
class OpenIdIndirectResponseStrategy implements IOpenIdResponseStrategy {
public function handle($response)
{
$query_string = $response->getContent();
$return_to = $response->getReturnTo();
$return_to = (strpos($return_to,"?")===false)?$return_to."?".$query_string:$return_to."&".$query_string;
return Redirect::to($return_to);
}
}

View File

@ -0,0 +1,19 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: smarcet
* Date: 10/16/13
* Time: 4:38 PM
* To change this template use File | Settings | File Templates.
*/
namespace strategies;
use Illuminate\Support\ServiceProvider;
class OpenIdResponseStrategyProvider extends ServiceProvider {
public function register()
{
$this->app->singleton('OpenIdDirectResponseStrategy','strategies\\OpenIdDirectResponseStrategy');
$this->app->singleton('OpenIdIndirectResponseStrategy','strategies\\OpenIdIndirectResponseStrategy');
}
}

View File

View File

View File

@ -0,0 +1,4 @@
<p>PAPE</p>
@foreach ($links as $link)
<a href="#">{{$link}}</a>
@endforeach

View File

View File

@ -26,5 +26,9 @@
<div id="flash_notice">{{ Session::get('flash_notice') }}</div>
@endif
{{ Form::close() }}
@foreach ($views as $view)
{{ $view}}
@endforeach
</div>
@stop

View File

@ -19,7 +19,8 @@
"app/libs",
"app/repositories",
"app/tests/mocks",
"app/services"
"app/services",
"app/strategies"
]
},
"scripts": {