From 154973cd9cdcc4032928759fa401c70d26841aea Mon Sep 17 00:00:00 2001 From: Sudhanshu Agarwal Date: Fri, 15 Feb 2019 13:52:21 +0530 Subject: [PATCH 1/4] Loginradius Laraven Demo --- .env.example | 33 + .gitattributes | 5 + .gitignore | 13 +- CHANGELOG.md | 128 - README.md | 68 +- app/Console/Kernel.php | 40 + app/Exceptions/Handler.php | 65 + .../Auth/ForgotPasswordController.php | 32 + app/Http/Controllers/Auth/LoginController.php | 39 + .../Controllers/Auth/RegisterController.php | 71 + .../Auth/ResetPasswordController.php | 39 + app/Http/Controllers/Controller.php | 13 + app/Http/Controllers/HomeController.php | 304 ++ app/Http/Controllers/Profile.php | 512 +++ app/Http/Kernel.php | 60 + app/Http/Middleware/EncryptCookies.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 26 + app/Http/Middleware/TrimStrings.php | 18 + app/Http/Middleware/VerifyCsrfToken.php | 17 + app/Providers/AppServiceProvider.php | 28 + app/Providers/AuthServiceProvider.php | 30 + app/Providers/BroadcastServiceProvider.php | 21 + app/Providers/EventServiceProvider.php | 32 + app/Providers/RouteServiceProvider.php | 73 + app/User.php | 29 + artisan | 51 + bootstrap/app.php | 55 + bootstrap/autoload.php | 18 + bootstrap/cache/.gitignore | 2 + bootstrap/constants.php | 8 + composer.json | 55 +- composer.lock | 3557 +++++++++++++++++ config/app.php | 231 ++ config/auth.php | 102 + config/broadcasting.php | 58 + config/cache.php | 91 + config/database.php | 120 + config/filesystems.php | 68 + config/mail.php | 123 + config/queue.php | 85 + config/services.php | 38 + config/session.php | 179 + config/view.php | 33 + database/.gitignore | 1 + database/factories/ModelFactory.php | 24 + .../2014_10_12_000000_create_users_table.php | 35 + ...12_100000_create_password_resets_table.php | 32 + database/seeds/DatabaseSeeder.php | 16 + demo-php-framework (1).zip | Bin 0 -> 324584 bytes demo/ajax_handler/.htaccess | 4 - demo/ajax_handler/config.php | 20 - demo/ajax_handler/index.php | 14 - demo/ajax_handler/login.php | 254 -- demo/ajax_handler/profile.php | 343 -- demo/emailverification.html | 34 - demo/index.html | 104 - demo/js/emailVerification.js | 62 - demo/js/indexControl.js | 248 -- demo/js/indexView.js | 82 - demo/js/jquery-3.3.1.min.js | 2 - demo/js/loginScreen.js | 22 - demo/js/options.js | 10 - demo/js/profileControl.js | 549 --- demo/js/profileView.js | 153 - demo/js/resetPassword.js | 49 - demo/loginscreen.html | 34 - demo/logo-white.png | Bin 2300 -> 0 bytes demo/profile.html | 190 - demo/resetpassword.html | 41 - package.json | 21 + phpunit.xml | 31 + public/.htaccess | 20 + {demo => public}/css/style.css | 198 +- public/favicon.ico | 0 .../images}/icon-sprite-32.png | Bin public/images/line.png | Bin 0 -> 3447 bytes public/images/line.svg | 58 + public/images/loading.png | Bin 0 -> 4617 bytes public/images/login.jpg | Bin 0 -> 14433 bytes {demo => public/images}/lr-logo.png | Bin public/images/lr_provider_sprite.png | Bin 0 -> 7967 bytes public/images/mapping/Pinterest.png | Bin 0 -> 3388 bytes public/images/mapping/RAAS.png | Bin 0 -> 132 bytes public/images/mapping/amazon.png | Bin 0 -> 3219 bytes public/images/mapping/aol.png | Bin 0 -> 3231 bytes public/images/mapping/classmates.png | Bin 0 -> 3350 bytes public/images/mapping/facebook.png | Bin 0 -> 3146 bytes public/images/mapping/foursquare.png | Bin 0 -> 3428 bytes public/images/mapping/github.png | Bin 0 -> 2988 bytes public/images/mapping/google.png | Bin 0 -> 3331 bytes public/images/mapping/hyves.png | Bin 0 -> 3573 bytes public/images/mapping/kaixin.png | Bin 0 -> 3518 bytes public/images/mapping/line.png | Bin 0 -> 3370 bytes public/images/mapping/linkedin.png | Bin 0 -> 3191 bytes public/images/mapping/live.png | Bin 0 -> 3204 bytes public/images/mapping/livejournal.png | Bin 0 -> 3450 bytes public/images/mapping/mixi.png | Bin 0 -> 3092 bytes public/images/mapping/myopenid.png | Bin 0 -> 3360 bytes public/images/mapping/myspace.png | Bin 0 -> 3334 bytes public/images/mapping/odnoklassniki.png | Bin 0 -> 3262 bytes public/images/mapping/openid.png | Bin 0 -> 3240 bytes public/images/mapping/orange.png | Bin 0 -> 3251 bytes public/images/mapping/paypal.png | Bin 0 -> 3208 bytes public/images/mapping/persona.png | Bin 0 -> 3389 bytes public/images/mapping/qq.png | Bin 0 -> 3429 bytes public/images/mapping/renren.png | Bin 0 -> 3318 bytes public/images/mapping/salesforce.png | Bin 0 -> 3306 bytes public/images/mapping/stackexchange.png | Bin 0 -> 3201 bytes public/images/mapping/steamcommunity.png | Bin 0 -> 3175 bytes public/images/mapping/twitter.png | Bin 0 -> 3179 bytes public/images/mapping/verisign.png | Bin 0 -> 3303 bytes public/images/mapping/virgilio.png | Bin 0 -> 3183 bytes public/images/mapping/vkontakte.png | Bin 0 -> 3215 bytes public/images/mapping/wordpres.png | Bin 0 -> 3305 bytes public/images/mapping/wordpress.png | Bin 0 -> 3469 bytes public/images/mapping/yahoo.png | Bin 0 -> 3200 bytes public/images/pinterest.png | Bin 0 -> 5070 bytes {demo => public/images}/user-blank.png | Bin public/index.php | 58 + .../js/LoginRadiusLoginScreen.1.0.0.js | 104 +- public/js/account.js | 74 + public/js/accountlinking.js | 38 + public/js/emailverification.js | 81 + public/js/index.js | 384 ++ public/js/jquery.min.js | 2 + public/js/logout.js | 33 + public/js/options.js | 11 + public/js/profile.js | 510 +++ public/js/sociallogin.js | 29 + public/robots.txt | 2 + public/web.config | 23 + resources/assets/js/app.js | 22 + resources/assets/js/bootstrap.js | 53 + resources/assets/js/components/Example.vue | 23 + resources/assets/sass/_variables.scss | 38 + resources/assets/sass/app.scss | 9 + resources/lang/en/auth.php | 19 + resources/lang/en/pagination.php | 19 + resources/lang/en/passwords.php | 22 + resources/lang/en/validation.php | 121 + {demo => resources/views}/README.md | 24 +- resources/views/account.blade.php | 17 + resources/views/accountlinking.blade.php | 30 + resources/views/changepassword.blade.php | 16 + resources/views/customobjects.blade.php | 49 + resources/views/forgot.blade.php | 23 + resources/views/index.blade.php | 54 + resources/views/index.html | 11 + resources/views/layouts/home.blade.php | 54 + .../views/layouts/profile/home.blade.php | 43 + resources/views/loginscreen.blade.php | 209 + resources/views/multifactor.blade.php | 13 + resources/views/profile.blade.php | 27 + resources/views/roles.blade.php | 38 + resources/views/setpassword.blade.php | 15 + resources/views/signup.blade.php | 17 + resources/views/test.blade.php | 6 + resources/views/welcome.blade.php | 95 + resources/views/welcome_message.php | 89 + routes/api.php | 18 + routes/channels.php | 16 + routes/console.php | 18 + routes/web.php | 57 + server.php | 21 + src/LoginRadiusSDK/Advance/ConfigAPI.php | 56 - src/LoginRadiusSDK/Advance/WebHooksAPI.php | 90 - .../Clients/DefaultHttpClient.php | 212 - src/LoginRadiusSDK/Clients/IHttpClient.php | 24 - .../Account/AccountAPI.php | 329 -- .../Account/CustomObjectAPI.php | 115 - .../Account/CustomRegistrationDataAPI.php | 107 - .../CustomerRegistration/Account/RoleAPI.php | 229 -- .../Authentication/AuthCustomObjectAPI.php | 108 - .../Authentication/UserAPI.php | 1118 ------ .../Social/AdvanceSocialLoginAPI.php | 209 - .../Social/SocialLoginAPI.php | 373 -- src/LoginRadiusSDK/LoginRadiusException.php | 44 - src/LoginRadiusSDK/Utility/Functions.php | 219 - storage/app/.gitignore | 3 + storage/app/public/.gitignore | 2 + storage/framework/.gitignore | 8 + storage/framework/cache/.gitignore | 2 + storage/framework/sessions/.gitignore | 2 + storage/framework/testing/.gitignore | 2 + storage/framework/views/.gitignore | 2 + storage/logs/.gitignore | 2 + tests/AccountTest.php | 142 - tests/AuthenticationTest.php | 383 -- tests/ConfigurationTest.php | 30 - tests/CreatesApplication.php | 22 + tests/CustomObjectManagementTest.php | 107 - tests/CustomRegistrationDataTest.php | 74 - tests/Feature/ExampleTest.php | 23 + tests/MultiFactorAuthenticationTest.php | 262 -- tests/OneTouchLoginTest.php | 92 - tests/PasswordlessLoginTest.php | 64 - tests/PhoneAuthenticationTest.php | 172 - tests/RolesManagementTest.php | 173 - tests/SmartLoginTest.php | 72 - tests/SocialTest.php | 285 -- tests/TestCase.php | 10 + tests/TokenManagementTest.php | 84 - tests/Unit/ExampleTest.php | 20 + tests/WebhooksTest.php | 30 - tests/bootstrap.php | 5 - tests/config.php | 22 - tests/readme.txt | 6 - webpack.mix.js | 15 + 208 files changed, 9443 insertions(+), 7779 deletions(-) create mode 100644 .env.example create mode 100644 .gitattributes delete mode 100755 CHANGELOG.md create mode 100644 app/Console/Kernel.php create mode 100644 app/Exceptions/Handler.php create mode 100644 app/Http/Controllers/Auth/ForgotPasswordController.php create mode 100644 app/Http/Controllers/Auth/LoginController.php create mode 100644 app/Http/Controllers/Auth/RegisterController.php create mode 100644 app/Http/Controllers/Auth/ResetPasswordController.php create mode 100644 app/Http/Controllers/Controller.php create mode 100644 app/Http/Controllers/HomeController.php create mode 100644 app/Http/Controllers/Profile.php create mode 100644 app/Http/Kernel.php create mode 100644 app/Http/Middleware/EncryptCookies.php create mode 100644 app/Http/Middleware/RedirectIfAuthenticated.php create mode 100644 app/Http/Middleware/TrimStrings.php create mode 100644 app/Http/Middleware/VerifyCsrfToken.php create mode 100644 app/Providers/AppServiceProvider.php create mode 100644 app/Providers/AuthServiceProvider.php create mode 100644 app/Providers/BroadcastServiceProvider.php create mode 100644 app/Providers/EventServiceProvider.php create mode 100644 app/Providers/RouteServiceProvider.php create mode 100644 app/User.php create mode 100644 artisan create mode 100644 bootstrap/app.php create mode 100644 bootstrap/autoload.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 bootstrap/constants.php create mode 100644 composer.lock create mode 100644 config/app.php create mode 100644 config/auth.php create mode 100644 config/broadcasting.php create mode 100644 config/cache.php create mode 100644 config/database.php create mode 100644 config/filesystems.php create mode 100644 config/mail.php create mode 100644 config/queue.php create mode 100644 config/services.php create mode 100644 config/session.php create mode 100644 config/view.php create mode 100644 database/.gitignore create mode 100644 database/factories/ModelFactory.php create mode 100644 database/migrations/2014_10_12_000000_create_users_table.php create mode 100644 database/migrations/2014_10_12_100000_create_password_resets_table.php create mode 100644 database/seeds/DatabaseSeeder.php create mode 100644 demo-php-framework (1).zip delete mode 100644 demo/ajax_handler/.htaccess delete mode 100644 demo/ajax_handler/config.php delete mode 100644 demo/ajax_handler/index.php delete mode 100644 demo/ajax_handler/login.php delete mode 100644 demo/ajax_handler/profile.php delete mode 100644 demo/emailverification.html delete mode 100644 demo/index.html delete mode 100644 demo/js/emailVerification.js delete mode 100644 demo/js/indexControl.js delete mode 100644 demo/js/indexView.js delete mode 100644 demo/js/jquery-3.3.1.min.js delete mode 100644 demo/js/loginScreen.js delete mode 100644 demo/js/options.js delete mode 100644 demo/js/profileControl.js delete mode 100644 demo/js/profileView.js delete mode 100644 demo/js/resetPassword.js delete mode 100644 demo/loginscreen.html delete mode 100644 demo/logo-white.png delete mode 100644 demo/profile.html delete mode 100644 demo/resetpassword.html create mode 100644 package.json create mode 100644 phpunit.xml create mode 100644 public/.htaccess rename {demo => public}/css/style.css (51%) create mode 100644 public/favicon.ico rename {demo/icons => public/images}/icon-sprite-32.png (100%) create mode 100644 public/images/line.png create mode 100644 public/images/line.svg create mode 100644 public/images/loading.png create mode 100644 public/images/login.jpg rename {demo => public/images}/lr-logo.png (100%) create mode 100644 public/images/lr_provider_sprite.png create mode 100644 public/images/mapping/Pinterest.png create mode 100644 public/images/mapping/RAAS.png create mode 100644 public/images/mapping/amazon.png create mode 100644 public/images/mapping/aol.png create mode 100644 public/images/mapping/classmates.png create mode 100644 public/images/mapping/facebook.png create mode 100644 public/images/mapping/foursquare.png create mode 100644 public/images/mapping/github.png create mode 100644 public/images/mapping/google.png create mode 100644 public/images/mapping/hyves.png create mode 100644 public/images/mapping/kaixin.png create mode 100644 public/images/mapping/line.png create mode 100644 public/images/mapping/linkedin.png create mode 100644 public/images/mapping/live.png create mode 100644 public/images/mapping/livejournal.png create mode 100644 public/images/mapping/mixi.png create mode 100644 public/images/mapping/myopenid.png create mode 100644 public/images/mapping/myspace.png create mode 100644 public/images/mapping/odnoklassniki.png create mode 100644 public/images/mapping/openid.png create mode 100644 public/images/mapping/orange.png create mode 100644 public/images/mapping/paypal.png create mode 100644 public/images/mapping/persona.png create mode 100644 public/images/mapping/qq.png create mode 100644 public/images/mapping/renren.png create mode 100644 public/images/mapping/salesforce.png create mode 100644 public/images/mapping/stackexchange.png create mode 100644 public/images/mapping/steamcommunity.png create mode 100644 public/images/mapping/twitter.png create mode 100644 public/images/mapping/verisign.png create mode 100644 public/images/mapping/virgilio.png create mode 100644 public/images/mapping/vkontakte.png create mode 100644 public/images/mapping/wordpres.png create mode 100644 public/images/mapping/wordpress.png create mode 100644 public/images/mapping/yahoo.png create mode 100644 public/images/pinterest.png rename {demo => public/images}/user-blank.png (100%) create mode 100644 public/index.php rename {demo => public}/js/LoginRadiusLoginScreen.1.0.0.js (95%) create mode 100644 public/js/account.js create mode 100644 public/js/accountlinking.js create mode 100644 public/js/emailverification.js create mode 100644 public/js/index.js create mode 100644 public/js/jquery.min.js create mode 100644 public/js/logout.js create mode 100644 public/js/options.js create mode 100644 public/js/profile.js create mode 100644 public/js/sociallogin.js create mode 100644 public/robots.txt create mode 100644 public/web.config create mode 100644 resources/assets/js/app.js create mode 100644 resources/assets/js/bootstrap.js create mode 100644 resources/assets/js/components/Example.vue create mode 100644 resources/assets/sass/_variables.scss create mode 100644 resources/assets/sass/app.scss create mode 100644 resources/lang/en/auth.php create mode 100644 resources/lang/en/pagination.php create mode 100644 resources/lang/en/passwords.php create mode 100644 resources/lang/en/validation.php rename {demo => resources/views}/README.md (73%) create mode 100644 resources/views/account.blade.php create mode 100644 resources/views/accountlinking.blade.php create mode 100644 resources/views/changepassword.blade.php create mode 100644 resources/views/customobjects.blade.php create mode 100644 resources/views/forgot.blade.php create mode 100644 resources/views/index.blade.php create mode 100644 resources/views/index.html create mode 100644 resources/views/layouts/home.blade.php create mode 100644 resources/views/layouts/profile/home.blade.php create mode 100644 resources/views/loginscreen.blade.php create mode 100644 resources/views/multifactor.blade.php create mode 100644 resources/views/profile.blade.php create mode 100644 resources/views/roles.blade.php create mode 100644 resources/views/setpassword.blade.php create mode 100644 resources/views/signup.blade.php create mode 100644 resources/views/test.blade.php create mode 100644 resources/views/welcome.blade.php create mode 100644 resources/views/welcome_message.php create mode 100644 routes/api.php create mode 100644 routes/channels.php create mode 100644 routes/console.php create mode 100644 routes/web.php create mode 100644 server.php delete mode 100644 src/LoginRadiusSDK/Advance/ConfigAPI.php delete mode 100755 src/LoginRadiusSDK/Advance/WebHooksAPI.php delete mode 100755 src/LoginRadiusSDK/Clients/DefaultHttpClient.php delete mode 100755 src/LoginRadiusSDK/Clients/IHttpClient.php delete mode 100644 src/LoginRadiusSDK/CustomerRegistration/Account/AccountAPI.php delete mode 100644 src/LoginRadiusSDK/CustomerRegistration/Account/CustomObjectAPI.php delete mode 100644 src/LoginRadiusSDK/CustomerRegistration/Account/CustomRegistrationDataAPI.php delete mode 100644 src/LoginRadiusSDK/CustomerRegistration/Account/RoleAPI.php delete mode 100755 src/LoginRadiusSDK/CustomerRegistration/Authentication/AuthCustomObjectAPI.php delete mode 100755 src/LoginRadiusSDK/CustomerRegistration/Authentication/UserAPI.php delete mode 100755 src/LoginRadiusSDK/CustomerRegistration/Social/AdvanceSocialLoginAPI.php delete mode 100755 src/LoginRadiusSDK/CustomerRegistration/Social/SocialLoginAPI.php delete mode 100755 src/LoginRadiusSDK/LoginRadiusException.php delete mode 100755 src/LoginRadiusSDK/Utility/Functions.php create mode 100644 storage/app/.gitignore create mode 100644 storage/app/public/.gitignore create mode 100644 storage/framework/.gitignore create mode 100644 storage/framework/cache/.gitignore create mode 100644 storage/framework/sessions/.gitignore create mode 100644 storage/framework/testing/.gitignore create mode 100644 storage/framework/views/.gitignore create mode 100644 storage/logs/.gitignore delete mode 100644 tests/AccountTest.php delete mode 100644 tests/AuthenticationTest.php delete mode 100644 tests/ConfigurationTest.php create mode 100644 tests/CreatesApplication.php delete mode 100644 tests/CustomObjectManagementTest.php delete mode 100644 tests/CustomRegistrationDataTest.php create mode 100644 tests/Feature/ExampleTest.php delete mode 100644 tests/MultiFactorAuthenticationTest.php delete mode 100644 tests/OneTouchLoginTest.php delete mode 100644 tests/PasswordlessLoginTest.php delete mode 100644 tests/PhoneAuthenticationTest.php delete mode 100644 tests/RolesManagementTest.php delete mode 100644 tests/SmartLoginTest.php delete mode 100644 tests/SocialTest.php create mode 100644 tests/TestCase.php delete mode 100644 tests/TokenManagementTest.php create mode 100644 tests/Unit/ExampleTest.php delete mode 100644 tests/WebhooksTest.php delete mode 100644 tests/bootstrap.php delete mode 100644 tests/config.php delete mode 100644 tests/readme.txt create mode 100644 webpack.mix.js diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..668c06f --- /dev/null +++ b/.env.example @@ -0,0 +1,33 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_LOG_LEVEL=debug +APP_URL=http://localhost + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=homestead +DB_USERNAME=homestead +DB_PASSWORD=secret + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +SESSION_DRIVER=file +QUEUE_DRIVER=sync + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_DRIVER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..967315d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +* text=auto +*.css linguist-vendored +*.scss linguist-vendored +*.js linguist-vendored +CHANGELOG.md export-ignore diff --git a/.gitignore b/.gitignore index 80f408e..b6a4b86 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,12 @@ -nbproject/ +/node_modules +/public/hot +/public/storage +/storage/*.key +/vendor +/.idea +/.vagrant +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +.env diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100755 index b2d6ac1..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,128 +0,0 @@ -# LoginRadius PHP SDK Change Log - -# Version 5.0.2 -Released on **January 11, 2019** -## Enhancements - - Added API Region Option in SDK. - - Added gzip encoding in api request. -## Bug Fixed - - Defined urlReplacement function statically in functions.php file. - -# Version 5.0.1 -Released on **October 15, 2018** -## Bug Fixed - - Remove dependency of json option. - -# Version 5.0.0 -Released on **October 9, 2018** -## Enhancements - - API Request signing: Passed hash value instead of API Secret Key. - - API's Route changed. - - Access Token is added as header in all Authentication APIs - - Implemented Custom Domain option. - - Added preventEmailVerification (Boolean) option to prevent email verification flow in Auth Login and Registration APIs (where optional email is enabled). - -## Breaking Changes - For developers migrating from v4.5.3 or older ones, there are following breaking changes in terms of SDK implementation. - - register() replaced with registerByEmail() - - loginByEmail() replaced with authLoginByEmail() - - loginByUsername() replaced with authLoginByUsername() - - loginByPhone() replaced with authLoginByPhone - - instantLinkLoginByEmail() replaced with passwordLessLoginByEmail() - - instantLinkLoginByUserName() replaced with passwordLessLoginByUserName() - - instantLinkLoginVerification() replaced with passwordLessLoginVerification() - - emailPromptAutoLoginbyEmail() replaced with smartLoginByEmail() - - emailPromptAutoLoginbyUserName() replaced with smartLoginByUserName() - - emailPromptAutoLoginPing() replaced with smartLoginPing() - - verifyAutoLoginEmailForLogin() replaced with smartLoginVerifyToken() - - simplifiedInstantRegistrationByEmail() replaced with oneTouchLoginByEmail() - - simplifiedInstantRegistrationByPhone() replaced with oneTouchLoginByPhone() - - simplifiedInstantRegistrationOTPVerification() replaced with oneTouchOtpVerification() - - twoFALoginByEmail() replaced with mfaEmailLogin() - - twoFALoginByUsername() replaced with mfaUserNameLogin() - - twoFALoginByPhone() replaced with mfaPhoneLogin() - - configureTwoFAByToken() replaced with mfaValidateAccessToken() - - verifyTwoFAByGoogleAuthCodeOrOtp() replaced with updateMfaByGoogleAuthCode() and updateMfaByOtp() - - removeOrResetGoogleAuthenticatorByToken() replaced with resetGoogleAuthenticatorByToken() and resetSMSAuthenticatorByToken() - - removeOrResetGoogleAuthenticator() replaced with mfaResetGoogleAuthenticatorByUid() and mfaResetSMSAuthenticatorByUid() - - Removed CloudAPI replaced with ConfigAPI - - Removed ProvidersAPI and SchemaAPI - - Removed SOTT from utility. - - Directory name \LoginRadiusSDK\CustomerRegistration\Management -> replaced with \LoginRadiusSDK\CustomerRegistration\Account - -# Version 4.5.3 -Released on **August 9, 2018** -## Bug Fixed - - HTTP method request bug fixing - -# Version 4.5.2 -Released on **April 3, 2018** -## Bug Fixed - - SOTT was not generating properly in PHP SDK demo - -# Version 4.5.1 -Released on **January 24, 2018** -## Enhancements - - Change configuration API endpoint url. - -# Version 4.5.0 -Released on **Novemeber 28, 2017** -## Enhancements - - Added API to get Identities - - Added API to invalidate email - - Added API to get email verification token - - Added API to get forgot password token - - Passed APIkey and APISecret key in header for management Api's - - Removed mcrypt dependency (function deprecated in php 7) - - -# Version 4.4.0 -Released on **Novemeber 7, 2017** -## Enhancements - - Added Configuration API - - Added API to get all active session details - - Added Reset password by Security Answer API - - Added Remove Email Management API - -# Version 4.3.0 -Released on **September 15, 2017** -## Enhancements - - Ability to support proxy server - - Projection of fields in api's - - Added management api to generate a new SOTT - - Custom object edit API enhancements - - Added security questions api's - - Added invalidate phone api - - Added instant link login api - - Added simplified instant registration data api's - - Auto login api enhancement - -# Version 4.2.0 -Released on **June 20, 2017** -## Enhancements - - Added Roles API's - - Added Web hooks API's - - Added Email Prompt Auto Login API's - -# Version 4.1.0 -Released on **April 10, 2017** -## Enhancements - - Added user impersonation API - - Added Check token validity and invalidate token API - - Added Two-Factor authentication API's - -# 4.0.0 -## Enhancements -Released on **February 28, 2017** - - Significantly improved code performance. - - Wrapper methods for latest LoginRadius APIs have been added in Account API and User API - - Added email,username and phone login api's - - Added advance social login api's - - Added resthooks api's - - Added role api's - - Added add or remove email api's - - Added Custom object api's - - - - diff --git a/README.md b/README.md index dedafc2..4ab2e13 100755 --- a/README.md +++ b/README.md @@ -1,39 +1,59 @@ +# LoginRadius Laravel Demo -LoginRadius -========== +** Disclaimer: +This guide assumes you have some basic knowledge of PHP and Laravel. -![Home Image](http://docs.lrcontent.com/resources/github/banner-1544x500.png) +# Setup ------------------------------------------------ -LoginRadius PHP wrapper provides access to LoginRadius. + 1. Download our Laravel demo project. -LoginRadius is a unified **Customer Identity Management** API platform that combines 30 major social platforms into a single simplified and maintenance-free API. With LoginRadius' API, websites and mobile apps can implement capture user profile data, enable social login, enable social sharing, add single sign-on and many more. + 2. After Downloading laravel-demo, you need to update composer to download required library using the following command: -LoginRadius helps businesses boost user engagement on their web/mobile platform, manage online identities, utilize social media for marketing, capture accurate consumer data and get unique social insight into their customer base. + composer update -Please visit https://docs.loginradius.com/api/v2/deployment/sdk-libraries/php-library for more information. + 3. Open constants.php (File Location: bootstrap\constants.php) and fill your LoginRadius credentials + + define('API_KEY', ''); // Pass API Key + define('API_SECRET', ''); // Pass API Secret Key + define('API_REQUEST_SIGNING', false); // Pass boolean true/false for enable/disable + define('AUTH_FLOW', ''); -PHP Library --------------- + 4. Then open the option.js(File Location: public\js\option.js) and fill your LoginRadius credentials + + var commonOptions = {}; + commonOptions.apiKey = ""; + commonOptions.appName = ""; + commonOptions.hashTemplate = true; + commonOptions.sott = ""; + commonOptions.formValidationMessage = true; + commonOptions.verificationUrl = domainName+"/login"; + commonOptions.resetPasswordUrl = domainName+"/login"; + var LRObject = new LoginRadiusV2(commonOptions); -This document contains information and examples regarding the LoginRadius PHP SDK. It provides guidance for working with social authentication, capture user profile data, enable social login, enable social sharing, single sign-on, user profile data and sending messages with a variety of social networks such as Facebook, Google, Twitter, Yahoo, LinkedIn, and more. + 5. After configuring the options, run following commands: + cp .env.example .env + php artisan key:generate + php artisan serve -## Installation + 6. Open the browser and hit the url: http://127.0.0.1:8000/. You would be good to go and start playing with the demo. -The recommended way to install is through [Composer](http://getcomposer.org/). - -```bash -# Install Composer -curl -sS https://getcomposer.org/installer | php -``` -Next, run the Composer command to install the latest stable version of library: +**Features Implemented in the Demo** -```bash -composer require loginradius/php-sdk:5.0.2 -``` +1. Login +2. Register +3. Resend Email Verification +4. Social Login +5. Multi-Factor Authentication +6. Hosted Page +7. Forgot Password +8. Custom Object Management +9. Update Profile +10. Set Password +11. Account Linking +12. Roles Management -## Documentation -[Getting Started](https://docs.loginradius.com/api/v2/sdk-libraries/php) - Everything you need to begin using this SDK. + + \ No newline at end of file diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..622e774 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,40 @@ +command('inspire') + // ->hourly(); + } + + /** + * Register the Closure based commands for the application. + * + * @return void + */ + protected function commands() + { + require base_path('routes/console.php'); + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 0000000..a747e31 --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,65 @@ +expectsJson()) { + return response()->json(['error' => 'Unauthenticated.'], 401); + } + + return redirect()->guest(route('login')); + } +} diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php new file mode 100644 index 0000000..6a247fe --- /dev/null +++ b/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -0,0 +1,32 @@ +middleware('guest'); + } +} diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php new file mode 100644 index 0000000..b2ea669 --- /dev/null +++ b/app/Http/Controllers/Auth/LoginController.php @@ -0,0 +1,39 @@ +middleware('guest')->except('logout'); + } +} diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php new file mode 100644 index 0000000..f77265a --- /dev/null +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -0,0 +1,71 @@ +middleware('guest'); + } + + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * @return \Illuminate\Contracts\Validation\Validator + */ + protected function validator(array $data) + { + return Validator::make($data, [ + 'name' => 'required|string|max:255', + 'email' => 'required|string|email|max:255|unique:users', + 'password' => 'required|string|min:6|confirmed', + ]); + } + + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return \App\User + */ + protected function create(array $data) + { + return User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => bcrypt($data['password']), + ]); + } +} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php new file mode 100644 index 0000000..cf726ee --- /dev/null +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,39 @@ +middleware('guest'); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..03e02a2 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ +input('action'); + if(method_exists($this,$action)) + $this->$action($request); + else + return view('signup'); + } + /** + *handle login operation + * call to following function for login operation + *loginByEmail() + *mfaLogin() + *mfaValidate() + *pwLessLogin() + *pwLessLinkVerify() + */ + public function minimal(Request $request) { + + $action=$request->input('action'); + if(method_exists($this,$action)) + $this->$action($request); + else + return view('index'); + + } + /** + * function for login by email id + */ + public function loginByEmail($request) { + + $email = $request->input('email'); + $password = $request->input('password'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($email)) { + $response['message'] = 'The Email Id field is required.'; + } + else if (empty($password)) { + $response['message'] = 'The Password field is required.'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $payload = array('email' => $email, 'password' => $password); + $result = $authenticationObj->authLoginByEmail($payload); + if (isset($result->access_token) && $result->access_token != '') { + $response['data'] = $result; + $response['message'] = "Logged in successfully"; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + } + } + echo json_encode($response); + } + /** + * function for multifactor authentication + */ + + public function mfaLogin($request) { + $email = $request->input('email'); + $password = $request->input('password'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($email)) { + $response['message'] = 'The Email Id field is required.'; + } + elseif (empty($password)) { + $response['message'] = 'The Password field is required.'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $payload = array('email' => $email, 'password' => $password); + $result = $authenticationObj->mfaEmailLogin($payload); + $response['data'] = $result; + $response['message'] = "Mfa login successfully"; + $response['status'] = 'success'; + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + + /** + * function for multifactor validation + */ + public function mfaValidate($request) { + $secondFactorAuthenticationToken = $request->input('secondFactorAuthenticationToken'); + $googleAuthCode = $request->input('googleAuthCode'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($secondFactorAuthenticationToken)) { + $response['message'] = 'second factor auth token is required'; + } + elseif (empty($googleAuthCode)) { + $response['message'] = 'google auth code is required'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $authenticationObj->mfaValidateGoogleAuthCode($secondFactorAuthenticationToken, $googleAuthCode); + if ((isset($result->access_token) && $result->access_token != '')) { + $response['data'] = $result; + $response['message'] = "Mfa validate google auth code."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + + /** + * function for password less login + */ + + public function pwLessLogin($request) { + $email = $request->input('email'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($email)) { + $response['message'] = 'The Email Id field is required.'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $authenticationObj->passwordLessLoginByEmail($email, $request->input('verificationurl')); + if ((isset($result->IsPosted) && $result->IsPosted)) { + $response['message'] = "One time login link has been sent to your provided email id, check email for further instruction."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + + /** + * function for password less link verify + */ + public function pwLessLinkVerify($request) { + $token =$request->input('token'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($token)) { + $response['message'] = 'Token is required'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $authenticationObj->passwordLessLoginVerification($token); + if ((isset($result->access_token) && $result->access_token != '')) { + $response['data'] = $result; + $response['message'] = "Link has been verified."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + + function emailVerify($request) { + + + $vtoken = $request->input('vtoken'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($vtoken)) { + $response['message'] = 'Verification token is required'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $authenticationObj->verifyEmail($vtoken); + if ((isset($result->IsPosted) && $result->IsPosted)) { + $response['message'] = "Your email has been verified successfully."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + /** + * function for registration + */ + + public function registration($request) { + + $email=$request->input('email'); + $password=$request->input('password'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + + if (empty($email)) { + $response['message'] = 'The Email Id field is required.'; + } + elseif (empty($password)) { + $response['message'] = 'The Password field is required.'; + } + else { + + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $payload = array('Email' => array(array('Type' => 'Primary', 'Value' => $email)), 'password' => $password); + + $result = $authenticationObj->registerByEmail($payload, $request->input('verificationurl')); + if ((isset($result->EmailVerified) && $result->EmailVerified) || AUTH_FLOW == 'optional' || AUTH_FLOW == 'disabled') { + $response['result'] = $result; + $response['message'] = "You have successfully registered."; + $response['status'] = 'success'; + } + else { + $response['message'] = "You have successfully registered, Please check your email."; + + $response['status'] = 'registered'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + +} diff --git a/app/Http/Controllers/Profile.php b/app/Http/Controllers/Profile.php new file mode 100644 index 0000000..7fef80d --- /dev/null +++ b/app/Http/Controllers/Profile.php @@ -0,0 +1,512 @@ +input('action'); + if(method_exists($this,$action)) + $this->$action($request); + else + return view('profile'); + } + /** + * function to fetch profile info by uid + */ + public function getProfileByUid($request) { + $uid = $request->input('uid'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($uid)) { + $response['message'] = 'uid is required field'; + } + else { + + $accountObj = new AccountAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $accountObj->getProfileByUid($uid); + if ((isset($result->Uid) && $result->Uid != '')) { + $response['data'] = $result; + + $response['message'] = "fetched profile"; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->getMessage(); + $response['status'] = "error"; + } + } + echo json_encode($response); + } + + /** + * function to fetch info of profile + */ + public function getProfile($request) { + + $token= $request->input('token'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($token)) { + $response['message'] = 'Token is required'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $authenticationObj->getProfile($token); + if ((isset($result->EmailVerified) && $result->EmailVerified) || AUTH_FLOW == 'optional' || AUTH_FLOW == 'disabled') { + $response['data'] = $result; + $response['message'] = "Profile fetched"; + $response['status'] = 'success'; + } + else { + $response['message'] = "Email is not verified."; + $response['status'] = 'error'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + /** + * function to change password + */ + + + public function changePassword($request) { + $token =$request->input('token'); + $oldpassword =$request->input('oldpassword'); + $newpassword =$request->input('newpassword'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($oldpassword)) { + $response['message'] = 'Old password is required'; + } + elseif (empty($newpassword)) { + $response['message'] = 'New password is required'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json')); + try { + $result = $authenticationObj->changeAccountPassword($token, $oldpassword, $newpassword); + if (isset($result->IsPosted) && $result->IsPosted) { + $response['message'] = "Password has been changed successfully."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + } + echo json_encode($response); + } + /** + * function to set account password + */ + public function setPassword($request) { + $uid = $request->input('uid'); + $newpassword =$request->input('newpassword'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($newpassword)) { + $response['message'] = 'New password field is required'; + } + else { + $accountObj = new AccountAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $accountObj->setPassword($uid, $newpassword); + if (isset($result->PasswordHash) && $result->PasswordHash != '') { + $response['message'] = "The password has been set successfully."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + } + echo json_encode($response); + } + + /** + * function to handle forgot password + */ + public function forgotPassword($request) { + $email =$request->input('email'); + if (empty($email)) { + $response['message'] = 'The Email Id field is required.'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $authenticationObj->forgotPassword($email, $request->input('resetPasswordUrl')); + if ((isset($result->IsPosted) && $result->IsPosted)) { + $response['message'] = "We'll email you an instruction on how to reset your password"; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + /** + * function to reset password + */ + public function resetPassword($request){ + $token = $request->input('resettoken'); + $password = $request->input('password'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($token)) { + $response['message'] = 'Reset token is required'; + } + elseif (empty($password)) { + $response['message'] = 'The Password field is required.'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $authenticationObj->resetPassword($token, $password); + if ((isset($result->IsPosted) && $result->IsPosted)) { + $response['message'] = "Password has been reset successfully."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + /** + * function to update account + */ + public function updateAccount($request) { + $firstname =$request->input('firstname'); + $lastname =$request->input('lastname'); + $about = $request->input('about'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json')); + try { + $payload = array('FirstName' => $firstname, 'LastName' => $lastname, 'About' => $about); + + $result = $authenticationObj->updateProfile($request->input('token'), $payload); + if (isset($result->IsPosted) && $result->IsPosted) { + + $response['message'] = "Profile has been updated successfully."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + echo json_encode($response); + } + + /** + * function to create custom pbject + */ + public function createCustomObjects($request) { + $token=$request->input('token'); + $objectName = $request->input('objectName'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($objectName)) { + $response['message'] = 'Object name is required.'; + } + else { + $customObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + + try { + + $result = $customObj->createCustomObject($token, $objectName, $request->input('payload')); + + + if (isset($result->Uid) && $result->Uid != '') { + + $response['message'] = "Custom object created successfully."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + } + echo json_encode($response); + } + + /** + *function to get custom object + + */ + public function getCustomObjects($request) { + $token=$request->input('token'); + $objectName = $request->input('objectName'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($objectName)) { + $response['message'] = 'Object name is required.'; + } + else { + $customObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $customObj->getCustomObjectSetsByToken($token, $objectName); + if (isset($result->Count) && $result->Count != '0') { + $response['result'] = $result; + $response['status'] = 'success'; + } + else { + $response['status'] = 'empty'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + } + echo json_encode($response); + } + /** + *function to update custom object + + */ + + public function updateCustomObjects($request) { + $token=$request->input('token'); + $objectName = $request->input('objectName'); + $objectRecordId = $request->input('objectRecordId'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($objectName)) { + $response['message'] = 'Object name is required'; + } + elseif (empty($objectRecordId)) { + $response['message'] = 'Object Id is required'; + } + else { + $customObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $customObj->updateCustomObjectData($token, $objectName, $objectRecordId, 'replace', $request->input('payload')); + + if (isset($result->Uid) && $result->Uid != '') { + $response['message'] = "Custom object updated successfully."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + } + echo json_encode($response); + } + /** + *function to delete custom object + + */ + public function deleteCustomObjects($request) { + $token=$request->input('token'); + $objectName = $request->input('objectName'); + $objectRecordId =$request->input('objectRecordId'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($objectName)) { + $response['message'] = 'Object name is required'; + } + elseif (empty($objectRecordId)) { + $response['message'] = 'Object Id is required'; + } + else { + $customObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $customObj->deleteCustomObjectSet($token, $objectName, $objectRecordId); + if (isset($result->IsDeleted) && $result->IsDeleted) { + $response['message'] = "Custom object deleted successfully."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + } + echo json_encode($response); + } + /** + * function to reset multi factor authentication + */ + public function resetMultifactor($request) { + $accountObj = new AccountAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $accountObj->mfaResetGoogleAuthenticatorByUid($request->input('uid'), true); + if (isset($result->IsDeleted) && $result->IsDeleted) { + $response['message'] = "Reset successfully."; + $response['status'] = 'success'; + } + else { + $response['message'] = "Reset Failed."; + $response['status'] = 'error'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + echo json_encode($response); + } + + /** + *function to create Role + + */ + public function handleCreateRole($request) { + $roles = $request->input('roles'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($roles)) { + $response['message'] = 'Roles field is required'; + } + else { + $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $roleObj->create($roles); + if (isset($result->Count) && $result->Count != '') { + $response['message'] = "Roles has been created."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + } + echo json_encode($response); + } + /** + *function to delete role + + */ + + function handleDeleteRole($request) { + $roles = $request->input('roles'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($roles)) { + $response['message'] = 'Roles field is required'; + } + else { + $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $roleObj->delete($roles); + if (isset($result->IsDeleted) && $result->IsDeleted) { + $response['message'] = "Role has been deleted."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + } + echo json_encode($response); + } + + /** + *function to assign user role + + */ + public function handleAssignUserRole($request) { + $uid = $request->input('uid'); + $roles = $request->input('roles'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($roles)) { + $response['message'] = 'Roles field is required'; + } + else { + $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $roleObj->assignRolesByUid($uid, $roles); + if (isset($result->Roles) && $result->Roles != '') { + $response['message'] = "Role assigned successfully."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = 'error'; + } + } + echo json_encode($response); + } + /** + *function to fetch all role + + */ + + public function getAllRoles($request) { + $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $roleObj->get(); + if (isset($result->Count) && $result->Count != '0') { + $response['result'] = $result; + $response['status'] = 'success'; + } + else { + $response['message'] = 'Roles is empty'; + $response['status'] = 'rolesempty'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->getMessage(); + $response['status'] = 'error'; + } + echo json_encode($response); + } + /** + *function to fetch user role + + */ + + public function getUserRoles($request) { + $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $roleObj->getAccountRolesByUid($request->input('uid')); + if (isset($result->Roles) && $result->Roles != '') { + $response['data'] = $result; + $response['status'] = 'success'; + } + else { + $response['message'] = 'user roles is empty'; + $response['status'] = 'userrolesempty'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->getMessage(); + $response['status'] = 'error'; + } + echo json_encode($response); + } + + + +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100644 index 0000000..66d34c3 --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,60 @@ + [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + 'throttle:60,1', + 'bindings', + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + ]; +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..3aa15f8 --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +check()) { + return redirect('/home'); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..943e9a4 --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,18 @@ + 'App\Policies\ModelPolicy', + ]; + + /** + * Register any authentication / authorization services. + * + * @return void + */ + public function boot() + { + $this->registerPolicies(); + + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..352cce4 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,21 @@ + [ + 'App\Listeners\EventListener', + ], + ]; + + /** + * Register any events for your application. + * + * @return void + */ + public function boot() + { + parent::boot(); + + // + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..5ea48d3 --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,73 @@ +mapApiRoutes(); + + $this->mapWebRoutes(); + + // + } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + } + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); + } +} diff --git a/app/User.php b/app/User.php new file mode 100644 index 0000000..bfd96a6 --- /dev/null +++ b/app/User.php @@ -0,0 +1,29 @@ +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..f2801ad --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/autoload.php b/bootstrap/autoload.php new file mode 100644 index 0000000..31e547f --- /dev/null +++ b/bootstrap/autoload.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/composer.json b/composer.json index 7c2eccd..1472e53 100755 --- a/composer.json +++ b/composer.json @@ -1,21 +1,52 @@ { - "name": "loginradius/php-sdk", - "description": "LoginRadius PHP SDK v5.0.2", - "keywords": ["loginradius", "phpsdk"], - "type": "library", + "name": "laravel/laravel", + "description": "The Laravel Framework.", + "keywords": ["framework", "laravel"], "license": "MIT", - "authors": [ - { - "name": "LoginRadius Team", - "email": "developers@loginradius.com" - } - ], + "type": "project", "require": { - "php": ">=5.4.0" + "php": ">=5.6.4", + "laravel/framework": "5.4.*", + "laravel/tinker": "~1.0", + "loginradius/php-sdk": "^5.0.2" + }, + "require-dev": { + "fzaninotto/faker": "~1.4", + "mockery/mockery": "0.9.*", + "phpunit/phpunit": "~5.7" }, "autoload": { + "classmap": [ + "database" + ], "psr-4": { - "LoginRadiusSDK\\": "src/LoginRadiusSDK/" + "App\\": "app/" } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-root-package-install": [ + "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "php artisan key:generate" + ], + "post-install-cmd": [ + "Illuminate\\Foundation\\ComposerScripts::postInstall", + "php artisan optimize" + ], + "post-update-cmd": [ + "Illuminate\\Foundation\\ComposerScripts::postUpdate", + "php artisan optimize" + ] + }, + "config": { + "preferred-install": "dist", + "sort-packages": true, + "optimize-autoloader": true } } diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..920b757 --- /dev/null +++ b/composer.lock @@ -0,0 +1,3557 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "2030e8869bbe238156bdc1d247d08206", + "packages": [ + { + "name": "dnoegel/php-xdg-base-dir", + "version": "0.1", + "source": { + "type": "git", + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", + "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "@stable" + }, + "type": "project", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "time": "2014-10-24T07:27:01+00:00" + }, + { + "name": "doctrine/inflector", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Inflector\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2015-11-06T14:35:42+00:00" + }, + { + "name": "erusev/parsedown", + "version": "1.7.1", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "time": "2018-03-08T01:11:30+00:00" + }, + { + "name": "jakub-onderka/php-console-color", + "version": "v0.2", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "jakub-onderka/php-code-style": "1.0", + "jakub-onderka/php-parallel-lint": "1.0", + "jakub-onderka/php-var-dump-check": "0.*", + "phpunit/phpunit": "~4.3", + "squizlabs/php_codesniffer": "1.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleColor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "jakub.onderka@gmail.com" + } + ], + "time": "2018-09-29T17:23:10+00:00" + }, + { + "name": "jakub-onderka/php-console-highlighter", + "version": "v0.4", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "jakub-onderka/php-console-color": "~0.2", + "php": ">=5.4.0" + }, + "require-dev": { + "jakub-onderka/php-code-style": "~1.0", + "jakub-onderka/php-parallel-lint": "~1.0", + "jakub-onderka/php-var-dump-check": "~0.1", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleHighlighter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "acci@acci.cz", + "homepage": "http://www.acci.cz/" + } + ], + "description": "Highlight PHP code in terminal", + "time": "2018-09-29T18:48:56+00:00" + }, + { + "name": "laravel/framework", + "version": "v5.4.36", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/1062a22232071c3e8636487c86ec1ae75681bbf9", + "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9", + "shasum": "" + }, + "require": { + "doctrine/inflector": "~1.1", + "erusev/parsedown": "~1.6", + "ext-mbstring": "*", + "ext-openssl": "*", + "league/flysystem": "~1.0", + "monolog/monolog": "~1.11", + "mtdowling/cron-expression": "~1.0", + "nesbot/carbon": "~1.20", + "paragonie/random_compat": "~1.4|~2.0", + "php": ">=5.6.4", + "ramsey/uuid": "~3.0", + "swiftmailer/swiftmailer": "~5.4", + "symfony/console": "~3.2", + "symfony/debug": "~3.2", + "symfony/finder": "~3.2", + "symfony/http-foundation": "~3.2", + "symfony/http-kernel": "~3.2", + "symfony/process": "~3.2", + "symfony/routing": "~3.2", + "symfony/var-dumper": "~3.2", + "tijsverkoyen/css-to-inline-styles": "~2.2", + "vlucas/phpdotenv": "~2.2" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/exception": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version", + "tightenco/collect": "self.version" + }, + "require-dev": { + "aws/aws-sdk-php": "~3.0", + "doctrine/dbal": "~2.5", + "mockery/mockery": "~0.9.4", + "pda/pheanstalk": "~3.0", + "phpunit/phpunit": "~5.7", + "predis/predis": "~1.0", + "symfony/css-selector": "~3.2", + "symfony/dom-crawler": "~3.2" + }, + "suggest": { + "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", + "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", + "laravel/tinker": "Required to use the tinker console command (~1.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", + "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", + "nexmo/client": "Required to use the Nexmo transport (~1.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", + "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", + "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.2).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.2).", + "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "time": "2017-08-30T09:26:16+00:00" + }, + { + "name": "laravel/tinker", + "version": "v1.0.8", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "cafbf598a90acde68985660e79b2b03c5609a405" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/cafbf598a90acde68985660e79b2b03c5609a405", + "reference": "cafbf598a90acde68985660e79b2b03c5609a405", + "shasum": "" + }, + "require": { + "illuminate/console": "~5.1", + "illuminate/contracts": "~5.1", + "illuminate/support": "~5.1", + "php": ">=5.5.9", + "psy/psysh": "0.7.*|0.8.*|0.9.*", + "symfony/var-dumper": "~3.0|~4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (~5.1)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "time": "2018-10-12T19:39:35+00:00" + }, + { + "name": "league/flysystem", + "version": "1.0.49", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a63cc83d8a931b271be45148fa39ba7156782ffd", + "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": ">=5.5.9" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/phpspec": "^3.4", + "phpunit/phpunit": "^5.7.10" + }, + "suggest": { + "ext-fileinfo": "Required for MimeType", + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "time": "2018-11-23T23:41:29+00:00" + }, + { + "name": "loginradius/php-sdk", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/LoginRadius/php-sdk.git", + "reference": "bb6a821e7815018d1d189389c3305509f39c3136" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LoginRadius/php-sdk/zipball/bb6a821e7815018d1d189389c3305509f39c3136", + "reference": "bb6a821e7815018d1d189389c3305509f39c3136", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "LoginRadiusSDK\\": "src/LoginRadiusSDK/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "LoginRadius Team", + "email": "developers@loginradius.com" + } + ], + "description": "LoginRadius PHP SDK v5.0.1", + "keywords": [ + "loginradius", + "phpsdk" + ], + "time": "2018-10-15T11:24:51+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.24.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2018-11-05T09:00:11+00:00" + }, + { + "name": "mtdowling/cron-expression", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/mtdowling/cron-expression.git", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2017-01-23T04:29:33+00:00" + }, + { + "name": "nesbot/carbon", + "version": "1.36.1", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/63da8cdf89d7a5efe43aabc794365f6e7b7b8983", + "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7" + }, + "suggest": { + "friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.", + "phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + } + ], + "description": "A simple API extension for DateTime.", + "homepage": "http://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "time": "2018-11-22T18:23:02+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v3.1.5", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", + "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2018-02-28T20:30:58+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v2.0.17", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "time": "2018-07-04T16:31:37+00:00" + }, + { + "name": "psr/log", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2018-11-20T15:27:04+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.9.9", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", + "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", + "shasum": "" + }, + "require": { + "dnoegel/php-xdg-base-dir": "0.1", + "ext-json": "*", + "ext-tokenizer": "*", + "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", + "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", + "php": ">=5.4.0", + "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", + "symfony/var-dumper": "~2.7|~3.0|~4.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "~2.15|~3.16", + "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", + "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "time": "2018-10-13T15:16:03+00:00" + }, + { + "name": "ramsey/uuid", + "version": "3.8.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "^1.0|^2.0|9.99.99", + "php": "^5.4 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "codeception/aspect-mock": "^1.0 | ~2.0.0", + "doctrine/annotations": "~1.2.0", + "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", + "ircmaxell/random-lib": "^1.1", + "jakub-onderka/php-parallel-lint": "^0.9.0", + "mockery/mockery": "^0.9.9", + "moontoast/math": "^1.1", + "php-mock/php-mock-phpunit": "^0.3|^1.1", + "phpunit/phpunit": "^4.7|^5.0|^6.5", + "squizlabs/php_codesniffer": "^2.3" + }, + "suggest": { + "ext-ctype": "Provides support for PHP Ctype functions", + "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", + "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", + "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marijn Huizendveld", + "email": "marijn.huizendveld@gmail.com" + }, + { + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io" + }, + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", + "homepage": "https://github.com/ramsey/uuid", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "time": "2018-07-19T23:38:55+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v5.4.12", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "~3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "time": "2018-07-31T09:26:32+00:00" + }, + { + "name": "symfony/console", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb", + "reference": "8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" + }, + "suggest": { + "psr/log-implementation": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-11-26T12:48:07+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/345b9a48595d1ab9630db791dbc3e721bf0233e8", + "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:48:54+00:00" + }, + { + "name": "symfony/debug", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "2016b3eec2e49c127dd02d0ef44a35c53181560d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/2016b3eec2e49c127dd02d0ef44a35c53181560d", + "reference": "2016b3eec2e49c127dd02d0ef44a35c53181560d", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/http-kernel": "~2.8|~3.0|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:48:54+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "d365fc4416ec4980825873962ea5d1b1bca46f1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d365fc4416ec4980825873962ea5d1b1bca46f1a", + "reference": "d365fc4416ec4980825873962ea5d1b1bca46f1a", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "conflict": { + "symfony/dependency-injection": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2018-11-26T10:17:44+00:00" + }, + { + "name": "symfony/finder", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442", + "reference": "6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:48:54+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "ea61dd57c4399b0b2a4162e1820cd9d0783acd38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ea61dd57c4399b0b2a4162e1820cd9d0783acd38", + "reference": "ea61dd57c4399b0b2a4162e1820cd9d0783acd38", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php70": "~1.6" + }, + "require-dev": { + "symfony/expression-language": "~2.8|~3.0|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2018-11-26T10:17:44+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "78528325d90e5ad54a6e9eca750fe176932bc4fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/78528325d90e5ad54a6e9eca750fe176932bc4fa", + "reference": "78528325d90e5ad54a6e9eca750fe176932bc4fa", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", + "symfony/var-dumper": "<3.3", + "twig/twig": "<1.34|<2.4,>=2" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/cache": "~1.0", + "symfony/browser-kit": "~2.8|~3.0|~4.0", + "symfony/class-loader": "~2.8|~3.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/console": "~2.8|~3.0|~4.0", + "symfony/css-selector": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "^3.4.10|^4.0.10", + "symfony/dom-crawler": "~2.8|~3.0|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/process": "~2.8|~3.0|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0", + "symfony/templating": "~2.8|~3.0|~4.0", + "symfony/translation": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~3.3|~4.0" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "", + "symfony/var-dumper": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2018-11-26T14:04:48+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2018-09-21T13:07:52+00:00" + }, + { + "name": "symfony/polyfill-php70", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0|~9.99", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-09-21T06:26:08+00:00" + }, + { + "name": "symfony/process", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2", + "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2018-11-20T16:10:26+00:00" + }, + { + "name": "symfony/routing", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "86eb1a581279b5e40ca280a4f63a15e37d51d16c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/86eb1a581279b5e40ca280a4f63a15e37d51d16c", + "reference": "86eb1a581279b5e40ca280a4f63a15e37d51d16c", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "conflict": { + "symfony/config": "<3.3.1", + "symfony/dependency-injection": "<3.3", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "psr/log": "~1.0", + "symfony/config": "^3.3.1|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~2.8|~3.0|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/dependency-injection": "For loading routes from a service", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "time": "2018-11-26T08:40:22+00:00" + }, + { + "name": "symfony/translation", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "bdbe940ed3ef4179f86032086c32d3a858becc0f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/bdbe940ed3ef4179f86032086c32d3a858becc0f", + "reference": "bdbe940ed3ef4179f86032086c32d3a858becc0f", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/intl": "^2.8.18|^3.2.5|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "time": "2018-11-26T10:17:44+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "6867713afe6c50ade2f34ed6435563b065a52145" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6867713afe6c50ade2f34ed6435563b065a52145", + "reference": "6867713afe6c50ade2f34ed6435563b065a52145", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "require-dev": { + "ext-iconv": "*", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "ext-symfony_debug": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "time": "2018-11-20T16:10:26+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", + "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "time": "2017-11-27T11:13:29+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v2.5.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", + "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "http://www.vancelucas.com" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "time": "2018-07-29T20:33:41+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14T21:17:01+00:00" + }, + { + "name": "fzaninotto/faker", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "ext-intl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^1.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "time": "2018-07-12T10:23:15+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", + "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "1.3.3", + "satooshi/php-coveralls": "dev-master" + }, + "type": "library", + "autoload": { + "classmap": [ + "hamcrest" + ], + "files": [ + "hamcrest/Hamcrest.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "time": "2015-05-11T14:41:42+00:00" + }, + { + "name": "mockery/mockery", + "version": "0.9.10", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "4876fc0c7d9e5da49712554a35c94d84ed1e9ee5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/4876fc0c7d9e5da49712554a35c94d84ed1e9ee5", + "reference": "4876fc0c7d9e5da49712554a35c94d84ed1e9ee5", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "~1.1", + "lib-pcre": ">=7.0", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", + "homepage": "http://github.com/padraic/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "time": "2018-11-13T20:50:16+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-10-19T19:58:43+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-10T14:09:06+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-08-05T17:53:17+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2017-04-02T07:44:40+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.12", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-12-04T08:55:13+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "5.7.27", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "^1.4.3", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "^1.0.6|^2.0.1", + "symfony/yaml": "~2.1|~3.0|~4.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2018-02-01T05:50:59+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2017-06-30T09:13:00+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29T09:50:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2017-05-22T07:24:03+00:00" + }, + { + "name": "sebastian/environment", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-11-26T07:53:53+00:00" + }, + { + "name": "sebastian/exporter", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-11-19T08:54:04+00:00" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12T03:26:01+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-02-18T15:18:39+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-11-19T07:33:16+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "symfony/yaml", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "291e13d808bec481eab83f301f7bff3e699ef603" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/291e13d808bec481eab83f301f7bff3e699ef603", + "reference": "291e13d808bec481eab83f301f7bff3e699ef603", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:48:54+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2018-01-29T19:49:41+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.6.4" + }, + "platform-dev": [] +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..135e977 --- /dev/null +++ b/config/app.php @@ -0,0 +1,231 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services your application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Logging Configuration + |-------------------------------------------------------------------------- + | + | Here you may configure the log settings for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Settings: "single", "daily", "syslog", "errorlog" + | + */ + + 'log' => env('APP_LOG', 'single'), + + 'log_level' => env('APP_LOG_LEVEL', 'debug'), + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Package Service Providers... + */ + Laravel\Tinker\TinkerServiceProvider::class, + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => [ + + 'App' => Illuminate\Support\Facades\App::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Notification' => Illuminate\Support\Facades\Notification::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'Session' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..7817501 --- /dev/null +++ b/config/auth.php @@ -0,0 +1,102 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session", "token" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + + 'api' => [ + 'driver' => 'token', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that the reset token should be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + ], + ], + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..5eecd2b --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,58 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + // + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..e87f032 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,91 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | + */ + + 'prefix' => 'laravel', + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..cab5d06 --- /dev/null +++ b/config/database.php @@ -0,0 +1,120 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'strict' => true, + 'engine' => null, + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'schema' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer set of commands than a typical key-value systems + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => 'predis', + + 'default' => [ + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', 6379), + 'database' => 0, + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..4544f60 --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,68 @@ + env('FILESYSTEM_DRIVER', 'local'), + + /* + |-------------------------------------------------------------------------- + | Default Cloud Filesystem Disk + |-------------------------------------------------------------------------- + | + | Many applications store files both locally and in the cloud. For this + | reason, you may specify a default "cloud" driver here. This driver + | will be bound as the Cloud disk implementation in the container. + | + */ + + 'cloud' => env('FILESYSTEM_CLOUD', 's3'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "s3", "rackspace" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_KEY'), + 'secret' => env('AWS_SECRET'), + 'region' => env('AWS_REGION'), + 'bucket' => env('AWS_BUCKET'), + ], + + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..bb92224 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,123 @@ + env('MAIL_DRIVER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | SMTP Host Address + |-------------------------------------------------------------------------- + | + | Here you may provide the host address of the SMTP server used by your + | applications. A default option is provided that is compatible with + | the Mailgun mail service which will provide reliable deliveries. + | + */ + + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + + /* + |-------------------------------------------------------------------------- + | SMTP Host Port + |-------------------------------------------------------------------------- + | + | This is the SMTP port used by your application to deliver e-mails to + | users of the application. Like the host we have set this value to + | stay compatible with the Mailgun e-mail application by default. + | + */ + + 'port' => env('MAIL_PORT', 587), + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | E-Mail Encryption Protocol + |-------------------------------------------------------------------------- + | + | Here you may specify the encryption protocol that should be used when + | the application send e-mail messages. A sensible default using the + | transport layer security protocol should provide great security. + | + */ + + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + + /* + |-------------------------------------------------------------------------- + | SMTP Server Username + |-------------------------------------------------------------------------- + | + | If your SMTP server requires a username for authentication, you should + | set it here. This will get used to authenticate with your server on + | connection. You may also set the "password" value below this one. + | + */ + + 'username' => env('MAIL_USERNAME'), + + 'password' => env('MAIL_PASSWORD'), + + /* + |-------------------------------------------------------------------------- + | Sendmail System Path + |-------------------------------------------------------------------------- + | + | When using the "sendmail" driver to send e-mails, we will need to know + | the path to where Sendmail lives on this server. A default path has + | been provided here, which will work well on most of your systems. + | + */ + + 'sendmail' => '/usr/sbin/sendmail -bs', + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..4d83ebd --- /dev/null +++ b/config/queue.php @@ -0,0 +1,85 @@ + env('QUEUE_DRIVER', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => 'your-public-key', + 'secret' => 'your-secret-key', + 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id', + 'queue' => 'your-queue-name', + 'region' => 'us-east-1', + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => 'default', + 'retry_after' => 90, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..4460f0e --- /dev/null +++ b/config/services.php @@ -0,0 +1,38 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + ], + + 'ses' => [ + 'key' => env('SES_KEY'), + 'secret' => env('SES_SECRET'), + 'region' => 'us-east-1', + ], + + 'sparkpost' => [ + 'secret' => env('SPARKPOST_SECRET'), + ], + + 'stripe' => [ + 'model' => App\User::class, + 'key' => env('STRIPE_KEY'), + 'secret' => env('STRIPE_SECRET'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..e2779ad --- /dev/null +++ b/config/session.php @@ -0,0 +1,179 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => 120, + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => null, + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using the "apc" or "memcached" session drivers, you may specify a + | cache store that should be used for these sessions. This value must + | correspond with one of the application's configured cache stores. + | + */ + + 'store' => null, + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => 'laravel_session', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN', null), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you if it can not be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE', false), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..2acfd9c --- /dev/null +++ b/config/view.php @@ -0,0 +1,33 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => realpath(storage_path('framework/views')), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b1dffd --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php new file mode 100644 index 0000000..7926c79 --- /dev/null +++ b/database/factories/ModelFactory.php @@ -0,0 +1,24 @@ +define(App\User::class, function (Faker\Generator $faker) { + static $password; + + return [ + 'name' => $faker->name, + 'email' => $faker->unique()->safeEmail, + 'password' => $password ?: $password = bcrypt('secret'), + 'remember_token' => str_random(10), + ]; +}); diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..689cbee --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('name'); + $table->string('email')->unique(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('users'); + } +} diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100644 index 0000000..0d5cb84 --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php new file mode 100644 index 0000000..e119db6 --- /dev/null +++ b/database/seeds/DatabaseSeeder.php @@ -0,0 +1,16 @@ +call(UsersTableSeeder::class); + } +} diff --git a/demo-php-framework (1).zip b/demo-php-framework (1).zip new file mode 100644 index 0000000000000000000000000000000000000000..904723acfecfdbe5c969dc01fe7b57e5ca96259f GIT binary patch literal 324584 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�<`oc?1xd1w_b}nni z&(@UB0R6ZWajJp>SfG$M#$S^+lsWGcn3nEK<+A)OAvUdPa;A?ERhr}G5jmBD@Oiwo z)nK$`y1zBf&s5+_?%(?m*MLONVk!dn!TFqZrU^8_Atp}=0&1&weHbhaqC@($L{V52 z!zrEzYy~Sc!~tk;Yir2uc@co?a~wWssse1Pd=g2m5eW|aoAorI;a2Y_8!1SKn=%SA>1wkWir>5NljhHbFwyVCNcCh# zQ3cCLUR{sC!~%PpA6OA$f#bqLRVj#U+|AQoTcY|YTWYHm zcNVGZ<}b!A@q{~xTJqdM=RbS+dp$&43Teh%!I7W02MgXbnYb62))pdf0qtHNk zz537lsH6q3QY-L3Sf6;P3*{lK%30Tuk_C*m%ElDAV~i zM)jRi>$Fq%NRzKr(4C@Pr8VEaBYzV41bn6TY&jV;Hg4!iK`40tkszyPp{6TbDabqW zfQt!t>IA_|rqj?%XXErENwR&c*Xd}%=q_7b^@z{~f3|y20SRoaFf=Qk_sqMn3#ROClto6dT3Vl7Xr$9Lui4LBmRr;}0#H>A{}0de2+EpIbc=%y*|J zb|OYa{P(6(g)l)>f3i3x(i?;x24xNSLtk?Tr>{4Tc7@ZX!izK-Cx$~9&9za z>Lj!p8+@aa)_cnx?IE`U0%LEvm?8{tW+(U)O{UDKUGu!m=sYH1=Pm`k=^{U_@$tLt z3iN>R@K&>*kCcA}wZ(4(&A5GkcbDq`=Ywbdh$Cz7*X*G7ZgIj8-lz(HAK9|-;{^*t zC|d7dRQb(9%qV=te=irG_;9N~*zr+w z!4SMI$S#+5Pg)xX9|MH;6%5kagrIrIWP&G5?9W(O@{w6(WR$QEQsvZYo!VV;-igq( z*nxeMXOv}VI(-#dm-?kVX*?wdji)#W{X7L)N$bVW^9i@w*{@H}&E1=_Pm9G&`Z;y< znoFveB+wml1s}=qN|u0kPgT~b#a{&3*io@!K*1i;=^D=w_`Nk@m!uaJ;rAbKT_D8O zB}Ckp!EjF0yNO4c4W^IDK`G@4s%)=|*~1Q~joO4FSrWr6c+Psib6*ttD&u*0VHiy!h z9E5DBxjvLocDHe72pw#~%`OMFdOm6cGwGkB_-gz!<1+8PYiqp_Y$wb8?!GX6Sgz_@ zcw46Dr-pS<=g7e)C|phEBW!CEzB5b^mKU-?jz`oxifjuLw5TslG3y7@(y>fSIwd#k za;he!^JKfqb6wdRI;}iwufn$e7dzIveTNA5V8fMl5=*m^uM5nGVzVMN&!@BQ6nQj< zm~Qmmd6jpvCAUb9qJ&7K@)%{w=HO~-H+-_>XNYN&91Tnd`JbegL{)I`&r@F%@Rl%d zp}>N~7{5HQ{u)DcXYu&*Q*3}vy-IZ};+|rM%nlI3pu%TKHMJ1el=M|%E;y=>Nh$)_ z>c3TMo!+y8jbQQ-;}kN$dVT8Xj0sF4WCdiT=*FDLC?cyIFTr)NZQvax3S`47I`6`D zJ7_+zL)rHwQNf=JI_^TBU1_%OzZHULhY$p{8l&eLZ_g(4-|RuqH|t*bLs_1b^3%Sv ztAa=V8*$6a`uvJ*aZz;H78V=a2R?Ct#QRN)l1mW=E6)nvJHp_^r zO^JI(wjV7vs%`#H4LTrW20zM`8L%3gy_d<-@G&;lds^#1aO zO~g1kA+&V6x42*>VF}Gk#JDIN&O%wu>@z(}LS2Li~4N2mb`)6Vwp-8%^m^vk2Rzq!k$O|^E< zxRaWQesygkrip08j%(T{$3h%hM5HiiHIpUkabCD@-?_WHt3ZV|g5yv+gMJvAa%%dR zHAcJ=#kpjb&ZhT+Vgqo1J)O+R4jl|O^`7O{x3w0^Ul;YU)vgy=#!Y!dIq?M!WAA~| zevV_vdjIr=9yYK&Cp{AWVM(W(WZ;##q&VF&5XH^qvVw_hz%NbyF;Sqp(JmO-i!WfH z-0b2QbKOA@O(t_Of?H8SNqRTtGoBIyk)#s>ri`IYG>ZoIG3}gI7r7%!N_q_7jDQC$ z3-A1YK{)`j6H6!5y@C&pWTJ0zqm82Hx=c@oh%9>}qc+q+^t6phQPh4&$VCH-VPVyw zVB6)mgf}j%(UALz6&maW2+zZnr6{ zODE{mO1xLHG?CwhABdI{oVcX5B*cijUEAJaNisQhX=I%D@r-_!2O!A z;rzQLmCzuutPf!_dx0;I@0Ih3P7pLWF{)Yb8)j@mLQVkw-|y`bT#+ji3?UbUb>u|Z zzd!A~pR0Hnf1&}eY+hl>s^7Ry1z~h$bAKRVLg>Jdx=vn*)3{{$FG4(SPr^mZ)b*s(roPe7|KXU(=~``UlrU-d)48 z!jLxF>O*mKG=MkM^|L1rf0Rx$C!+4p_k@b^lX$rI9sVj1&TTyJdk23$U@UeS>4Wz> zUiw4hffYCIltl`t%L$sRA9TJwZ2ZMdtlu8qp)CUE{*?0lee?act`u$C)u{?iV}3iG zzqOel&A01*ZzcNqRxa}*lpF00S2CPQ<(Yr9f6vh~-r1=gHu+OKv@A9G1a@Buii60X zU%(@Ae_F7B1_7yF>!Od%CstEgR;d!6KIcbS9xj!qsABfu=y2$Z!BpTPaP>i#l3eu$ z+qQ~MhIw>x)EO#uk*?IRa}}&&32HJL5gZ|1Nsk{_Y3+bu#X~m1`V7v(tQAtrO%Sa^ zgIFtK>8`0KDtboH48m)Uh};8Tx;jYY(PJ0kJW)f`xG?k`tLBjAK6MxpsEk(=WGML3 z$;HKe>)NyjT+8@WVs^uWu*72rGIUO?sc_a31h5>)Q33ge1cKln#9Bh2O1wvIldRC+ zA_tqh^>a5 zw?wV}{w&XlUwplDaO_>vE*#rCwr$(Cy<^+Sj&0jcb~N#hZS2^#Z6_!9bL#ufd8^KI z&(u`?s-|ZCxUTMASNB@0`(caIWC3NUKom28tTzKjoG3@IzGf|oD-{bum6;#1w1GsZ zH!zBqTA2*z?~XguBAX`S6%ij<>;oD;6PW3ag5#U)tA4P zUi4Fl$?3hIsLcd94o{dVt5C!blhT4sbI|hRNEta%fV;apy0RXdC|B3rg{`%Ch9Zwn z{Vl$Y*D&vAbZ#C2s|h6?NP89E+Gh$nQlXCZG*pVz6jJ0Tp^naQ?XACMf7eRy?AW(ML4IpvU%F? zc9;&d0~s-lxHw9*p2I(?xP1%`MJZFvK4ay=|AwsDBfA}ucpI1fG5j%G|6G&8gW%uI>&cY^f&ft~xT$hVXyI%VwP8`uRs~ zBxZtI7LhuPr*CbD>^D>(!YQlaRm&e6fVMfnxtgRImP(*6V?CW#Qng+?G@n= z_mvhB?!6mmI07q~K~QPqldQE!ecKur{c8LgqL6R=R$@P`!~Yj!{qzS>dozvUWv_et zi2cvk7rQ54P{h2QaWOyP^TuS&qm_{DE4k%7^F}_xhI`m|wry`7ZJE@6Za`n;A%6+np35!u zz~0-=%_57|ZCJ+l+t_G2xNB<6(V{w0u~^FSZQ}vpfKN`$dKJ)JX&nL&Z&@(GI9%az z&zSJo-XS=OS`}ecttHE4en8_O0$`vYi{}aXX!ov4d^G|$AQsgM0}DhR3=s&F^wms| zzVu*B!40P5IB^=*);C&x)Kw$J&W(Jm+>cWmkaAmfU#MT!03wJ`J)^cQWg`lnz(#ll zN88_?&~!>MTGnUaQi#X0j2Qu7>=btVSel=(9*Hsm3Aj{Undqk-{`-ivz=f+Eg3K4a z#}P0RGL-G5*i-*|*-bytIa*TeK1A~e=}=7EF-ht2j}C|ejYARmOwsPdiijvg1KgUL zDIJRdM-(+OZ0nzkL^?ZjQ(mwyhJVR1IT+vyapeW2jJAQ8f=uzlC@DOmbqybdEc2-e z(-}FN08B@Dbo)VGhh_`TLT9QS3jv>E>!*15ZKS1M5X7 z{3Z|FDh+wFFcgU^buB}Q5xRs~qt{w%D?5}5@KKgNY1tks%c)|7Pdwh*D}Wwi`Ugwj zHh)mf{L%~w78tu5rR~}}RRO&(i=_Ko&S@50rzUGvC#gBQV&3D&nb%+*-WB7TgoUBX z1*!JMmtniN&yOpYR+XGc_5Lo1ZvoT$xO104VA2Aupo|Md_l?@DKrwciMbI3IZtZTf0nd)+EMkHgvvhoJsvl_E1J+o~yxvYH3b zKphemkLlmlddGf`IM?Nmhh8TAh-oVdy#q`r#Z= zy9yIp+$fiZcZsPNd)%USE)Huy$7^3J_9AY{Wck0bqH-F{W&Oga6-)Ccp%2kH%%?U% zb1J6@Njz(@da_W+rF>gWHRsXD1P;+I62ESeD%1EAyRk7jT-S+VqO#pV17kVVC|#8b^3%l8jM0<6CjLo-|0|TTdR)6C z9e>dF?A~0eibmn6x_k564Va2Z?gEP;#LUIH2k3=&_@&Z&oVpG(ppQ3VTthi+x~RPW zX1mT6R{35?v3B`z0R^Dg+qgprPThDGVlu{eMbCjW$L`X#U2~HJY)AyITAR;+M~v}< z=7n+NOObMe^Dd!?8UgMF^d9)t;&VBh+FHW*Va!=ZLc{LZNl!?!+GZg9124f*ONdGo zv+ws0Hv(4l_bPwc0=AncA$a8qPHmhM$2Nd&>vTte)khTIHpZH<_(f^cE?Dh6joR=|lHX zlT{ueqeE(1Z$OoVBdM4MI0}Oi7xhmeS87{`9SC`IgL!DSqGUv&X1&mjdB@}vr`2V7 zH7#dl7>iTs^fp}_UUD@5&yX&D+JNmIN(eBy;Gns-iyHj)>Inpc`F23(-0*;Z5flbC z$<&Q5Ik;lKk=<-*In}cpzcl=k$DWjjN+dki-$GSSpU$EhCRp*d);-2-b!F7aCC>yc zS$RpzMU2)c57Dq;d7_GslDMI?qaFBz$Jf>s} zAS?COizuc5kmly&SKa1T2sYaOH*-7|nNN_feYel4F)py8R{FMUVauNxldV2ev1%`{1)d@zSasWj z!%yaSlacAlHSP}GR)rcpVHsIJ15GM>=S=3o`%b5OQ&ny|jrNc_5P?0VJz?UKc@zu?Ihtit;F3+~}?1crD@P!2sV>-&kBC0=?2YT5Aixu$2 zafuz9l1prl=ja6UdWLytO0#8uP_rI>xkIoN*%<#d(Gz`g1}v~V!54efhP)TVd-)p< zWz28XZQ3Ol{;$3y`U}U3&?iqKxFJ9DDlRJ2XtWV`!%)LsG*PSoX4}@zu*f5)Ru|H? zUVCl=&Xr@ENSfw#SxVT#uiHoHF;0T-O;Rts2^(bP@m-tR#jR6jygM(01 z?VQKLUh{}l9jgl!gDOF2qAtYo$E{wF9alq&%D>JbAOcXg)>6aGaLvBCnlY+G_ z;cwNok9EH?F#U#=WISP1y}m{FJiRzQ<5CEG6eUPFExbn>BaKH~{%MTl z>f;;(zJ;4GkTbCv9DVc;ouwBAiIv4+Gz^FsjDD&6h_1!aJ=V@VjuhP1DnYcnQ0IYQ z@uc{D?`KL1f3?qcworfBj6bEbOwF#1bkZyy2)G_@Fr;_HCIO}b6y|&hK-?ZN7cJWT z+^oW`x;&9kK4(GTbTJEVMR9P71rI zwH`I>il~{za-AnSn!lx5d=L!-(Hxf0gG3ghqq>Kd)3r{5vOm~y82+53KWVBJtE^l8 z+osWSFqoiZ=zvnWox)L-YJdhkF@Q|WN+!~X+-Zh;Y~pQZ0XG;L9zrYJ+DG&2gDbL1 zUWm#3$RrFIY4Fm>IiEmJSe>Sl{=|YQ2c=evYoS1s2pJ1SGZKqbd$q;bF3kuqbJ4F% z0}ij+(PpyACHfOv6EV>tFx>c$B(a|;YNb5gwsw);dFrn*|FR`sGmt=-k&bXu*i5pY z&PaPyT!h>HFsG>)vLyzDgR#jVX%I#cUn!6(ZZXpN#V;JOT=BL31V2fKf$0=uD~XH< zBGQ#<=}fdK_2Fg%+bypUmAOQ)qZp;qQ;=d$PCQ!C#TqRY84BsWMr;@H{XRC}e_HPF zqV9~Io49IuF!X^txX43jn!xu*y<>pF`==g!-GWnw6Gfw}Law8&Xa!EyanOuTA3-JT zPPvHSrNv1BvWxBTTfG3?!MQqQq8@_b;q+JccD4IGqPX9rBis+>t9Fh{ZJghC7l|Kc1ofJrZEe*iGl z1?y7-vIZoXP_P3Ei5b6rbpFXP;CZRE7Y(tNcwjH3s{p-{4BwNLK5Gyrw&UGY(!&Sd5z*|?WF@=myb!FmnXTKTZfFHip&ogo7%q+JrlGaHOu_HW(TfuUFrm*7E=h$od=ROD_2PB zHHWM8Bpjtky{ty-=-3umIhIoJn%KQ)dlRa%9a`wmI#Gn4R(n9)Pr|R3HLix~$BN?% zs8GoYn$X&(Up4xSaKh0TkqAN3V%Zv9w0$;G>?-$4pUK(wTWh=rL=2H+e|voN2O-_) zq-hz_Npq~*{Z){zL@PX!gA}}xEW}7>w)A9OE8TTbU6gLjTSu(d|M>J*UD%J-`v1a9 zf(p<;FsFp^y^YVR|0}o%`G=f3W`fOJ4lTc6F_$hI(4pg$4U5aiz_wGl} z;okr+(D2aqx4^e*53oHBm#GHw$)K3pb6sjfHgqMmWMtCJt00D3pOyLCshd8PZ6OO{ zfyW{80$m}jM{0Bv_wG9oqT_lF)(9s%n#}R19m=PRvS5h!;$B_ZQNXppFN<- ztrpgrf#M}6DOJko8!{rv23-(zTuLfgl9?Iqi$16Wxd?38vHLOw$1Qv>v~(2FX--UY zL1h7Y7d~P;i}{0EGCl<|UoD4rt~k4Je$@BgqXDN!2DEB6Q21b9HB|1Q->}-;`b$`K zH}wlz`7YgTA}Es$8T-E_U}r6fVEJ?94WPER)x-FKan|%7TA$&8w)8qk9AP}a_Jvxr zc6DxY53K$A*zm}Dpm$*Xo~K_fCg?|rY~`E8j|W{2KySJvbd2}C zHIZdcc$hhh1svn+MC;m){QWnAtwC0TxW;-OaBjPQ;3I~-jb?{@-ykzii z_Vx@FNd=eU&l8|t#0@`ZnWi$jc)8*NKZiD!$uN5J&+`DiAdlTZ7=4 zmY-3akOoLXQn3=EV@v}Uvr!VkwH3tbu^+Yg5F_S>3{1SeTC!&b8yA7OoiCR}r94PQ z9jp9G0V|uuK{b|Kf+`XCdyFo`JdJq3laH)Fj}ri=v~Ct@v6dNo2hB64d3%+OKojhKsyEP7-Ykmre>+ zkBHn{ML+3vdPy+KP-aN%L|aSjlA$Dtgu7-6KvaU^w!4ICnIV6+TgwqxBkDF zJTa1gRC5u>f_U#PN!xk}bE0cN&f~F?lO2X4)YF$F!CL4PFpu-hnXkie${uFE`rG zN9~W)x*bxPUONgTCIyUpjn^)=D&9dD1dux6hw}66k40`ufpq_|L(yvGk{L!7QCdN- zMeLp37*hph#z5lU!tP^gVW>}z6{)|4D-s$4zX!F~iAPG(Y~9V7(O0}a5b}nJ*Q=45 zZXzVelrBA?IZqp63v*aCVmiM-6=fiy__$Alw^M+CA}xV|6lFlcP=TPn-x|US@<9LB z>&N%AgR7B^r7?q*GlPx2xxK3ky_IuJlAJ;?BU0$qdt{_|o1@s3nY|~W9jkBE6Fr*(Rlb@V&>kz5^xzaxYI2w<~V}Fptr>GTOinrCXmog8u#76z`dDw`brxC{M9vd5AMdJb55j|i3GFheJ&n8arg>fS&lcgF4J3TH#}oWNTq6P8;3|QEfU>}V{)KDQ z|G~ArgNvoTo%1)@uJIG{!HRGpPrTq66N0Q3>xGvwMd`>ZX|3Q^mxz`O`Al8yy2AsE z$4$SF&Q7objBjL{0RGTcF*kC&32Js@jXeGo<_)oRqa+7#@jhTb)Khb1Lti}W@oN8NK0d+UGPi8dlKD`G|Fan2LYAo) zgeb*_=wXF%;>P)-*hgeo{LC)um9C5%VkAU)b)uM*-jxoVg73(8h#{=!As*6xgE=E?kC4_#xIS>ZWN;m*Q?A2*;PZN@ukYMK*0 zX4y}l@tJmycl4PJLtt3VRXKbz?Fut}0hEVU9cx(Svh`EG$>;9%beI;` zWF#jrX8@4K_^zI5nGIva)h>h5Pk;xoz^>uMZ=378-)C998H*wA?56B^xi#ZPxn|zS zn?b@+_Ew|q6(bR(n>qDqNo>*PVy{V=b0%X*8}-(dFCM)VihgNkw&|p7>Ve#3j^K*O8)DLLT)Fa}nvw$DZ zvIqKsaTdrv;j}M76~Zp;{MVOdIF@H#>S+^>r~jDCZt_uT_9828iRAsj>~9;P@dZ7W z0l6-NBzytJ3+m?eR23>`9Y6;n7i^{m`he@P`p(=zM&Z@T>)ykJTmUhXdkC{l@(UW_THF>^4caIn3jyf@qb{3p;h<+_~R% z7!sD2lvM(9M8HB>PGVI{vvoc8AM4qD^{fJrkMrjkj|?+UNV#;a?JiV_*QcU$LA>3T z*T&u$g3V28@1Be6ATu1+%bSSf#FoU+dJN++N2ESDdXgY-DhyYa)=gTwD^HYC8s10a zo!~hW;Dn-n_hN^Syu-7Yc-Sv9Ta7q{EWV-gW)P@`TgR1D7nq`u1vWdPdlT8hVHSL< z2E8_x))R+pG#!fp3dVO3++WMsclK!uakcDisqH)o(d%VCuQLaK$8pJ7Ec+Z%t6IU%xL5?}Te2EH_QX(#@$i7la(O2cB@3rDzj~6>Rz(o9_I5^n%pkdn|Ce3F0(3hQ_V&VI#W4K7>?6MFiVymzdy$;GfR!2>=y&#iZuDPtjf1icUme7>_wpHDDR=`LI zr7bj;m@QSt>%i0HR>52Jp6VkoKamxK3%}P1Q08L|9yai0nHzddh%>ir{_{eX*W3Tf z%C&)1ZGw2tykahNA<$6L-_w)R^Bg7M4(T5|HXiYa2PA#I8D#&{?KQ3Y+9jTQ71i+# zU2vmxa!+O%+9HIZxp)=rvg5a+j`a`IKUcYd2>gMLLFtbqN(N8Uv^_E@djhqkLhiM(>isnC#89@qYyQl8ZqZk})lhg@S?d$c=H>Lt210rNKDH&)4|IQnvY z?Ock?>S?>5HhddMe_cwJPMGmPKVZdgmc8h=hS+B7XALr5O@S+_aHcKS>eZ-j*BVL?yLWd10A6}Z{Nz8I0ox! za*5X)w+B__c*ApEs1+k=xa!!VZ>)i75U#tV9P4+a&W^_0IHeZW=SM>iUPmkYB44i_ zeXU`~ywJ{{PE)3QnFnC=61&-ErcN_;$%jAQ8w~KeO&|+ingEx#1bDS7a{b_N| z6i(I_6Az8CTXU~LqJ;o^14juUHF4^wsSF7 zE~~wn7ozyj&AGpa%&t4o-j0XO!-dA{<7S<|>rK-D+dHF@MsXjIN1;(C(9q=6juwWj z$2OojaWpI`c0h&6|A2;D!ioaKeQ2YTK-v5)s25E%b#R=IH|%QqWuqs5C@xN%IW0`fC0&oju$HD zCNmR<4^0+gdOD8jr(oA=#EWH9_R~6E0@8upQH;J?Jon0R=bidzgE8qIGQ%9M{PaP^ z=@V46$-{;5;N#{DObizr9+qwA$#LZ#4huR1HUCywcv+r&S=-UgWTLnuHBoT&*dleNU=qRM0M>l0YtK z?~O5H?Drg42w0)k1(hAIow<{3*<3HUJb~pJ?Q79gUA5Rf+9WN6sItd~n%=|vo@2D= zUOu$beOU4YC)gHoJmA3^v=I(1_FL>CAU?_9rEBNnhLVxCXIVyXPSmY+CRH7G-LLK- zfz$pxWRwc~xH33YeZZgyV_cwmNRX9hBY79I$i)DJ=<#!8AfED47#iNm zDvT#?Ury=MaLhLQCcDS7F|h$jAsCtR)29ZsXtMh?0o`?Mj!NZlHNKiBaA zv{CXqdD5Ox>`eQ(rCT7UIA(0UyP;e=i99fSTk}sK2@boGge0O#268_%oySnzBQY(` z${Km1$lHQm0x+{*i3DBBWxL2t<^2yM+dQ*oGU$$E!E)A{Mt7K9SLK!zN;R$YWAM7Z z?*#t{W^9EX#48veAaA*U6U>2Gj*61?8Y7bLQ_b|c@_2kW z-_$+83o{w8c07kElr%NTR*x!Q->i7M z2)^o_z0iGEoAoS_-S>))cY^)KSRx96s^<1~Fc$~OsPupgAfA4Z zXYXV&hS!Q5mc7nU3fo6iFfpk%Ga70yn*mc80NKQTY@o=Vdy6Vwn&GH9`q(xQI+-UH+U|#?Q!(-*l$1QI3ooIUz*v8&)W-))2G06j&T0`kJe-YH)rB6JKCblS zLb*8!rQ0}kC~o>($e|1r6cGkq&&Lj+;*4@g$MvY)<2W1?Xi;S%JY`~WSnR;HB2l?V zR(MrWyinQZ)ln%dcTn8A^nuS#$Q~&lVwgARxX}tWpM#ee<5K)-=pmtwZqD6Ao)^<9 z2{hjOdJqrRSHd6j{dSTKLB`-cY^Dd5zJ{m_C;Sc}+u;qZ$$;z)9);JhCI~!nx3%Y0 z+f`9@CmZEmMfGmre@sBm(O9VSJ6}2n{WlXp{y!$*WN&2e;!N-2;Q~u1Pd6(kt1v-R zr#!vuG)gP~cXX7Yc^Bk6`GSNhTYMhG{{GoN*7M(!vH$Cj-A#??jqUBsEX_MrdZh;# zkviYdM6UDkwHJ#T11&JnRTnQk)r@%7;2WhfimOd;w&Z4|E71*wIv&U}x}FXvL^Bd` zlvoF16mM^#2xkH8n&3R%T11`1ts-8sEhL7uA_yF0rwa4N@g05XbQRhOy|~J65N2?V zN)L&uq1v!o1Ai5RY|8#DpmD6AV^bSHx}ap|gbu@r5~1y|Ej^~;=vkQ{`BK%dI`6o| zxp)A0r-Vk@n3&dnkM?8P{Jfp)Ndl~`N-b~%GO|RjN(o1Rb3Eo~yvOio zAI5ncvIg9MQ61*`13&2F-F#pFLMbuKIdjO<`&-qN&`;^YhmZS~s?hZOK8>#6iKnzC zS~{^3cGW04Op7X2Qr2=&`^8UfH+M=JzVGFo*XG!LWq{bN8QCXY>jZ^_ z;wji(jODTeqBTpxbpgA+i*=Rlpnjc9H0!zRy7L0sw43)+j8O$gUJ9q>ff6Asf$l` zPdMOHs1QG}+U1YS>!+&;hN#HssMFtSw%Y9uj_0@=%LyDVxHZ~Tx60lN%$cdDs9zmYgFKlxeqf(wX zQo(sv5XzE8aS$iTc}}6v%d{T5Z1?W+^t!1^{I8__m96+_;*s+ev_sT z@^Ah^_+Lmfvj28U7bnAisPjqwX}`vf8hZ6XgHR9R6eQKAkPu~eJni~3jU56zpAsUH zJ2G9dcuZu4De(QNvv^+=GxTMMU0`zfu8TJ-$Ppl*>NiIQ{>hZlv)1>jE~Ve$+psc! zbcDnGyGB=2X0bB$l3xKgwpdrD&ir-ojgqPCrjcp&WRa8mUi^s_qML&bc9b=ie*m@e zE`YzRvu&|AIsuz(y}Hk(Y8Uku4NOrOw4#ogLN!LU@hqlTaJ5-Bh+8>`VJmZzQ1N~~ zBV8sbfeoFF>rj2f-Q`||kS%u60xiZJt#3X{PE;Tcr_a3L28J~?Po|xQ+g$*~UzXzM zuhPYA$>c)O+0P$D@R`fE)}G$44CxX1o{W0OA9n6yi>yKg=~%h-iv+>sQgU@D#&IU1 zF*CW)vs@b&6@d@{;ZdeikBZI zD_aV{ZTisIjWIZoc^)*qTN&wlhp`S$$gz62d(UUutIs@lG!*Nzl z8a3@IcMVs1m|X|!n{TwE%B;-*RLBosQ7Pr=;q$OK)S#>c@yne+N=2h=21->i^=G#`d-j z_I9Rr-=S5^!_d~@yVB_9YU-*qZZ|*(*KtI%u3PVAK=LpTI#F_3kSEl;A`TKA*t}7( z>SvE{6R9``49~uIvz#~sUWwTbQ%W*%4ZT`{nP)ARyRhw8wWOOta6&VltR<(;Ns>zl zeEJqniw`R;1v^$0a)1uuyjWye| zZGJW|Gsu$J&lEM0IcG5OK zBl~}W=ls1QG3dJ)I$0VT*_b-hI~zMYr>Km}pD`kB9MM#z(gdjfcnuE4GwMHtA@ViI zUXBRC(rE$>9{hOZkzZ|uLNY?u$>d_;XE`DrcXl(bq~}3)aZ=csOvI7d!~r^{kDshrT@;=PTq)+u(a7^r=eKOz=MRkBj$gUqB@=V zOtKD)617#pMy!ON?k7{6w+O1vS|!Qht|t(5WkE6?b#ZW!J%RuoGp2km9jQh&^xZT| zIaDwLJbdtg=mrL#t#l$)*k&oKt`MY(%+`^5-m`TX0mtt=8^G5R$~sdbR!u8@NyrYK z_5NdV2#IO}G&p{a!g%Bd>Ao?2-t-Tjj6ic+?mnY!Ax}WrFev5=%!bJj!VVw*vHK`E zm{#q}Sf|pmMRG?%o1J79kz+1-_$}S#PsR;e4x=K7Pd_g{fwNT}nF~P<+i3K;Qj%Ds zOJ3J`&ts3U>X_h#6MR$F2<6+&fYE3G#2X%orJt!xMf5Y`?&Px329F!%36+C+esT<( z$$e4Vo_p#C&nWZLXq@O}5d#i1npD?Y-t7F>e?;Z?UM+a>_gZH8uL1=BztaAX1o?+= zv6x<%K1R6EE3e3zq(FM`!G2LxM1FtBnnc?T+C~{mW>b6nFdKYdsFzRgQJ`C#hrX4; zS3#v)qP7&z2rzo!RcJIkr6V|qaWOf3t3&6g&9)mC33GnVR2~4wTXN8%mCxUL6CZ;{ zO|CnR%BK$H?y(d}P2$jl*3)t(1%-)tgo4bM)C4T$XvW%T=&rx43^69}Aph8P&W$Aa z_r@F0`1j|(i`)OHuxt$N%o$AW7z|xqEa)999R4H-SPwA54L*5CHiO4L+Fj|lZA}-* zP~nMIkwOfQjk?7N3V0vrawk^<7*mBFulPpY)Vw~u)Zx&f=InNjGe|?xc?(CHB zCm28CnKB?tM2ZvyINm4BeOY`jHzY-ANc-n|{?~N46^xQtWOYF_+T-_gW(<*t$_%D= z;Snm#ThPCXqghDmJ10So=5Q^_CC(a!UE?&UDn)Dl{$Y-|`>4liu#WJ57@PQ&cZcg_1h zCL}FNG>H9=3H@v2Ap9RD^#393VECP!8ve8Q^}lhJvjZji-uue#tBgi183mrrgB4Xm z-%wS<$ctm`^W z&VD3j8w!HB`CfnLTEFbI+!rMyc0(+B*DG({oNbAHNVZCKx;{Y6X6h-51Dhf20_umn zU(u6d2{)K&L>d5W{QC^u)4qkKrUf8us(W>M#HM#VMjrx!k6)mL^)6|L_*=(S<@kF( zd({Awd2M1K8&1jQ)bE1-h(p$~^6T7;l*ySQ@;(SQ|xBwH}MuJf@gO zxYmcJmM*8{Ps7Ze>`rY%Fx<`^N#~;H8Dqz4-v}nOUgnuk_0D{iO9S+RU6CNPLNNpf z*5wmFtrQxJN+=i6+bHUicxm>bH3>AJal!U!nJnAu!vwJw?L-p`iU+y_EnEEa#l?%A2;Zcf2gVD$Xjy+$sSe#U^_1 zE%wf0Pp|T?kmhdtFv~I}a9`p0Cy>bRvkqu{n>otAM#}%UnY$U8B%<16OXus)m5Bw{HH?>o1jC! z>cx_iPDlAfNmxl{f6a2MqIY~{z(&CO|&&oBJ#8RyHTCG!tI=cgGl9!uC5n!b<}Y92KA_)_M;re zhQmbIRT>I-(9r7Zx3)D0=?O$opcQ|5yal&w1Zp6~O{-{2;Y8sJn^H(1gsX!m4YqNwvjA*3GC?9Ug4tt8v4Lr@l zBhCX+Aq(v@Ad|a(9!N)s>*2BR=oehb#ET72F2ZF)j|35CkEq>Kt9(IqjNDE-zaU?^ z{^F9mGg|(z+;m)*)RkKoy~feFY&=FA3bj_MlBW}JFqq5NQ%q%t_aZRfp-hSA$EN6* zRNfXJadWQ~nZ%pgR#)?Kd7tShG{bJbDHF$=E{OwiB$$p+-xM?al_Y&@8z1>|O?r~K zE+F5svLIy6fNJNK})=+xIpK zVz*-6`#8Eq&O(W*Xo+EYPOT@i+MB!}{lW^xwgt@eiLmc62RtxMg|)!r7CeO)A#5aD zloL;87=yklF!exROglCdI%Eyg$I@NmX7iymOOHeNW@X>gbqaKKz-OlG@=<48_KWI- z(S`%Y0SimmOjyZ26k#(A(%vk9g669o`oMahl5xK?u{J{8t#QDIOANA^j}#$LD+8$Vn)V~p zrTdT#4S9oC$$On1CE}H6KRjpgT}FG3`-W`u5>!&J%zr0Brj}$+^c@)I*Snfn_Ssr zzNYiAC4-Hcc5!_V`x<(L>*ERaGW!w7<8#%2xWX_Z-nJ8-`g>ZXf(CJUNV_yHcUM4+ z%79Qml*J9l@N^QDA5=P3!EiBOE)U%{5hw$V%Wb5Xn0BpnJQy=Ae?ver<^RZY?lnVUL0in;IKW2;>A5Z+l$xhht;cA?T+SM#GGe>B z(*t8k^c7Ie;j-!N2In?4f0v_K6Oib{^*jdDRY|zC1O3}GhuuKJA9c(TF3~pM_dd12 z9?=U_kTX{oO^k;^Y_5Xw=+mRFH|?iLUU`{_NP{<-PvS)L@HZZJmfg@Z8^4N=!k;D? zhAY*%=-_&XvMxGo;H^_Ph)T^L_9~&^J;cE=9*Nr88b83nSCJ^u@s!X{@)}+d+m0@# z7TP)W?~<$LOLXi|DW5V%_w$vL?m`A9AAs+E;qE7at)mozF-HRbe30%qqlm6rY|RQ8 z2$KBOLjnyGWXi$IR*JUCsjW`0MBNd%T>^BZylHa1?{SO1o2aFrPQRhL*D&GGJ#1u? z#lSlD0c}6&VBytqM$qHZfrN%|&>=xz$SG$h56?XS39Mj^Ys%;Hd8X4Te5L}fcu%HHC9Tg%r7ikKto;S%7a1FB9aLX=4 zPS59^Q;qe_>sdsYS^!Rz0tC`$`SvV43cZLL){KjVuJejgMjJKGCrGa#jP=dA-gIru znN3M?X3rhu1G@CdS`GdGJ}g6gjpIZ6ozw1O{hNgS{__7S61rKMx;rx{iwTL!iP77d z0MvS8zY9&gY5F&je2r`-mJKVqAooZ%(?gOVw27!&v!F2jBw>%UpMswx&a>KY4f=<8%m z_rjM6In2f8V${IBwHV*8XgcYx5U-vcI$>xaV}rXL`=D zLO%sr#e4g~z%qp2ULFPe+IDt|GgQYOw&)DFx|SgLe$CNr!%a>MK^XV7b>X zSiTg|Q^Srhk*hzKPvD(@j8k;+ONVsNUr>d$x*@v8u+f?4LOZ+H+HIAsV;#)QQfW4C z`UK@(;kG58Z)t|qketHDRuM6qgl#opeuA?Odk!_dl(Vuf!3QAUM(9!jJ`g=KW{}4p z-HG6@9dEa0pU=~LZ+BU_0XzXJpj2-TOZototB6NvePx^}RC^Xnj8ajYD~H6qkkBtR z3*r>Mx@@8p!YGCnxT86p9L=UbH4SMOL;e?7qAyiN+?zPIS3!tk$VE5XB)gBl=n6AF z`^B7FgPA_FTH!9;%wl2`{7{_7j6FwE~ z@ed0!1aP0l&L?nGcO5$o$^LAB%~hq$XtJjm9infSbxZ30N)d{nH;UE}MIW`RtC;(y ztt^G!fK7_0`mA-g`{EfpqUabJs))(~=_G%j;VPH_QireuVkoC);0(@L0yNfs*ArA7 zFT;YIlwXgHvsgOnOQ0u@hhF$!cO%%aZE$+vA1zY+xY7?D#c?Bjz#MmEGFBi*^OiVq zT4Kf|Zb_cQv&f^~<-VHvqIM}ujp+O-zSD7jPs=u3s%7CQU13W^&pPYWgU#^3CSIQ@jD3o1>*~N@R9#>kDEvOAhO=%2b0NEOFJ-ny7N9Di^4RWo0fub`}sQd{g!v5@P7HCfC zC@ULhb^e=Cepqu1I<4Btf;m1K*}p2^Gh=Po*F!do07$7nAtFk z`HaM1(>;cKdMJ2Pg}t@(&gbPjhVir<5(cMc4|B%yZ3A9M)wYz*Gc5}J~0Kv ze*LA*JR_4DuXc3r?=}h;el7;<+n3I_dQXDTf=FcTa_p$Q35~kBj#3vVUZWqnJ#@k( zkhfmDxJaN~Lq+=qrDKD|5@6Semd5sQ1J5*d)X$XFZxj3*)w3Pu#xu!!7qbCz8t?x( zqKPM-3$6C8<*)u#%TxY$j%+OLtS#-#{|{9;YJA_DFi0D3G*DLYV5)9w1tP>)^nnQA zfo_zM^uQpY+-qry#e&LiG5KGe@9}Uvv8EilHYc%Ho1I>$N7uuFRdT5?O=>x8N$Qp0 zFzHpQpq8JpEo>Y;bkrFox>9L&Z%_29i!J23jK{KeYQx)4r#kP|QE2-GFZQHhO z+qP}%d+VI;zUOw|d&cN*^p8Ep`{&(z?YZWB_FNOs1Wt>S&#-Rfz&}N~FV&Eoq$&25 zYhUIoCzX(QeYGWY2sjhX`quOV+a3iQ5$D;B>lnQySFan$k=SV_@2?OcnYFhq+_ zEU`1Mw9wNJhY!*fc41LXw}DDwmYqgIx&8~I#P>oHv9VvLuot0$kYA@UZK^l}nF(6N#*W|1Xshs8ijaSf9)-l*=0pO5Pvxn7zHUgZ zzIpb=3?&@`yDlJ~`@umKMD($U7S;CX|22`NU`A;$g@Ajp!LE9 zjvHQ%kI}~QC9`x;l{yXlMXl^}a4osYd-AxuC{IcVYXo+H8{Dw(D+#DC(Dmzw)Ddt- z$j>{W3fSfux-~_ZYnEX(v+CKFV&pJPAMI zW-?NUj%cP_F+Wc7Zs5W5m8NWF~cX4HImSe9?^bCU?|zw3suEb#mWj?G%7BpyHj z;NWk8<6kMIo)I8mWnc*i!~PBg{6i_rVn)n+@DT(b-k^K^ZTS|37lUW*@H#wolJRva zKe60xI9!U0CM%RFRGeb4K3ET&ZZY_<826-N@@LG{hit8}FX9TooL+e$R7+>pz`6I> zUN*8z8=N8#hP~l07sZmZ)9jR0rvxrv|`IB~>F zcT|11Fe?Ch`Os9ffGPJJMG2_G^@r%0hp2a zx0vzmUtorwosF%9nT75z13f@G{=d+DOt~vO1&}+xP*!QL899IRjvPyM_4crrahveV&7&)d8;o4^=xvk)Sij7Tq1zVlex=Fb>2`3Hn}MjYRWh zY2z$=ug_8l;lI#?6P~?2tLN27g47KS4tE?V58SOWf3jcOgla<2>N%jG!eH?q3B&dE z&hwe%c_fFew5xMq+2;W5f&vJ@u|u2S({vt$9_oQ=`hGKs)W+0IkQ{Q~B9@~aj@38TH zJ}I65noz%-nnTqik(D3M{a6@Y>zC2f>RT7bDVkk{vF+YF)als!A8G0Qwjx{!0Dhpu z{@pPF|6eGmp@sENi@*3CWwBiV+yDgg-Jp9()(CdiWoM0-t)^?a_<#Y7t@yyzWfnX! zxw5J$#WBh9x}zT}`!HCKK|d5#Q1h2tsQq6)FYsD5EP_VLaW-Bxvpzjt4*a6Dt=_FFhD&9~yM89mM&l&E3N1swE{qL8Q1WF6&0}4tKO?MC z^f`}=CJlN)ofqsSK>c1~Hw7D(;525Cp-D?;M8`M`9;4XhFUOXWqNHuI)^})nooiRS z=cG-(er3vr6%AIw#bGfjpuTkk=My*1+HvifBXxa{Cw{s9lu((osIcr-cR3ES7&4s| zgDC7Fo64XsL@Cwp7`jg;=9qnhuliFbJZB+_yH_XP8zhSj$_OgvC)*xAOijVn?y1s? z|LQRELF8@u^*+N712dVc_~vBj)-O6q1Cl@^aUWgE??1ymcCBdJq!Hj{!bi~8a#QRY zg*^TUv}2?v?Zp5P$O!E3Hu#^T#DAUxjm`B99RGqmO0v?wOTjKGDnn~y10szhBEO${ zaRCYFP2)!CwUl*L5v>>xbZjh1@s~8iHbW>C8Ovo{aBsLhol`$q44~B9NJRf!<8Y~; zrkarYS+kV4Hw#s^k1+=wn)-nTmk}MrlpU?2zSTu-5hP>ej38F~ecO4F_Uv|o1k7P| zHt#Hu-&--U$FON%h!T{9``5a)$x!r8Gi9q{+YUbKlK18pep~a)_BAP9Va%Z!=Jjz8 zF^JApXjv+^O=ypMu z1^5ys7W_cy0^=jPq|Wp@1~VK5L}-{0a~s@@U4z zAbs{4`>W_?=BL-R9l&UqoBTitX!{qj4!c)TwarI)NKY*MY0P;2CH8#pAipF@!}XMt z6@+EY`Lj1sdhe(-ynwyZE9fRlqLizn3}aFvHKZ9TS<~xcS{@J`QYv=d3Oj~M!PfCa z4_o+zhzC~#zBI2qUS7x!%jQHsu}U=(LUNLNjC|pfEBv<0Sgi}i4?(qikqiBHWygjk z{ld((;?T<B7NPt+AXgC$h^EqA$N;LaxRB6G=NKDzs?BmVlBe+op<7cLP5p&cvV> zcb$GC&qdtj#P(%#8NNRvw}97*ew=1{H*LzKt8s|LnAK4OqrLEwNHqri#zRIVG+?UN}NAn}m)fw6P6P41#mhSObw4=o4IkTRd11 zPf@=;+R8!?2BoewJmY|;rGnrf5DN_d6Jt>qG%iJ?mYXEKL+T1|#bWQ*kC^SRSHevG ze1!E6Zz*k>#u$rAcT0I0xjU1bDQ|z+Q>&WSGYH^ot_JgW_VmxG!N1y*k*%3&jjZjJ z1AGvyrQ#sz&{)+@wU=yB5ShJ3DluhC+24aK5DEt*h=!0 z+}Bt!4r=NYV2*^*?AhJu*K9Gr-re2VZC$@nT|dS|Aug;p;7EG6K<7;R%D6wu^vbVE zF@6Hj+Xry{`%LE7e}V6&I!=I2LK_+*3p0a%pg@{ZmpPzrtnGpVRCD@M&DvcxLERdT ze;Rw{q30PoDZO4v9Er4CG`Qf0TWu<9@L6V0ssLq>DLc{P4q1k22>3p7IPf8EMlnEHZNT!eOrnj3r0JnTWV}F zhm}ZvCDp+7-U7Q2ctJAVP+y5gl6+6)UERJ!s@H_4y7x~?M;>X)Gl4qhiMF)go+#T` zC(NX#0w?fu#SC|{=TuaT>OLwnn49UYY4L|z)I64sJ<4bx_~nEwX##*LXi9ss#D%8|EvQXJ| z2&lrF3Z5n)89H(pj~w7T$9ED*skO**+p3G)HLN_pMMP>@UQ(n@vp`w6Up9v%8$@2B zEy#6&KY&B#i{0exWp;a$wbAU@WKs%Mp_rq-@<-dP7EYfq%M=NlcOlvT8gZXymiSU} z5sKQ)9DRmHQS@|UHU_Ii6|$n*=d?HjL;uQJv_Wc2i* zqzze#-h4#`=oq%fSfvdu9a{?0Y1gYTOR_}g3_bW|@X4yEgRPxlMz07G>?3Db&ul>Z zxO)aZ&1|lK=&(+ei|znj8j0ZdDA@{dJo4z3vbM#O%t$x`9PS8YP^oaEAio`*p4&M=A z7T&1&7@>O}XRm4N9Pr(0TG3%#CJ#I@H6!i3!To4P!-r|TYWWpRzREtmv}*-FXfp7|R@hKnWA1KmT?}aUuF( zcXj_e$D(xpDd8R&)~>P6JoGumNhO4J1wCan?7UbvWoxU!FsTCnL@P38w8PDeo0eJ< zhZ3vGSJxJl^ur8^+=r-vFn_kUWC=VxHk(W&+;LYRUbdGyry~WwQH~`L)hDC70`P{U zgyB(TDk)6iGMkQkfvx5J`hGorD|uP%FSxX7L3KtzPU3~UrLRuNL6{*;_L@Bh)A3W! zl!WmK%*y*h`o;G=6Qo!hQLA@v2m?|GG@|Xe# z-`{JUH;?ixb>WiVyun_e^GLwtZy}8;HU+~(%!bm+N(2+Sv@VsoqzwkvV-5qNEwAlvlqIZP2b_L$xFv-yw=5boB7Xom3~b}meRAY?&o*yQ3W{6EvCXRi`dooM&d0hQDxh4a8@^N)Sb;yWiShLeLm$%@D?2C#!uT-pfAs40Kr=ZXTlzKi%@(suo*=5;jelE7yMg(YCcHRTNkcvdAXZwsz|Z)q+i z#U;fSbt52A_I%#=ZmA1g2dg(6isu=0PX`XKffHsuE7L!Xk)$?VK$r@~U+Ui}lkXeP zQ^MQwq#aBtZ(}e}%YK*!=!7$@O>zR*_e~t^Q zs?qK*e+);EW_i3@lh$#FI)Bj`AFW9v*76T{?2MOnd=2b)Vz)FPi&nMF>T{Lw5c#Jk zK&EFyEFlmYOc+NmTjW?)l1ITVt&`bbcUW&*8py-?M&F<-na+0wx6B++(6F?z$&58+ zS`k|)8&4WNzaaEroU?jeUlT$8l1k2SCdN||ny8rKwwM{=g57ZZXo@bxb=oMj7qNCA zna=Pv9_~YUZf}<}E(>$vGaWH)f|YNoVrG&p${2I+&^i5pq|c1;se>`i3{#2@xEw+K zn;Mi{4&=K4KZ#5fbWoY#YnIXECy%22OPvG{#7^TXr^W5$0o6I3_82)|V}GEAdvs=k zq2x(KtwG8e?pjgY9;ShOR|L9g4pfs#*d&F>^^c1luvkBX&(;gr3{6)+zR^&IEEuVC zj1ghhkHf4E#_3L8<$7Z(KU9%G@=^zCv4A9|(k2djIl|#_+}jVdk1j04q6D+cQr<5> zHXI_;XJ=z7U*{^;T`U&LhTa~tp_ED@SIualydEL0qI}T9=(cSO4N@0y zYEhv4(v7lMO{me$c-d4f|48;TmD&Rozl1nh?;ZrSt_uUsD%odKFJE1n1|wSFm9*zf zZKCYK)eQK`&lO0QNQ&0ndc|eHK_XiXaEUhLhqc7VFG{5u_LGLGdh3BS)HwO>`>)M8 zxgzIi(V~V8OY2q!2SfIO$MYk;ZU#@u&fJ;!@54N|T=LLWG9g+0IEhZg8$0iZ&;bgj zG)`}8F>2~yw-M46V`N7tVnJjTqL9Oh&p3@$ZFc7V`1;+U#}%@| z3gSc1DwscIuwaL_h8!;-xG`+LV%^IJe8=`Sn$NIAY}RUw{);rNwQW*lC!T@a7ZRH1 z8{&1hP-wM0t_0z1uhKE~DvhPM1UtWz}H9>3t6UU~~&gKSDJg5HemY@qVuug0wT z(nF{SgSM)kCvqdX9A5`75nmCKJgOTt?_{GbddsEmNE|REf{_DsJ+Q=(m1o}O*fih` z5{c9>U$DN|^GRwtkp`15|t8drZ4rI*PbmcE!LyS`=F>wAna_y--mbfUaZ^q%>SMULiQIfb6a0Na=9g+nzUf?! z-2Nm|YFVJ~)**Fp;pz!Ed?qBOc`Q4s*?7B{!pyIkDIUdkqoYx3lCWXE-YH}>}mew zi1b2ym;-ssdM*oEbJT?_wMj?HO8pDi)jypXlWQ`DoO#u5H!7VB?N==&B5Bn(SC!?q zjI$3~U4H|m3{&YUJUqke7Nk%$)-JpRotknNExV0S=-GY2x=PFz!ATfF&&Ur*P1NIZ zpx^*<{xuXP2t_!NS<>@9baoErU-#5Sq#Z&c=Bz^2i$iBtKY`J+et?)Oofj++ZOcZ# z7%3!?LWpmPkHmlp6A;HgR?mR4k+x~1<`-TPBghvkEJ8s+D-73~3q4P=R=NEG?F8io zax0XYl#JVJKOX!jD~urm8@iSCCuHFq-n4P{;_U7Q?Xp5w-LdZxt^*5pp_3U1&hD93 z!h4YrAlRb+o=yIa5gj4%Rd{A7m)AUM4p}lb6p!8r*)hH7GA5LIpc)5gDi2(Owr$xk z@`d`>#qs_zgY4&^=1HAZ{;!sFhR5(YbiwFLQ9f-}ypV(u72I=1(B^8MdxFd(rDL0q zAR3=HYrqLKCq;K2(%{U2a75Wb;Fu&^mrkDpDQ>r z#39>A=tbOweg3_a|!5w|arB$fh`vabqLj$^K@!kmz~DJUj>5 z26Iw8>C&258sC2*VEDtxAM}#3p!>qx$a}-#cy+E%2DAI4K+goYb4L|oY6$2twucy9 z3;PFVw{SHvej8SI1^02#RzOjd(N-m;Mu>_ywytkF*i}nk5gpE(#?~kbM{BIRtyg zD5b8R}1E!YzQBE7HHV30+D^cPfoPiv?$)R`5& z*T6$L*9@t+c1o+*2)d+QuE~X6!bOpJz!0ijl~))ttSQ$r31f2aWL>ogQw~?LuuLIY z^Oo#J={>`{rtx~pl03A-mz1FQ@U>a>n3oPsh$oT+Zvpg>=yXzYT%LZk#pfL4_#Ip6 z?z4GD{3bh(%FP6$AQFL{ptcFzcyy6RoI#7EUzcQr(G^1tbZpQbdA-A+vAMQ|j79do zF~9Z`eT#W#Q({pxGoyy3zE>djD(~xQ#W=8kqvNGFs&>bBaQ02ea}?1O&>`8g$VeG!-sD^7 zOrkKv4BX9a)Pr=yV&U0dNVW~g&Zz!#e*O?<&*xRd@L(L{Gel?E=gh)RA~6N|Az0ct zSclsDD^FMwMCb1^FlG80=v+BG^8#MCI>Rb)P~A^WKSFzD`w5wHc5*}qlwGm$sqnOH z(Q^sge3wwB;s`q@CtxFy7|e57{h~(m@>b)WbS5i!_QVYzni|)kG9dc2`H3j}#YNw#=I03KE1PN*?hYg(Fb1g6&uPm7Pkt zDd%DwhOi(I(i>k*6qTBmrmCZK&~hD`O4p<0U;#1!Z3mZZCHG7kFKe%T{!a%otm@&2 z3gJnez0n|eZgpsjeDNyf#IS2qFNyA1s{n6n&UH+XHS3jycKU}*t+N4v3T-_~m+@WC zK?7w2(kmMqpMSb%iW9EIL!wDFoMRVEkrL#8Q?H3wiRd_|>~gZzA~oW1ufDg=XS)M4 zlWHL7wxEWh7KI?>bZM`n7u8Dx|L%Cj&p2<)%lNGWssMMoS>l6$^CsKw$^PcJZNF^A zTV&PIXpOzS{#EYsm=RYkA)^7U-8(-@?WkPfX8C5GMcPQ9{;ab8*68i{VXN&Bn%_TtcaE1#0Ux>@sC<{vc%Q=-~UeH7OMru9kYr(ext{Mw$+D z_XcdKc4!)Cyy04;>>iN^1hs^NWO<(NNJZ;>!nKV~ld>#xoRHFPSmTsMmXZ_eUa;wx z^D%?XM~{c!`-Qr4Jn=11K3Jqj%QljIv1+w7p{3Ve{2q8>z9|$>$1OS0WTHRkL?EQ`trj%0Ah^55p&U(ExRt@=ZSitII)J<^0WVlwD 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'); // Pass API Key -define('API_SECRET', ''); // Pass API Secret Key -define('API_REQUEST_SIGNING', ''); // Pass true/false for enable/disable -define('AUTH_FLOW', ''); // Pass optional/disabled, if email verification flow optional or disabled, no need to mention if required flow - -//If you have Custom API Domain then define 'API_DOMAIN' then replaced it with your custom API domain, -//otherwise no need to define these option in configuration. -//define('API_DOMAIN', 'https://api.example.com'); - -require_once "../../src/LoginRadiusSDK/Utility/Functions.php"; -require_once "../../src/LoginRadiusSDK/LoginRadiusException.php"; -require_once "../../src/LoginRadiusSDK/Clients/IHttpClient.php"; -require_once "../../src/LoginRadiusSDK/Clients/DefaultHttpClient.php"; -require_once "../../src/LoginRadiusSDK/CustomerRegistration/Social/SocialLoginAPI.php"; -require_once "../../src/LoginRadiusSDK/CustomerRegistration/Account/AccountAPI.php"; -require_once "../../src/LoginRadiusSDK/CustomerRegistration/Account/RoleAPI.php"; -require_once "../../src/LoginRadiusSDK/CustomerRegistration/Authentication/AuthCustomObjectAPI.php"; -require_once "../../src/LoginRadiusSDK/CustomerRegistration/Authentication/UserAPI.php"; diff --git a/demo/ajax_handler/index.php b/demo/ajax_handler/index.php deleted file mode 100644 index ef508c0..0000000 --- a/demo/ajax_handler/index.php +++ /dev/null @@ -1,14 +0,0 @@ - 'error', 'message' => 'An error occurred.'); - if (empty($email) || empty($password)) { - $response['message'] = 'Email Id and Password are required fields.'; - } else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $payload = array('email' => $email, 'password' => $password); - $result = $authenticationObj->authLoginByEmail($payload); - if (isset($result->access_token) && $result->access_token != '') { - $response['data'] = $result; - $response['message'] = "Logged in successfully"; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - } - } - return json_encode($response); -} - -function getProfile(array $request) { - $token = isset($request['token']) ? trim($request['token']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($token)) { - $response['message'] = 'Access Token is a required field.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->getProfile($token); - if ((isset($result->EmailVerified) && $result->EmailVerified) || AUTH_FLOW == 'optional' || AUTH_FLOW == 'disabled') { - $response['data'] = $result; - $response['message'] = "Profile successfully retrieved."; - $response['status'] = 'success'; - } - else { - $response['message'] = "Email is not verified."; - $response['status'] = 'error'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - return json_encode($response); -} - -function registration(array $request) { - $email = isset($request['email']) ? trim($request['email']) : ''; - $password = isset($request['password']) ? trim($request['password']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($email) || empty($password)) { - $response['message'] = 'Email Id and Password are required fields.'; - } else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $payload = array('Email' => array(array('Type' => 'Primary', 'Value' => $email)), 'password' => $password); - $result = $authenticationObj->registerByEmail($payload, $request['verificationurl']); - if ((isset($result->EmailVerified) && $result->EmailVerified) || AUTH_FLOW == 'optional' || AUTH_FLOW == 'disabled') { - $response['result'] = $result; - $response['message'] = "Successfully registered."; - $response['status'] = 'success'; - } else { - $response['message'] = "Successfully registered, please check your email to verify your account."; - $response['status'] = 'registered'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - return json_encode($response); -} - -function pwLessLogin(array $request) { - $email = isset($request['email']) ? trim($request['email']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($email)) { - $response['message'] = 'Email Id is a required field.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->passwordLessLoginByEmail($email, $request['verificationurl']); - if ((isset($result->IsPosted) && $result->IsPosted)) { - $response['message'] = "One time login link has been sent to your provided email id, check email for further instruction."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - return json_encode($response); -} - -function forgotPassword(array $request) { - $email = isset($request['email']) ? trim($request['email']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($email)) { - $response['message'] = 'Email Id is a required field.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->forgotPassword($email, $request['resetPasswordUrl']); - if ((isset($result->IsPosted) && $result->IsPosted)) { - $response['message'] = "An email has been sent to your address with instructions to reset your password."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - return json_encode($response); -} - -function resetPassword(array $request) { - $token = isset($request['resettoken']) ? trim($request['resettoken']) : ''; - $password = isset($request['password']) ? trim($request['password']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($token) || empty($password)) { - $response['message'] = 'Password are required fields.'; - } else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->resetPassword($token, $password); - if ((isset($result->IsPosted) && $result->IsPosted)) { - $response['message'] = "Password has been reset successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - return json_encode($response); -} - -function pwLessLinkVerify(array $request) { - $token = isset($request['token']) ? trim($request['token']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($token)) { - $response['message'] = 'Token is a required field.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->passwordLessLoginVerification($token); - if ((isset($result->access_token) && $result->access_token != '')) { - $response['data'] = $result; - $response['message'] = "Link successfully verified."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - return json_encode($response); -} - -function emailVerify(array $request) { - $vtoken = isset($request['vtoken']) ? trim($request['vtoken']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($vtoken)) { - $response['message'] = 'Verification Token is a required field.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->verifyEmail($vtoken); - if ((isset($result->IsPosted) && $result->IsPosted)) { - $response['message'] = "Your email has been verified successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - return json_encode($response); -} - -function mfaLogin(array $request) { - $email = isset($request['email']) ? trim($request['email']) : ''; - $password = isset($request['password']) ? trim($request['password']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($email) || empty($password)) { - $response['message'] = 'Email Id and Password are required fields.'; - } else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $payload = array('email' => $email, 'password' => $password); - $result = $authenticationObj->mfaEmailLogin($payload); - $response['data'] = $result; - $response['message'] = "Successful MFA Login."; - $response['status'] = 'success'; - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - return json_encode($response); -} - -function mfaValidate(array $request) { - $secondFactorAuthenticationToken = isset($request['secondFactorAuthenticationToken']) ? trim($request['secondFactorAuthenticationToken']) : ''; - $googleAuthCode = isset($request['googleAuthCode']) ? trim($request['googleAuthCode']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($secondFactorAuthenticationToken)) { - $response['message'] = 'Second Factor Auth Token is a required field.'; - } else if (empty($googleAuthCode)) { - $response['message'] = 'Google Auth Code is a required field.'; - } else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->mfaValidateGoogleAuthCode($secondFactorAuthenticationToken, $googleAuthCode); - if ((isset($result->access_token) && $result->access_token != '')) { - $response['data'] = $result; - $response['message'] = "Google Auth Code successfully validated."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - return json_encode($response); -} diff --git a/demo/ajax_handler/profile.php b/demo/ajax_handler/profile.php deleted file mode 100644 index 69dc27c..0000000 --- a/demo/ajax_handler/profile.php +++ /dev/null @@ -1,343 +0,0 @@ - 'error', 'message' => 'An error occurred.'); - if (empty($token)) { - $response['message'] = 'Access Token is a required field.'; - } - else { - $authObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authObj->getProfile($token); - if ((isset($result->Uid) && $result->Uid != '')) { - $response['data'] = $result; - $response['message'] = "Profile successfully retrieved."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->getMessage(); - $response['status'] = "error"; - } - } - return json_encode($response); -} - -function updateAccount(array $request) { - $firstname = isset($request['firstname']) ? trim($request['firstname']) : ''; - $lastname = isset($request['lastname']) ? trim($request['lastname']) : ''; - $about = isset($request['about']) ? trim($request['about']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json')); - try { - $payload = array('FirstName' => $firstname, 'LastName' => $lastname, 'About' => $about); - $result = $authenticationObj->updateProfile($request['token'], $payload); - if (isset($result->IsPosted) && $result->IsPosted) { - $response['message'] = "Profile has been updated successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - return json_encode($response); -} - -function changePassword(array $request) { - $token = isset($request['token']) ? trim($request['token']) : ''; - $oldpassword = isset($request['oldpassword']) ? trim($request['oldpassword']) : ''; - $newpassword = isset($request['newpassword']) ? trim($request['newpassword']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($oldpassword)) { - $response['message'] = 'Old password is a required field.'; - } - elseif (empty($newpassword)) { - $response['message'] = 'New password is a required field.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json')); - try { - $result = $authenticationObj->changeAccountPassword($token, $oldpassword, $newpassword); - if (isset($result->IsPosted) && $result->IsPosted) { - $response['message'] = "Password has been changed successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - } - return json_encode($response); -} - -function setPassword(array $request) { - $uid = isset($request['uid']) ? trim($request['uid']) : ''; - $newpassword = isset($request['newpassword']) ? trim($request['newpassword']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($newpassword)) { - $response['message'] = 'New password is a required field.'; - } - else { - $accountObj = new AccountAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $accountObj->setPassword($uid, $newpassword); - if (isset($result->PasswordHash) && $result->PasswordHash != '') { - $response['message'] = "The password has been set successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - } - return json_encode($response); -} - -function createCustomObjects(array $request) { - $token = isset($request['token']) ? trim($request['token']) : ''; - $objectName = isset($request['objectName']) ? trim($request['objectName']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($objectName)) { - $response['message'] = 'Object name is a required field.'; - } - else { - $authCustomObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authCustomObj->createCustomObject($token, $objectName, $request['payload']); - if (isset($result->Uid) && $result->Uid != '') { - $response['message'] = "Custom object created successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - } - return json_encode($response); -} - -function getCustomObjects(array $request) { - $token = isset($request['token']) ? trim($request['token']) : ''; - $objectName = isset($request['objectName']) ? trim($request['objectName']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($objectName)) { - $response['message'] = 'Object name is a required field.'; - } - else { - $authCustomObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authCustomObj->getCustomObjectSetsByToken($token, $objectName); - if (isset($result->Count) && $result->Count != '0') { - $response['result'] = $result; - $response['status'] = 'success'; - } - else { - $response['status'] = 'empty'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - } - return json_encode($response); -} - -function updateCustomObjects(array $request) { - $token = isset($request['token']) ? trim($request['token']) : ''; - $objectName = isset($request['objectName']) ? trim($request['objectName']) : ''; - $objectRecordId = isset($request['objectRecordId']) ? trim($request['objectRecordId']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($objectName)) { - $response['message'] = 'Object name is a required field.'; - } - elseif (empty($objectRecordId)) { - $response['message'] = 'Object Id is a required field.'; - } - else { - $authCustomObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authCustomObj->updateCustomObjectData($token, $objectName, $objectRecordId, 'replace', $request['payload']); - if (isset($result->Uid) && $result->Uid != '') { - $response['message'] = "Custom object updated successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - } - return json_encode($response); -} - -function deleteCustomObjects(array $request) { - $token = isset($request['token']) ? trim($request['token']) : ''; - $objectName = isset($request['objectName']) ? trim($request['objectName']) : ''; - $objectRecordId = isset($request['objectRecordId']) ? trim($request['objectRecordId']) : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($objectName)) { - $response['message'] = 'Object name is a required field.'; - } - elseif (empty($objectRecordId)) { - $response['message'] = 'Object Id is a required field.'; - } - else { - $authCustomObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authCustomObj->deleteCustomObjectSet($token, $objectName, $objectRecordId); - if (isset($result->IsDeleted) && $result->IsDeleted) { - $response['message'] = "Custom object deleted successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - } - return json_encode($response); -} - -function handleCreateRole(array $request) { - $roles = isset($request['roles']) ? $request['roles'] : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($roles)) { - $response['message'] = 'Role is a required field.'; - } - else { - $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $roleObj->create($roles); - if (isset($result->Count) && $result->Count != '') { - $response['message'] = "Role successfully created."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - } - return json_encode($response); -} - -function handleDeleteRole(array $request) { - $roles = isset($request['roles']) ? $request['roles'] : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($roles)) { - $response['message'] = 'Role is a required field.'; - } - else { - $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $roleObj->delete($roles); - if (isset($result->IsDeleted) && $result->IsDeleted) { - $response['message'] = "Role has been deleted."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - } - return json_encode($response); -} - -function handleAssignUserRole(array $request) { - $uid = isset($request['uid']) ? trim($request['uid']) : ''; - $roles = isset($request['roles']) ? $request['roles'] : ''; - $response = array('status' => 'error', 'message' => 'An error occurred.'); - if (empty($roles)) { - $response['message'] = 'Role is a required field.'; - } - else { - $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $roleObj->assignRolesByUid($uid, $roles); - if (isset($result->Roles) && $result->Roles != '') { - $response['message'] = "Role assigned successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - } - return json_encode($response); -} - -function getAllRoles(array $request) { - $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $roleObj->get(); - if (isset($result->Count) && $result->Count != '0') { - $response['result'] = $result; - $response['status'] = 'success'; - } - else { - $response['message'] = 'No existing roles found.'; - $response['status'] = 'rolesempty'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->getMessage(); - $response['status'] = 'error'; - } - return json_encode($response); -} - -function getUserRoles(array $request) { - $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $roleObj->getAccountRolesByUid($request['uid']); - if (isset($result->Roles) && $result->Roles != '') { - $response['data'] = $result; - $response['status'] = 'success'; - } - else { - $response['message'] = 'User has no roles assigned.'; - $response['status'] = 'userrolesempty'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->getMessage(); - $response['status'] = 'error'; - } - return json_encode($response); -} - -function resetMultifactor(array $request) { - $authObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authObj->resetGoogleAuthenticatorByToken($request['token'], true); - if (isset($result->IsDeleted) && $result->IsDeleted) { - $response['message'] = "Reset successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; - } - return json_encode($response); -} diff --git a/demo/emailverification.html b/demo/emailverification.html deleted file mode 100644 index 3482864..0000000 --- a/demo/emailverification.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - SDK Demo Verification Page - - - - - - - - -
-

Email Verification

-
- -
-
- - - - diff --git a/demo/index.html b/demo/index.html deleted file mode 100644 index b6a5cb8..0000000 --- a/demo/index.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - SDK Demo Index Page - - - - - - - - - - -
- - -
-
- - -
-

Forgot Password

-
- - -
Email Address:
-
- -
-
-
- - - - - diff --git a/demo/js/emailVerification.js b/demo/js/emailVerification.js deleted file mode 100644 index ae3e879..0000000 --- a/demo/js/emailVerification.js +++ /dev/null @@ -1,62 +0,0 @@ -const url = window.location.href; -const params = url.split("?")[1]; -const domainName = url.substring(0, url.lastIndexOf("/")); - -let paramsObj = {}; - -if (params) { - paramsObj = JSON.parse('{"' + decodeURI(params.replace(/&/g, "\",\"").replace(/=/g,"\":\"")) + '"}'); - - if (paramsObj.vtype === "emailverification") { - $.ajax({ - method: "POST", - url: domainName + "/ajax_handler/login", - dataType: "json", - data: $.param({ - vtoken: paramsObj.vtoken, - action: "emailVerify" - }), - error: function(xhr){ - $("#minimal-verification-message").text(xhr.responseJSON); - $("#minimal-verification-message").attr("class", "error-message"); - } - }).done(function(ret) { - if (ret.status == "success") { - localStorage.setItem("LrEmailStatus", "verified"); - $("#minimal-verification-message").text(ret.message); - $("#minimal-verification-message").attr("class", "success-message"); - } else if (ret.status == "error") { - $("#minimal-verification-message").text(ret.message); - $("#minimal-verification-message").attr("class", "error-message"); - } - }); - } else if (paramsObj.vtype === "oneclicksignin") { - $.ajax({ - method: "POST", - url: domainName + "/ajax_handler/login", - data: $.param({ - token: paramsObj.vtoken, - action: "pwLessLinkVerify" - }), - dataType: "json", - error: function(xhr) { - $("#minimal-verification-message").text(xhr.responseJSON); - $("#minimal-verification-message").attr("class", "error-message"); - } - }).done(function(ret) { - if (ret.status == "success") { - localStorage.setItem("LRTokenKey", ret.data.access_token); - localStorage.removeItem("LrEmailStatus"); - localStorage.setItem("lr-user-uid", ret.data.Profile.Uid); - window.location.replace("profile.html"); - } else if (ret.status == "error") { - $("#minimal-verification-message").text(ret.message); - $("#minimal-verification-message").attr("class", "error-message"); - } - }); - } else { - window.location.replace("index.html"); - } -} else { - window.location.replace("index.html"); -} diff --git a/demo/js/indexControl.js b/demo/js/indexControl.js deleted file mode 100644 index 7205a0c..0000000 --- a/demo/js/indexControl.js +++ /dev/null @@ -1,248 +0,0 @@ -const url = window.location.href; -const domainName = url.substring(0, url.lastIndexOf("/")); -let multiFactorAuthToken; - -let custom_interface_option = {}; -custom_interface_option.templateName = 'loginradiuscustom_tmpl'; -LRObject.util.ready(function() { - LRObject.customInterface(".interfacecontainerdiv", custom_interface_option); -}); - -let sl_options = {}; -sl_options.onSuccess = function(response) { - localStorage.setItem("LRTokenKey", response.access_token); - localStorage.removeItem("LrEmailStatus"); - localStorage.setItem("lr-user-uid", response.Profile.Uid); - window.location.replace("profile.html"); -}; -sl_options.onError = function(errors) { - localStorage.setItem("LrEmailStatus", 'unverified'); - $("#sociallogin-message").text(errors[0].Description); - $("#sociallogin-message").attr("class", "error-message"); -}; -sl_options.container = "sociallogin-container"; - -LRObject.util.ready(function() { - LRObject.init('socialLogin', sl_options); -}); - -$("#btn-minimal-login").click(function() { - $("#minimal-login-message").text(""); - - $.ajax({ - method: "POST", - url: domainName + "/ajax_handler/login", - dataType: "json", - data: $.param({ - email: $("#minimal-login-email").val(), - password: $("#minimal-login-password").val(), - action: "loginByEmail" - }), - error: function(xhr) { - $("#minimal-login-message").text(xhr.responseJSON); - $("#minimal-login-message").attr("class", "error-message"); - } - }).done(function(ret) { - if (ret.status == "success") { - localStorage.setItem("LRTokenKey", ret.data.access_token); - localStorage.removeItem("LrEmailStatus"); - localStorage.setItem("lr-user-uid", ret.data.Profile.Uid); - $("#minimal-login-email").val(""); - $("#minimal-login-password").val(""); - window.location.replace("profile.html"); - } else if (ret.status == "error") { - $("#minimal-login-message").text(ret.message); - $("#minimal-login-message").attr("class", "error-message"); - } - }); -}); - -$("#btn-minimal-mfalogin-next").click(function() { - $("#minimal-mfalogin-message").text(""); - - data = { - "Email" : $("#minimal-mfalogin-email").val(), - "Password" : $("#minimal-mfalogin-password").val() - } - $.ajax({ - method: "POST", - url: domainName + "/ajax_handler/login", - data: $.param({ - email: $("#minimal-mfalogin-email").val(), - password: $("#minimal-mfalogin-password").val(), - action: "mfaLogin" - }), - dataType: "json", - error: function(xhr) { - $("#minimal-mfalogin-message").text(xhr.responseJSON); - $("#minimal-mfalogin-message").attr("class", "error-message"); - } - }).done(function(ret) { - if (ret.status == "success") { - $("#minimal-mfalogin-email").val(""); - $("#minimal-mfalogin-password").val(""); - if (typeof(ret.data.SecondFactorAuthentication) != "undefined" && ret.data.SecondFactorAuthentication != null) { - if (ret.data.SecondFactorAuthentication.IsGoogleAuthenticatorVerified === false) { - $("#minimal-mfalogin-qrcode").append(''); - } - $("#minimal-mfalogin-next") - .html('' + - '' + - '
Google Authenticator Code:
' + - ''); - multiFactorAuthToken = ret.data.SecondFactorAuthentication.SecondFactorAuthenticationToken; - } else { - localStorage.setItem("LRTokenKey", ret.data.access_token); - localStorage.removeItem("LrEmailStatus"); - localStorage.setItem("lr-user-uid", ret.data.Profile.Uid); - window.location.replace("profile.html"); - } - } else if (ret.status == "error") { - $("#minimal-mfalogin-message").text(ret.message); - $("#minimal-mfalogin-message").attr("class", "error-message"); - } - }); -}); - -$("#minimal-mfalogin-next").on('click', "#btn-minimal-mfalogin-login", function() { - $("#minimal-mfalogin-message").text(""); - - $.ajax({ - method: "POST", - url: domainName + "/ajax_handler/login", - data: $.param({ - secondFactorAuthenticationToken: multiFactorAuthToken, - googleAuthCode: $("#minimal-mfalogin-googlecode").val(), - action: "mfaValidate" - }), - dataType: "json", - error: function(xhr) { - $("#minimal-mfalogin-message").text(xhr.responseJSON); - $("#minimal-mfalogin-message").attr("class", "error-message"); - } - }).done(function(ret) { - if (ret.status == "success") { - localStorage.setItem("LRTokenKey", ret.data.access_token); - localStorage.removeItem("LrEmailStatus"); - localStorage.setItem("lr-user-uid", ret.data.Profile.Uid); - window.location.replace("profile.html"); - } else if (ret.status == "error") { - $("#minimal-mfalogin-message").text(ret.message); - $("#minimal-mfalogin-message").attr("class", "error-message"); - } - }); -}); - -$("#btn-minimal-pwless").click(function() { - $("#minimal-pwless-message").text(""); - - $.ajax({ - method: "POST", - url: domainName + "/ajax_handler/login", - data: $.param({ - email: $("#minimal-pwless-email").val(), - verificationurl: commonOptions.verificationUrl, - action: "pwLessLogin" - }), - dataType: "json", - error: function(xhr) { - $("#minimal-pwless-message").text(xhr.responseJSON); - $("#minimal-pwless-message").attr("class", "error-message"); - } - }).done(function(ret) { - if (ret.status == "success") { - $("#minimal-pwless-email").val(""); - $("#minimal-pwless-message").text(ret.message); - $("#minimal-pwless-message").attr("class", "success-message"); - } else if (ret.status == "error") { - $("#minimal-pwless-message").text(ret.message); - $("#minimal-pwless-message").attr("class", "error-message"); - } - }); -}); - -$("#btn-minimal-signup").click(function() { - $("#minimal-signup-message").text(""); - - if($("#minimal-signup-password").val() != $("#minimal-signup-confirmpassword").val()) { - $("#minimal-signup-message").text("Passwords do not match!"); - $("#minimal-signup-message").attr("class", "error-message"); - return - } - - $.ajax({ - method: "POST", - url: domainName + "/ajax_handler/login", - dataType: "json", - data: $.param({ - email: $("#minimal-signup-email").val(), - password: $("#minimal-signup-password").val(), - verificationurl: commonOptions.verificationUrl, - action: "registration" - }), - error: function(xhr) { - $("#minimal-signup-message").text(xhr.responseJSON); - $("#minimal-signup-message").attr("class", "error-message"); - } - }).done(function(ret) { - if (ret.status == "success") { - localStorage.setItem("LRTokenKey", ret.result.Data.access_token); - localStorage.removeItem("LrEmailStatus"); - localStorage.setItem("lr-user-uid", ret.result.Data.Profile.Uid); - $("#minimal-signup-email").val(''); - $("#minimal-signup-password").val(''); - $("#minimal-signup-confirmpassword").val(''); - window.location.replace("profile.html"); - } else if (ret.status == "registered") { - $("#minimal-signup-message").text(ret.message); - $("#minimal-signup-message").attr("class", "success-message"); - $("#minimal-signup-email").val(''); - $("#minimal-signup-password").val(''); - $("#minimal-signup-confirmpassword").val(''); - - } else if (ret.status == "error") { - $("#minimal-signup-message").text(ret.message); - $("#minimal-signup-message").attr("class", "error-message"); - } - }); -}); - -$("#btn-minimal-forgotpassword").click(function() { - $("#minimal-forgotpassword-message").text(""); - - $.ajax({ - method: "POST", - url: domainName + "/ajax_handler/login", - dataType: "json", - data: $.param({ - email: $("#minimal-forgotpassword-email").val(), - resetPasswordUrl: commonOptions.resetPasswordUrl, - action: "forgotPassword" - }), - error: function(xhr){ - $("#minimal-forgotpassword-message").text(xhr.responseJSON); - $("#minimal-forgotpassword-message").attr("class", "error-message"); - } - }).done(function(ret) { - if (ret.status == "success") { - $("#minimal-forgotpassword-email").val(""); - $("#minimal-forgotpassword-message").text(ret.message); - $("#minimal-forgotpassword-message").attr("class", "success-message"); - } else if (ret.status == "error") { - $("#minimal-forgotpassword-message").text(ret.message); - $("#minimal-forgotpassword-message").attr("class", "error-message"); - } - }); -}); - -function checkSession() { - var accesstoken = localStorage.getItem("LRTokenKey"); - var lremailstatus = localStorage.getItem("LrEmailStatus"); - var lruid= localStorage.getItem("lr-user-uid"); - if (accesstoken != "" && accesstoken != null && lruid != "" && lruid != null && (lremailstatus == "" || lremailstatus == null)) { - window.location.replace("profile.html"); - return; - } -} - -checkSession(); diff --git a/demo/js/indexView.js b/demo/js/indexView.js deleted file mode 100644 index 30e73c5..0000000 --- a/demo/js/indexView.js +++ /dev/null @@ -1,82 +0,0 @@ -$(function () { - - $(window).on('hashchange', function () { - // On every hash change the render function is called with the new hash. - // This is how the navigation of our app happens. - render(decodeURI(window.location.hash)); - }).trigger('hashchange'); - - function render(url) { - // This function decides what type of page to show - // depending on the current url hash value. - - // Get the keyword from the url. - let temp = url.split('/')[0]; - temp = temp.split('?')[0]; - // Hide whatever page is currently shown. - $('.right-elem').removeClass('visible'); - $('.menu-options').removeClass('active'); - - let map = { - // The Homepage. - '': function () { - renderLogin(); - }, - // Login page. - '#login': function () { - renderLogin(); - }, - // Register page. - '#signup': function () { - renderSignup(); - }, - // Forgot Password page. - '#forgotpassword': function () { - renderForgotPassword(); - }, - // Reset Password page. - '#resetpassword': function () { - renderResetPassword(); - } - }; - - // Execute the needed function depending on the url keyword (stored in temp). - if (map[temp]) { - map[temp](); - } - // If the keyword isn't listed in the above - render the error page. - else { - renderErrorPage(); - } - } - - function renderLogin() { - let page = $('.login-elem') - let menuOption = $('#menu-login') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the login page. - } - - function renderSignup() { - let page = $('.signup-elem') - let menuOption = $('#menu-signup') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the signup page. - } - - function renderForgotPassword() { - let page = $('.forgotpassword-elem') - let menuOption = $('#menu-forgotpassword') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the forgot password page. - } - - function renderResetPassword() { - let page = $('.resetpassword-elem') - page.addClass('visible'); - // Shows the reset password page. - } -}); \ No newline at end of file diff --git a/demo/js/jquery-3.3.1.min.js b/demo/js/jquery-3.3.1.min.js deleted file mode 100644 index 41f8bad..0000000 --- a/demo/js/jquery-3.3.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseJSON",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseJSON?{binary:s.response}:{text:s.responseJSON},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("' -); - -$("#script-accountlinking").append(script); - -let la_options = {}; -la_options.container = "interfacecontainerdiv"; -la_options.templateName = 'loginradiuscustom_tmpl_link'; -la_options.onSuccess = function() { - $("#interfacecontainerdiv").empty(); - LRObject.util.ready(function() { - LRObject.init("linkAccount", la_options); - }); -} -la_options.onError = function(errors) { - $("#user-accountlinking-message").text(errors[0].Description); - $("#user-accountlinking-message").attr("class", "error-message"); -} - -let unlink_options = {}; -unlink_options.onSuccess = function() { - $("#interfacecontainerdiv").empty(); - LRObject.util.ready(function() { - LRObject.init("linkAccount", la_options); - }); -} -unlink_options.onError = function(errors) { - $("#user-accountlinking-message").text(errors[0].Description); - $("#user-accountlinking-message").attr("class", "error-message"); -} - -LRObject.util.ready(function() { - LRObject.init("linkAccount", la_options); - LRObject.init("unLinkAccount", unlink_options); -}); - -profileUpdate(); -roleUpdate(); diff --git a/demo/js/profileView.js b/demo/js/profileView.js deleted file mode 100644 index 6509aaa..0000000 --- a/demo/js/profileView.js +++ /dev/null @@ -1,153 +0,0 @@ -$(function () { - - $(window).on('hashchange', function () { - // On every hash change the render function is called with the new hash. - // This is how the navigation of our app happens. - render(decodeURI(window.location.hash)); - }).trigger('hashchange'); - - function render(url) { - // This function decides what type of page to show - // depending on the current url hash value. - - // Get the keyword from the url. - let temp = url.split('/')[0]; - - // Hide whatever page is currently shown. - $('.right-elem').removeClass('visible'); - $('.menu-options').removeClass('active'); - - let map = { - // The Homepage. - '': function () { - renderProfile(); - }, - // Profile page. - '#profile': function () { - renderProfile(); - }, - // Reset Password page. - '#resetpassword': function () { - renderResetPassword(); - }, - // Change Password page. - '#changepassword': function () { - renderChangePassword(); - }, - // Set Password page. - '#setpassword': function () { - renderSetPassword(); - }, - // Update Account page. - '#account': function () { - renderUpdateAccount(); - }, - // Account Linking page. - '#accountlinking': function () { - renderAccountLinking(); - }, - // Account Linking page. - '#accountlinking': function () { - renderAccountLinking(); - }, - // Custom Objects page. - '#customobjects': function () { - renderCustomObjects(); - }, - // Multifactor page. - '#multifactor': function () { - renderMultifactor(); - }, - // Roles page. - '#roles': function () { - renderRoles(); - } - }; - - // Execute the needed function depending on the url keyword (stored in temp). - if (map[temp]) { - map[temp](); - } - // If the keyword isn't listed in the above - render the error page. - else { - renderErrorPage(); - } - } - - function renderProfile() { - let page = $('.profile-elem') - let menuOption = $('#menu-profile') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the profile page. - } - - function renderResetPassword() { - let page = $('.resetpassword-elem') - let menuOption = $('#menu-resetpassword') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the forgot password page. - } - - function renderChangePassword() { - let page = $('.changepassword-elem') - let menuOption = $('#menu-changepassword') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the forgot password page. - } - - function renderSetPassword() { - let page = $('.setpassword-elem') - let menuOption = $('#menu-setpassword') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the forgot password page. - } - - function renderUpdateAccount() { - let page = $('.updateaccount-elem') - let menuOption = $('#menu-account') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the forgot password page. - } - - function renderAccountLinking() { - let page = $('.accountlinking-elem') - let menuOption = $('#menu-accountlinking') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the forgot password page. - } - - function renderCustomObjects() { - let page = $('.customobj-elem') - let menuOption = $('#menu-customobjects') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the forgot password page. - } - - function renderMultifactor() { - let page = $('.multifactor-elem') - let menuOption = $('#menu-multifactor') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the forgot password page. - } - - function renderRoles() { - let page = $('.roles-elem') - let menuOption = $('#menu-roles') - page.addClass('visible'); - menuOption.addClass('active'); - // Shows the forgot password page. - } - - function renderErrorPage() { - // Shows the error page. - } - -}); \ No newline at end of file diff --git a/demo/js/resetPassword.js b/demo/js/resetPassword.js deleted file mode 100644 index 95d2ff6..0000000 --- a/demo/js/resetPassword.js +++ /dev/null @@ -1,49 +0,0 @@ -const url = window.location.href; -const params = url.split("?")[1]; -const domainName = url.substring(0, url.lastIndexOf("/")); -let paramsObj = {}; - -$("#btn-minimal-resetpassword").click(function() { - $("#minimal-resetpassword-message").text(""); - - if($("#minimal-resetpassword-password").val() !== $("#minimal-resetpassword-confirmpassword").val()) { - $("#minimal-resetpassword-message").text("Passwords do not match!"); - $("#minimal-resetpassword-message").attr("class", "error-message"); - return; - } - - $.ajax({ - method: "POST", - url: domainName + "/ajax_handler/login", - dataType: "json", - data: $.param({ - resettoken: paramsObj.vtoken, - password: $("#minimal-resetpassword-password").val(), - action: "resetPassword" - }), - error: function(xhr) { - $("#minimal-resetpassword-message").text(xhr.responseJSON); - $("#minimal-resetpassword-message").attr("class", "error-message"); - } - }).done(function(ret) { - if (ret.status == "success") { - $("#minimal-resetpassword-password").val(""); - $("#minimal-resetpassword-confirmpassword").val(""); - $("#minimal-resetpassword-message").text(ret.message); - $("#minimal-resetpassword-message").attr("class", "success-message"); - } else if (ret.status == "error") { - $("#minimal-resetpassword-message").text(ret.message); - $("#minimal-resetpassword-message").attr("class", "error-message"); - } - }); -}); - -if (params) { - paramsObj = JSON.parse('{"' + decodeURI(params.replace(/&/g, "\",\"").replace(/=/g,"\":\"")) + '"}'); - - if (paramsObj.vtype != "reset") { - window.location.replace("index.html"); - } -} else { - window.location.replace("index.html"); -} diff --git a/demo/loginscreen.html b/demo/loginscreen.html deleted file mode 100644 index 2b601b6..0000000 --- a/demo/loginscreen.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - SDK Demo Index Page - - - - - - - - - - -
- -
-
-
-
- - - - diff --git a/demo/logo-white.png b/demo/logo-white.png deleted file mode 100644 index 482171525ad79482d3a66fcdf268e28d96577037..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2300 zcmVuleQ_hDK8gPWfhgV%M_Kn%$%oXvb4<1SmvZ8m6;i$Iz=EA7Q6Hszc}D(sc3ugu$3HR=WFOlp8B}={^QA z7mNhT;=P`Z{u>4F5M zE0d)Q5|obP)6oQV68ODTLb|AfG*nK&yj4+4=52&J3Ao59NJ9hERO6LJD$-D;1mCAC zf2HG?-WY-ZU@s10Hwy4Ix?99Yc^}6Vgt1@jz-AfyCstuOzLE1%@c~BRVHvB1uQ3@j z<(&VZNaov%1K5FlIkt0*Qaz6!F$z;KA9*N55w>7ICd)aGAS~?rHzFUocns-23e^K2 zV2;f7FRYb+|A?F9mY54@F6Z5g(fAxSW$Z4Dz?W#~;d{7U=6M-uQGQ=Nkc~I+7G6aN z&&&8@xYAwec;gkTU|g7N%{kK0W#OKa(i#tbSF4v1i`6cL@nMj2MK!EY_zP~bN6z^i z#bqx-E-!Q@=D|(QtJ^E({3)>0P{t<0PKJll&4-=(j{8FR8E%qYZ0Q)!!Z8@75Yv&1 zx!4Y)96+053O5NxIfHymmiy*P(Tkj4Tdi~lV34a;&EF#x6`Qdf%zI=_gtE_%@RwTz zXa2$#td>Ho#g}Ro31cOe$^FZ*5f`8{(Z$Mg0(LGS50fz-b5Mw*(9xwEroQL;GWL^< z9Y=Eyr5g`o_M^5Mp8{u2;t%ncKJfN!H5 zdlPhqqD_=zufWH}l!(P@L~5UDaYrSKxBqCO8CRu>wXZ-IfGC;ctQMu+!3Ue>#qP-7}Td zwWLayDr0-pi*)U?Jut*|GR|ta>XyS3s-Z0{8HU1imc+2CQ zi#?WZgs%?|tTCM4t3Ob!w3ZHOGPV|WRwFZ>(&>l6Zaz!*DU7ItMlj-oQdYXFaZXD2nBUUL^PC0n zk|K5fVi{X!kBt1zMoE{74JQdYVQoQbD&@)p5% z===ji@hYB?+dVMM0S(!B*E(jBFH zHIC91B&l>~<1F1W*vZE=F^;W^aE#I|C<`l{WA`Q-GqD$uaumH|l`b1bWce)J_v)>Y zR5Zc`7<^iuO2_>jVW-gJ27Qq(ZV5cRexK;lIgYE2_ILuLaL}=<(llD>u5qqPag=1c z{5w?@VrDrj-CMA8dmN?9k+FlQlBCjou8zy_TRIQt)s}PZ4ArF@r7l8EHNMVALF%bD zfoE9~+4D3wgql7}msbi)Hv)F9ba^q}b(YStt<)pIrE4H#ufonXNiCg7%W)xR=_0)Mb#tP&!Bpv**GcqtIo~`trIYb>>cvE+i@8&=+2?b*%8o~ZLHgZzgL4szw-830z!)i4XJn!~ zp3=vOw_{x7$uP=tgwPw;;6~hzw~!B0YD*_^yeXWEE@+H&G{vQ&6<$yux(vs9VImoU zZm5mQsE*pADPG0}52d>vcK*T($Use0LK>Q(J?=stj4EAaq#y_1;wjvVESdWn^v7E$ zgq^c!X8+PZfQj-jn~GeR2+qMcoWOG~F7!7rKIqb&fWb@|YlKr?_l)I_$4Ke^rb@R9 zhOBhC8?g~O2eB8wIzP~;vOUUtuS$V*b|Q?e*d_jeGtKpre@R2f{LkZ}qY&E>#un$i zDo52EUUC|Joxk|$IEJfYd=g`Yx~NWjG0e*jhOBCnu^%RiB7BPf=syZ6T^NTjNIBJaU1Ly&Z)iED(bIvzK6~ILHGl1vk{e|%-0^d_#JL@Qmu5~;*gZHafJE1U?z^j zU1X(GpOh&sdyy0MVO$CqJCq6o@ghRV#!c4z<8>{cksXU`a62BBf@kRuc-p1Ia>wWM zF1Nq7tjaCW4oy7%Z?RTrW6z~NzSAC;dVJE{6#el6LUQ{Ip1{56r5=V_x|}ZyPdWah z%LC|*o6$o`lz~+B9@!OWC`E}FIi@$BQQz-VGJk*Eq~>p}&TED?=!TndyPWedZkKcF zT4gd6L9MVkR^vd z9g~oY988e$-7v~5D@c$yO7}R72VYx3g2Y+6ENsDc?8EQ)6Nlt>2Ug%yWLo7aLH-ZP WJd?ebnqABQ0000 - - - - SDK Demo Account Page - - - - - - - - - - -
-
-

Profile

-
- - -
-
-
-
- -
-
-
-

Change Password

-
- - - -
Old Password:
New Password:
-
- -
-
-
-

Set Password

-
- Password:
-
- -
-
-
-

Account Linking

-
-
-
- -
-
-
-

Update Account

-
- - - - -
First Name:
Last Name:
About:
-
- -
-
-
-

Custom Object Management

-
- - - - -
Create
Object Name:
Data:
-
- -
- - - - - - -
Update
Object Name:
Object ID:
Data:
-
- -
- - - - - -
Delete
Object Name:
Object ID:
-
- -
- - - -
- - Read
- Object Name:
-
- -

-
-
-
-

Configure MultiFactor

-
- Reset Google Authenticator
-
- -
-
-
-
-

Roles Management

-
- All Roles
- - - - - - -
Role
- -
- - Create Role
- Role:
-
- -
- - Delete Role
- Role:
-
- -
- - Current User Role(s)
- - - - - - -
Role
- -
- - Assign Role to User
- Role:
-
- -
-
-
-
- - - - - diff --git a/demo/resetpassword.html b/demo/resetpassword.html deleted file mode 100644 index d662b9c..0000000 --- a/demo/resetpassword.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - SDK Demo Reset Password Page - - - - - - - -
- -
-
-
-

Reset Password

-
- - - -
Password:
Confirm Password:
-
- -
-
-
- - - - diff --git a/package.json b/package.json new file mode 100644 index 0000000..630a244 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch-poll": "npm run watch -- --watch-poll", + "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", + "prod": "npm run production", + "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" + }, + "devDependencies": { + "axios": "^0.16.2", + "bootstrap-sass": "^3.3.7", + "cross-env": "^5.0.1", + "jquery": "^3.1.1", + "laravel-mix": "^1.0", + "lodash": "^4.17.4", + "vue": "^2.1.10" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..9ecda83 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,31 @@ + + + + + ./tests/Feature + + + + ./tests/Unit + + + + + ./app + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..903f639 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,20 @@ + + + Options -MultiViews + + + RewriteEngine On + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(.*)/$ /$1 [L,R=301] + + # Handle Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + diff --git a/demo/css/style.css b/public/css/style.css similarity index 51% rename from demo/css/style.css rename to public/css/style.css index 74f1203..d40b15a 100644 --- a/demo/css/style.css +++ b/public/css/style.css @@ -1,22 +1,14 @@ body { margin: 0; background-color: #f9f9f9; - color: #384049; font-family: "-apple-system", "system-ui", "Helvetica Neue", "Helvetica", "Arial", "sans-serif"; font-size: 15px; } table { - min-width: 200px; - margin-left: auto; - margin-right: auto; font-size: 15px; } -td { - text-align: left; -} - input { width: 170px; height: 22px; @@ -24,7 +16,7 @@ input { } button { - background-color: #35A8FF; + background-color: #2299DD; color: white; border: none; text-align: center; @@ -39,22 +31,6 @@ hr { width: 55%; } -.table-style td, .table-style th { - border: 1px solid #dddddd; - text-align: left; - padding: 4px; -} - -.table-style tr:nth-child(even) { - background-color: #dddddd; -} - -.navbar-ul { - list-style-type: none; - margin: 0; - padding: 0; -} - .section-menu { position: fixed; background-color: white; @@ -64,7 +40,6 @@ hr { border-right-width: 1px; border-right-color: #EEEEEE; text-align: center; - overflow: auto; } .section-menu img { @@ -72,57 +47,66 @@ hr { margin: 10px 10px 0px 10px; } +.section-main { + width: 70vw; + min-width: 250px; + margin-left: 250px; + text-align: center; +} + +.section-minimal { + padding: 100px 5vh 5vh 5vh; +} + +.section-ls { + padding: 5vh; +} + +.button-group { + margin-top: 20px; +} + .button-group a { - float: left; background-color: white; color: #384049; border-top: 1px solid #D3D3D3; border-bottom: 1px solid #D3D3D3; padding: 10px 24px; - margin-top: 5px; cursor: pointer; text-decoration: none; width: 77px; - font-size: 13px; - white-space: nowrap; } .button-group a:hover { background-color: #D3D3D3; } -.section-main { - padding: 5vh; - width: 70vw; - min-width: 250px; - margin-left: 250px; - text-align: center; -} - -.right-elem { - display: none; +.table-style td, .table-style th { + border: 1px solid #dddddd; + text-align: left; + padding: 8px; } -.visible { - display: block; +.table-style tr:nth-child(even) { + background-color: #dddddd; } -.container { +.container-small { background-color: #eee; + height: 120px; width: 400px; - padding: 20px; - margin: auto; + padding: 30px 20px 0 20px; } -.customobj-container { +/* no height */ +.container { background-color: #eee; - width: 600px; - padding: 20px; - margin: auto; + width: 400px; + padding: 30px 20px 30px 20px; } .vertical-menu { - margin-top: 44px; + margin-top: 46px; width: 100%; border: 0px solid lightgray; } @@ -145,17 +129,9 @@ hr { font-style: italic; } -.error-message { - color: red; -} - -.success-message { - color: green; -} - #customobj-container { background-color: #eee; - height: 650px; + height: 600px; width: 400px; padding: 30px 20px 0 20px; } @@ -166,42 +142,36 @@ hr { display: inline-block; width: 43px; height: 40px; - background-image:url("../icons/icon-sprite-32.png"); + background-image:url("../images/icon-sprite-32.png"); border-radius: 5px; - /*default*/ background-position: 0px 0px; background-color: lightgray; } -.lr-ls-icon-Twitter { +.lr-ls-icon-twitter { background-position: 0px 9.6%; - background-color: #35A8FF; + background-color: #55acee; } -.lr-ls-icon-Facebook { - background-position: 0px 2.45%; +.lr-ls-icon-facebook { + background-position: 0px 2.4%; background-color: #3b5998; } -.lr-ls-icon-LinkedIn { +.lr-ls-icon-linkedin { background-position: 0px 7.2%; background-color: #007bb6; } -.lr-ls-icon-Google { +.lr-ls-icon-google { background-position: 0px 4.8%; background-color: #dd4b39; } -.lr-ls-icon-Instagram { - background-position: 0px 28.65%; +.lr-ls-icon-instagram { + background-position: 0px 28.6%; background-color: #406e94; } - -.lr-ls-icon-Vkontakte { - background-position: 0px 73.9%; - background-color: #5B88BD -} .lr-image-frame { display: inline-block; width: 150px; @@ -214,4 +184,84 @@ hr { .lr-image-frame img{ width: 100%; } +.lr-heading { + font-size: 20px; + line-height: 30px; + font-size: 1.25rem; + line-height: 1.875rem; +} +.lr-profile-info { + font-size: 14px; + line-height: 25px; + font-size: 0.875rem; + line-height: 1.5625rem; +} + +/*==============================================================*/ +.overlay { + text-align: center; + position: fixed; + top: 0; + bottom: 60%; + left: 0; + right: 0; + height: 100%; + position: fixed; + width: 100%; + top: 0; + z-index: 99999; + background: rgb(127, 127, 127); /* The Fallback */ + background: none no-repeat scroll 0 0 rgba(127, 127, 127, 0.6); +} + +.overlay:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; + margin-right: -0.25em; /* Adjusts for spacing */ +} + +.lr_loading_screen { + background: rgba(0,0,0,.5); + height: 100vh; + position: relative; + z-index: 10000; +} + +.lr_loading_screen_center { + position: absolute; + left: 50%; + top: 50%; + width: 500px; + margin-left: -250px; + margin-top: -26px; +} +.lr_loading_screen_spinner { + height: 52px; + width: 52px; + margin: 0 auto; + display: block; + background-image: url(../images/loading.png); + animation: lr_loading_screen_animation_spinning .8s linear infinite; + background-size: 52px 52px; + background-repeat: no-repeat; +} +.lr_loading_phrase { + color: #fff; +} +.lr_loading_phrase, .lr_loading_screen_spinner { + backface-visibility: hidden; + perspective: 1000; +} +@-moz-keyframes lr_loading_screen_animation_spinning +{0%{transform:rotate(0)}100%{transform:rotate(360deg)} +} +@-webkit-keyframes lr_loading_screen_animation_spinning +{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} + +@-o-keyframes lr_loading_screen_animation_spinning +{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} +@keyframes lr_loading_screen_animation_spinning +{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/demo/icons/icon-sprite-32.png b/public/images/icon-sprite-32.png similarity index 100% rename from demo/icons/icon-sprite-32.png rename to public/images/icon-sprite-32.png diff --git a/public/images/line.png b/public/images/line.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca333428daa674917ee8eaf93335a9b3c8cf000 GIT binary patch literal 3447 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/loading.png b/public/images/loading.png new file mode 100644 index 0000000000000000000000000000000000000000..84333e47ed67f5cb1dd7e7ab7ec68c1b89afbf37 GIT binary patch literal 4617 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 K@gezf@qYpQcJ~$l literal 0 HcmV?d00001 diff --git a/demo/lr-logo.png b/public/images/lr-logo.png similarity index 100% rename from demo/lr-logo.png rename to public/images/lr-logo.png diff --git a/public/images/lr_provider_sprite.png b/public/images/lr_provider_sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd53bb26a0536c0b2b182eee0ff82a4165413b9 GIT binary patch literal 7967 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 V??W{#DsBJ(002ovPDHLkV1k(i*y#WO literal 0 HcmV?d00001 diff --git a/public/images/mapping/Pinterest.png b/public/images/mapping/Pinterest.png new file mode 100644 index 0000000000000000000000000000000000000000..cb16e8a2bcedf94cdf9ddf70aa9ac16a3ed9ea15 GIT binary patch literal 3388 zcmV-C4a4$@P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0007KNkl$3WD=#gc&Cu60@*y- zG_fsHgEeI)y3_Qe4X9#q( z=Qg)h9VIzUk{R+AX<6?C5;Mbohh1%wco=`^XC zC?$;zxy!G_NkwK@{q`N9D5!2Xn$J&qE{2&&BZSxzKnOq(>3={;V*{S1g9ue6J~2ru zGJ}ywP~LVFscX!?d zZg>R6<=T3L!mp6J#=_fo)c0J&%4Ap^eNV&PTS!eMIyl6yJAK&MEF$N?ZUJl?)#Jw3 z+Dtk+%k2;4Yp}uBog@*5n>y8mw?y^P9hv; z_Q^A(%T@Tc|AiQ>4aN(@gaEy)j7)3}p(yNugbMrtjC`DJ$jrv}?7SK0e**wcu;Zd@ Ss$_2f0000)}-+y+7^=tpi UtN8Fe2P$IlboFyt=akR{08QW_X#fBK literal 0 HcmV?d00001 diff --git a/public/images/mapping/amazon.png b/public/images/mapping/amazon.png new file mode 100644 index 0000000000000000000000000000000000000000..7f8717d2761aa01bd8dd48a712dec8f982835351 GIT binary patch literal 3219 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 FV1j@72=M>_ literal 0 HcmV?d00001 diff --git a/public/images/mapping/aol.png b/public/images/mapping/aol.png new file mode 100644 index 0000000000000000000000000000000000000000..1146402b7afe8dbf1c75035813df4264c92c0bb4 GIT binary patch literal 3231 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 literal 0 HcmV?d00001 diff --git a/public/images/mapping/facebook.png b/public/images/mapping/facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..78102aa3faf49f53e18b0757d756678c54dbe685 GIT binary patch literal 3146 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 literal 0 HcmV?d00001 diff --git a/public/images/mapping/kaixin.png b/public/images/mapping/kaixin.png new file mode 100644 index 0000000000000000000000000000000000000000..fcfc3204104cae9a9189d9ae4266423fd2eacfd9 GIT binary patch literal 3518 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 literal 0 HcmV?d00001 diff --git a/public/images/mapping/line.png b/public/images/mapping/line.png new file mode 100644 index 0000000000000000000000000000000000000000..d10eb825e120c3631d493cba6349bfd53dcc14ca GIT binary patch literal 3370 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 AHvj+t literal 0 HcmV?d00001 diff --git a/public/images/mapping/linkedin.png b/public/images/mapping/linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b0806be77ec02795134aee9cf995388d518b9b GIT binary patch literal 3191 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 literal 0 HcmV?d00001 diff --git a/public/images/mapping/live.png b/public/images/mapping/live.png new file mode 100644 index 0000000000000000000000000000000000000000..1c532f22ab86b463f428459a1fc9668626924a8f GIT binary patch literal 3204 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 literal 0 HcmV?d00001 diff --git a/public/images/mapping/mixi.png b/public/images/mapping/mixi.png new file mode 100644 index 0000000000000000000000000000000000000000..86e293cab746551deb50dc998303e0fed7cf39f3 GIT binary patch literal 3092 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 QcmMzZ07*qoM6N<$g5mWu5&!@I literal 0 HcmV?d00001 diff --git a/public/images/mapping/odnoklassniki.png b/public/images/mapping/odnoklassniki.png new file mode 100644 index 0000000000000000000000000000000000000000..2a7f3d929e1a6dc233dcc5dd4b9520ad4733d678 GIT binary patch literal 3262 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 literal 0 HcmV?d00001 diff --git a/public/images/mapping/openid.png b/public/images/mapping/openid.png new file mode 100644 index 0000000000000000000000000000000000000000..ece969aa49a99c468d23aeb222936b5faa0e711f GIT binary patch literal 3240 zcmV;Z3|I4sP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005gNkl)=s7M-4a*F zT@V`(e|K^{d+nDlxx^EvKetF9Vvn^!XZS;zCUM~`_y}_?uWBNi3#1O46k^TOL z7`HKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005rNklpnF>KVk*y*~E80}lBC16Yl|>ZMDk9noL9_~@ zRV8g&6+}Us+yyQoD%(V~C~Bpc;i44HKaJryI?ikHO>cbIs&DZg_q_X^d*8X|rlKCh zX!d_+CW8%Fn}8!MqFjkns71{xg4zt063`OrGVC})Za0~FCWjb&!PGd}WOgPIE~0%K z=N__oZ?e|hIM1*0?n#2AO0bO9b}skR+`-%!?;lb4MdvX(_H+I*r2-%NVv;IB2}f^) z%lRMNKgj4%`2W|px%iCj-JIxU@Fj&=(xl_+Ev+E|2JVE*jc7n=nf_~(7HG<`^-!$b z3W6;(v;=hIZBRYdS`hN*aELc{#S=*jUwO(Ai}RJ-`WQ~f&)*Z2OJV3u zxzN>0Ut}9tp9^vRdt4w8)L`-(V_yQg=TcSJWz3`N4C~s6%6xqj%b$*&RxI)ARzN#X zbM`LHn}RL}E^zW*`1bKBqn~4fRMcY%EwPb~-{kQ1N(aTD$C{>!xC1=srZDr@*3(IX zsM7YXQ|!A!+fFidOpoxXkAYr_g_Z7^PDMTPtCp!)u~_3eQZ+2hQi!Na%njx;m{_$? l*-AI_`S4Do{@?5TX8^I0lPhG;OYr~z002ovPDHLkV1klE9!CHG literal 0 HcmV?d00001 diff --git a/public/images/mapping/paypal.png b/public/images/mapping/paypal.png new file mode 100644 index 0000000000000000000000000000000000000000..5a66e15407f45ca7fb9259fd515c6d50a3078d18 GIT binary patch literal 3208 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 T)F%8D00000NkvXXu0mjf_bN=- literal 0 HcmV?d00001 diff --git a/public/images/mapping/qq.png b/public/images/mapping/qq.png new file mode 100644 index 0000000000000000000000000000000000000000..4103fc8312c07ab728334d6b746e77f8d9d1280e GIT binary patch literal 3429 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 AS^xk5 literal 0 HcmV?d00001 diff --git a/public/images/mapping/salesforce.png b/public/images/mapping/salesforce.png new file mode 100644 index 0000000000000000000000000000000000000000..d33c10f00f0c41b376375e0a70dcee703cda06fe GIT binary patch literal 3306 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 literal 0 HcmV?d00001 diff --git a/public/images/mapping/stackexchange.png b/public/images/mapping/stackexchange.png new file mode 100644 index 0000000000000000000000000000000000000000..df2a0590d629d77b1b797ed33e33db4a5240d05b GIT binary patch literal 3201 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 literal 0 HcmV?d00001 diff --git a/public/images/mapping/steamcommunity.png b/public/images/mapping/steamcommunity.png new file mode 100644 index 0000000000000000000000000000000000000000..371094b1b384e3581acd268f18f2723baae9c015 GIT binary patch literal 3175 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 R77G9X002ovPDHLkV1iqn>$Ly? literal 0 HcmV?d00001 diff --git a/public/images/mapping/verisign.png b/public/images/mapping/verisign.png new file mode 100644 index 0000000000000000000000000000000000000000..5c55529b114214b44c2b1c6b197c356a774cef1d GIT binary patch literal 3303 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 B{?q^f literal 0 HcmV?d00001 diff --git a/public/images/mapping/wordpres.png b/public/images/mapping/wordpres.png new file mode 100644 index 0000000000000000000000000000000000000000..a36751f207c70e4ae19f93520bb61367187fd54e GIT binary patch literal 3305 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 literal 0 HcmV?d00001 diff --git a/public/images/mapping/yahoo.png b/public/images/mapping/yahoo.png new file mode 100644 index 0000000000000000000000000000000000000000..a4581acd02e8b7ba86eaf345aca4478d98f0e3dd GIT binary patch literal 3200 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 C)(yu1 literal 0 HcmV?d00001 diff --git a/demo/user-blank.png b/public/images/user-blank.png similarity index 100% rename from demo/user-blank.png rename to public/images/user-blank.png diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..1e1d775 --- /dev/null +++ b/public/index.php @@ -0,0 +1,58 @@ + + */ + +/* +|-------------------------------------------------------------------------- +| Register The Auto Loader +|-------------------------------------------------------------------------- +| +| Composer provides a convenient, automatically generated class loader for +| our application. We just need to utilize it! We'll simply require it +| into the script here so that we don't have to worry about manual +| loading any of our classes later on. It feels great to relax. +| +*/ + +require __DIR__.'/../bootstrap/autoload.php'; + +/* +|-------------------------------------------------------------------------- +| Turn On The Lights +|-------------------------------------------------------------------------- +| +| We need to illuminate PHP development, so let us turn on the lights. +| This bootstraps the framework and gets it ready for use, then it +| will load up this application so that we can run it and send +| the responses back to the browser and delight our users. +| +*/ + +$app = require_once __DIR__.'/../bootstrap/app.php'; + +/* +|-------------------------------------------------------------------------- +| Run The Application +|-------------------------------------------------------------------------- +| +| Once we have the application, we can handle the incoming request +| through the kernel, and send the associated response back to +| the client's browser allowing them to enjoy the creative +| and wonderful application we have prepared for them. +| +*/ + +$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); + +$response = $kernel->handle( + $request = Illuminate\Http\Request::capture() +); + +$response->send(); + +$kernel->terminate($request, $response); diff --git a/demo/js/LoginRadiusLoginScreen.1.0.0.js b/public/js/LoginRadiusLoginScreen.1.0.0.js similarity index 95% rename from demo/js/LoginRadiusLoginScreen.1.0.0.js rename to public/js/LoginRadiusLoginScreen.1.0.0.js index 45113f1..30b5bde 100644 --- a/demo/js/LoginRadiusLoginScreen.1.0.0.js +++ b/public/js/LoginRadiusLoginScreen.1.0.0.js @@ -160,7 +160,7 @@ ' line-height: 4rem;'+ ' color: #424242;'+ ' }'+ - ' #lr-ls-sectiondivider,#lr-ls-sectiondividerL {'+ + ' #lr-ls-sectiondivider {'+ ' margin-top: 3.2rem;'+ ' display: block;'+ ' margin-left: auto;'+ @@ -329,13 +329,12 @@ ' background-color: #F5F5F5;'+ ' }'+ ' select {'+ - ' margin-top: 4px;'+ - ' width: 91vw;'+ ' height: 5rem;'+ - ' background-color:' + ((options.input && options.input.background) ? options.input.background : ' #F5F5F5') + ';' + + ' background-color: #F5F5F6;'+ ' font-size: 5vw;'+ ' font-weight: 300;'+ ' padding: 8px;'+ + ' margin-left: 20px;'+ ' }'+ ' textarea,'+ ' input[type="password"],'+ @@ -347,7 +346,7 @@ ' border-style: hidden;'+ ' font-size: 5vw;'+ ' font-weight: 300;'+ - ' line-height: 100%;'+ + ' line-height: 10rem;'+ ' padding: 8px;'+ ' -webkit-box-sizing: border-box;'+ ' box-sizing: border-box;'+ @@ -437,15 +436,6 @@ ' line-height: 2rem;'+ ' margin-top: 1rem;'+ ' }'+ - ' #loginradius-showQRcode-ManualEntryCode {'+ - ' font-size: 4vw;'+ - ' }'+ - ' #loginradius-button-resendotp {'+ - ' font-size: 4vw;'+ - ' }'+ - ' #loginradius-button-changenumber {'+ - ' font-size: 4vw;'+ - ' }'+ ' @-webkit-keyframes slide-up {'+ ' 0% {'+ ' opacity: 0;'+ @@ -635,10 +625,7 @@ ' line-height: 19px;'+ ' color: #424242;'+ ' }'+ - ' .lrForgotpw {'+ - ' padding-left: 16px;'+ - ' }'+ - ' #lr-ls-sectiondivider, #lr-ls-sectiondividerL {'+ + ' #lr-ls-sectiondivider {'+ ' padding-top: 7px;'+ ' margin-top: 16px;'+ ' display: block;'+ @@ -665,7 +652,7 @@ ' width: 3.5rem;'+ ' border-radius: 4px;'+ ' overflow: hidden;'+ - ' margin-top: 4px;'+ + ' margin-top: 8px;'+ ' position: relative;'+ ' border: 1px solid rgba(0, 0, 0, 0.1);'+ ' text-align: left;'+ @@ -699,7 +686,7 @@ ' width: 100%;'+ ' border-radius: 4px;'+ ' overflow: hidden;'+ - ' margin-top: 4px;'+ + ' margin-top: 8px;'+ ' position: relative;'+ ' border: 1px solid rgba(0, 0, 0, 0.1);'+ ' text-align: left;'+ @@ -788,7 +775,7 @@ ' margin-bottom: 2.67vh;'+ ' }'+ ' #login-container .loginradius--form-element-content, #registration-container .loginradius--form-element-content, #forgotpassword-container .loginradius--form-element-content, #resetpassword-container .loginradius--form-element-content {'+ - ' //padding-left: 16px;'+ + ' padding-left: 16px;'+ ' }'+ ((options.singlepagestyle)? "" : ( @@ -806,13 +793,11 @@ ' #forgotpassword-container {'+ ' width: 329px;'+ ' z-index: 0;'+ - ' margin-left: auto;'+ - ' margin-right: auto;'+ ' }'+ ' #forgotpassword-container {'+ ' margin-top: 16px;'+ ' }'+ - ' #resetpassword-container #loginradius-submit-reset-password {'+ + ' #loginradius-submit-reset-password {'+ ' width:45% !important;'+ ' }'+ ' input .invalid {'+ @@ -820,14 +805,13 @@ ' background-color: #F5F5F5;'+ ' }'+ ' select {'+ - ' margin-top: 4px !important;'+ ' height: 32px;'+ - ' background-color:' + ((options.input && options.input.background) ? options.input.background : ' #F5F5F5') + ';' + + ' background-color: #F5F5F5;'+ ' font-size: 15px;'+ ' font-weight: 300;'+ ' line-height: 16px;'+ ' box-sizing: border-box;'+ - ' width: 326px;'+ + ' margin-left: 20px;'+ ' }'+ ' textarea,'+ ' input[type="password"],'+ @@ -852,8 +836,6 @@ ' line-height: 16px;'+ ' }'+ ' input[type="submit"] {'+ - ' margin-left: auto;'+ - ' margin-right: auto;'+ ' margin-top: 2.1vh;'+ ' color: #FFFFFF;'+ ' font-size: 14px;'+ @@ -1055,7 +1037,7 @@ ' margin-left: auto;'+ '}'+ ''+ - '#lr-ls-sectiondivider:after, #lr-ls-sectiondividerL:after {'+ + '#lr-ls-sectiondivider:after {'+ ' content: '+((options.content && options.content.socialandloginDivider) ? ('"'+options.content.socialandloginDivider+'"') : '"OR"') + ';'+ '}'+ ''+ @@ -1094,10 +1076,6 @@ ' background-color: #cb2128;'+ '}'+ ''+ - '.lr-sl-icon:before {'+ - ' background-position: 0px -0.4%;'+ - '}'+ - ''+ '.lr-sl-icon-facebook:before {'+ ' background-position: 0 0;'+ '}'+ @@ -1127,7 +1105,7 @@ '}'+ ''+ '.lr-sl-icon-aol:before {'+ - ' background-position: 0px 16.4%;'+ + ' background-position: 0px 16.3%;'+ '}'+ ''+ '.lr-sl-icon-disqus:before {'+ @@ -1147,7 +1125,7 @@ '}'+ ''+ '.lr-sl-icon-instagram:before {'+ - ' background-position: 0px 28.45%;'+ + ' background-position: 0px 28.35%;'+ '}'+ ''+ '.lr-sl-icon-kaixin:before {'+ @@ -1159,7 +1137,7 @@ '}'+ ''+ '.lr-sl-icon-livejournal:before {'+ - ' background-position: 0px 35.55%;'+ + ' background-position: 0px 35.5%;'+ '}'+ ''+ '.lr-sl-icon-mixi:before {'+ @@ -1191,7 +1169,7 @@ '}'+ ''+ '.lr-sl-icon-qq:before {'+ - ' background-position: 0px 54.75%;'+ + ' background-position: 0px 54.7%;'+ '}'+ ''+ '.lr-sl-icon-renren:before {'+ @@ -1211,7 +1189,7 @@ '}'+ ''+ '.lr-sl-icon-steamcommunity:before {'+ - ' background-position: 0px 66.755%;'+ + ' background-position: 0px 66.7%;'+ '}'+ ''+ '.lr-sl-icon-verisign:before {'+ @@ -1231,7 +1209,7 @@ '}'+ ''+ '.lr-sl-icon-mailru:before {'+ - ' background-position: 0px 78.66%;'+ + ' background-position: 0px 78.6%;'+ '}'+ ''+ '.lr-sl-icon-xing:before {'+ @@ -1452,8 +1430,9 @@ ' +@endsection \ No newline at end of file diff --git a/resources/views/accountlinking.blade.php b/resources/views/accountlinking.blade.php new file mode 100644 index 0000000..668ab05 --- /dev/null +++ b/resources/views/accountlinking.blade.php @@ -0,0 +1,30 @@ +@extends('layouts.profile.home') + @section('content') +
+
+
+
+
+
+
+ +
+
+
+
+ @endsection \ No newline at end of file diff --git a/resources/views/changepassword.blade.php b/resources/views/changepassword.blade.php new file mode 100644 index 0000000..55e5fe9 --- /dev/null +++ b/resources/views/changepassword.blade.php @@ -0,0 +1,16 @@ +@extends('layouts.profile.home') + @section('content') +
+
+
+
+ + +
Old Password:
New Password:
+
+ + +
+
+
+ @endsection \ No newline at end of file diff --git a/resources/views/customobjects.blade.php b/resources/views/customobjects.blade.php new file mode 100644 index 0000000..0596a52 --- /dev/null +++ b/resources/views/customobjects.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.profile.home') + @section('content') +
+
+
+
+ + + +
Create
Object Name:
Data: + +
+
+ + +

+ +
+ + + + +
Update
Object Name:
Object Record ID:
Data:
+
+ + +

+ +
+ + + +
Delete
Object Name:
Object Record ID:
+
+ + +

+ + Read
+ Object Name:
+
+ +


+
+
+
+
+
+ @endsection \ No newline at end of file diff --git a/resources/views/forgot.blade.php b/resources/views/forgot.blade.php new file mode 100644 index 0000000..042a16b --- /dev/null +++ b/resources/views/forgot.blade.php @@ -0,0 +1,23 @@ +@extends('layouts.home') +@section('content') +
+
+
+
+ +
Email Address:
+
+ + +
+ + +
+
+ @endsection \ No newline at end of file diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php new file mode 100644 index 0000000..f78abb2 --- /dev/null +++ b/resources/views/index.blade.php @@ -0,0 +1,54 @@ +@extends('layouts.home') + + +@section('content') + +
+
+
+
+ + + +
Traditional Login
Email Address:
Password:
+
+ +

+ +
+ + + +
Multi-Factor Login
Email Address:
Password:
+
+
+
+ +

+
+ + + +
Passwordless Login
Email Address:
+
+
+ + +

+ + Social Login
+ + +
+
+ +






+
+
+ +@endsection + diff --git a/resources/views/index.html b/resources/views/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/resources/views/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/resources/views/layouts/home.blade.php b/resources/views/layouts/home.blade.php new file mode 100644 index 0000000..8767fde --- /dev/null +++ b/resources/views/layouts/home.blade.php @@ -0,0 +1,54 @@ + + + Login + + + + + + + + + + + + + + + +
+ + + + +
+ + @yield('content') + + + + \ No newline at end of file diff --git a/resources/views/layouts/profile/home.blade.php b/resources/views/layouts/profile/home.blade.php new file mode 100644 index 0000000..c8c27d3 --- /dev/null +++ b/resources/views/layouts/profile/home.blade.php @@ -0,0 +1,43 @@ + + + profile + + + + + + + + + + + + + + + + @yield('content') + + \ No newline at end of file diff --git a/resources/views/loginscreen.blade.php b/resources/views/loginscreen.blade.php new file mode 100644 index 0000000..d93400f --- /dev/null +++ b/resources/views/loginscreen.blade.php @@ -0,0 +1,209 @@ + + @extends('layouts.home') + @section('content') + +
+
+
+
+
+ + @endsection \ No newline at end of file diff --git a/resources/views/multifactor.blade.php b/resources/views/multifactor.blade.php new file mode 100644 index 0000000..1a8ac81 --- /dev/null +++ b/resources/views/multifactor.blade.php @@ -0,0 +1,13 @@ +@extends('layouts.profile.home') +@section('content') +
+
+
+ Reset Google Authenticator configurations
+
+ + +
+
+
+ @endsection \ No newline at end of file diff --git a/resources/views/profile.blade.php b/resources/views/profile.blade.php new file mode 100644 index 0000000..08ecf17 --- /dev/null +++ b/resources/views/profile.blade.php @@ -0,0 +1,27 @@ +@extends('layouts.profile.home') +@section('content') +
+
+
+ + + +
Hello,
+
+
+ +
+
+ Uid: + +
+
+ Last Login: + +
+
+
+
+
+
+ @endsection \ No newline at end of file diff --git a/resources/views/roles.blade.php b/resources/views/roles.blade.php new file mode 100644 index 0000000..cd064fb --- /dev/null +++ b/resources/views/roles.blade.php @@ -0,0 +1,38 @@ +@extends('layouts.profile.home') +@section('content') + +
+
+
+ All Roles
+
+

+ + Create Role
+ Role:
+
+ + +

+ + Delete Role
+ Role:
+
+ + +

+ + Current User Role(s)
+
+

+ + Assign Role to User
+ Role:
+
+ + +

+




+
+
+ @endsection \ No newline at end of file diff --git a/resources/views/setpassword.blade.php b/resources/views/setpassword.blade.php new file mode 100644 index 0000000..4caa776 --- /dev/null +++ b/resources/views/setpassword.blade.php @@ -0,0 +1,15 @@ +@extends('layouts.profile.home') + @section('content') +
+
+
+ Password:
+
+ + +
+
+
+ + @endsection + \ No newline at end of file diff --git a/resources/views/signup.blade.php b/resources/views/signup.blade.php new file mode 100644 index 0000000..d472ac8 --- /dev/null +++ b/resources/views/signup.blade.php @@ -0,0 +1,17 @@ +@extends('layouts.home') + @section('content') +
+
+
+
+ + + +
Email Address:
Password:
Confirm password:
+
+ + +
+
+
+ @endsection \ No newline at end of file diff --git a/resources/views/test.blade.php b/resources/views/test.blade.php new file mode 100644 index 0000000..11df0f1 --- /dev/null +++ b/resources/views/test.blade.php @@ -0,0 +1,6 @@ +@extends('layouts.app') + +@section('content') +hi there + +@endsection \ No newline at end of file diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php new file mode 100644 index 0000000..606e59e --- /dev/null +++ b/resources/views/welcome.blade.php @@ -0,0 +1,95 @@ + + + + + + + + Laravel + + + + + + + + +
+ @if (Route::has('login')) + + @endif + +
+
+ Laravel +
+ + +
+
+ + diff --git a/resources/views/welcome_message.php b/resources/views/welcome_message.php new file mode 100644 index 0000000..f511563 --- /dev/null +++ b/resources/views/welcome_message.php @@ -0,0 +1,89 @@ + + + + + Welcome to CodeIgniter + + + + + +
+

Welcome to CodeIgniter!

+ +
+

The page you are looking at is being generated dynamically by CodeIgniter.

+ +

If you would like to edit this page you'll find it located at:

+ application/views/welcome_message.php + +

The corresponding controller for this page is found at:

+ application/controllers/Welcome.php + +

If you are exploring CodeIgniter for the very first time, you should start by reading the User Guide.

+
+ + +
+ + + \ No newline at end of file diff --git a/routes/api.php b/routes/api.php new file mode 100644 index 0000000..c641ca5 --- /dev/null +++ b/routes/api.php @@ -0,0 +1,18 @@ +get('/user', function (Request $request) { + return $request->user(); +}); diff --git a/routes/channels.php b/routes/channels.php new file mode 100644 index 0000000..f16a20b --- /dev/null +++ b/routes/channels.php @@ -0,0 +1,16 @@ +id === (int) $id; +}); diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 0000000..75dd0cd --- /dev/null +++ b/routes/console.php @@ -0,0 +1,18 @@ +comment(Inspiring::quote()); +})->describe('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 0000000..8b7f0e8 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,57 @@ + 'minimal', 'uses' => 'HomeController@index']); + +Route::get('/login', ['as' => 'login', 'uses' => 'HomeController@loginscreen']); +Route::get('/profile', ['as' => 'profileview', 'uses' => 'HomeController@profile']); +Route::get('/register', ['as' => 'signup', 'uses' => 'HomeController@signup']); + +Route::get('/forgotpassword', ['as' => 'forgot', 'uses' => 'HomeController@forgot']); +Route::get('/changepassword', ['as' => 'changepassword', 'uses' => 'HomeController@changePassword']); +Route::get('/setpassword', ['as' => 'setpassword', 'uses' => 'HomeController@setPassword']); +Route::get('/account', ['as' => 'account', 'uses' => 'HomeController@account']); + +Route::get('/customobjects', ['as' => 'customobjects', 'uses' => 'HomeController@customObjects']); +Route::get('/roles', ['as' => 'roles', 'uses' => 'HomeController@roles']); +Route::get('/multifactor', ['as' => 'multifactor', 'uses' => 'HomeController@multifactor']); +Route::get('/accountlinking', ['as' => 'accountlinking', 'uses' => 'HomeController@accountlinking']); +/** + * route for controller + */ +Route::post('/loginByEmail', 'HomeController@loginByEmail'); +Route::any('/profile', 'Profile@Profile'); +Route::any('/forgot', 'HomeController@forgot'); +Route::any('/minimal', 'HomeController@minimal'); +Route::any('/signup', 'HomeController@signup'); + +/** + * default route + */ +Route::any('/{default?}', 'HomeController@index'); + + + + + diff --git a/server.php b/server.php new file mode 100644 index 0000000..5fb6379 --- /dev/null +++ b/server.php @@ -0,0 +1,21 @@ + + */ + +$uri = urldecode( + parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) +); + +// This file allows us to emulate Apache's "mod_rewrite" functionality from the +// built-in PHP web server. This provides a convenient way to test a Laravel +// application without having installed a "real" web server software here. +if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { + return false; +} + +require_once __DIR__.'/public/index.php'; diff --git a/src/LoginRadiusSDK/Advance/ConfigAPI.php b/src/LoginRadiusSDK/Advance/ConfigAPI.php deleted file mode 100644 index d3e4021..0000000 --- a/src/LoginRadiusSDK/Advance/ConfigAPI.php +++ /dev/null @@ -1,56 +0,0 @@ - 'key')); - } - - - /** - * This API allows you to query your LoginRadius account for basic server information and server time information which is useful when generating an SOTT token. - * - * @param $time_difference = "10"; - * @return Serverinfo Object - */ - public function getServerTime($time_difference = '10') { - return Functions::apiClient(API_DOMAIN. "/identity/v2/serverinfo", array("timedifference" => $time_difference), array('authentication' => 'key')); - } - -} diff --git a/src/LoginRadiusSDK/Advance/WebHooksAPI.php b/src/LoginRadiusSDK/Advance/WebHooksAPI.php deleted file mode 100755 index 38fb34d..0000000 --- a/src/LoginRadiusSDK/Advance/WebHooksAPI.php +++ /dev/null @@ -1,90 +0,0 @@ -apiClientHandler('webhook/test', array('apikey' => Functions::getApiKey(), 'apisecret' => Functions::getApiSecret())); - } - - /** - * This API allow you to subscribe WebHook on your LoginRadius site. - * - * @param $target_url //URL where trigger will send data when it invoke - * @param $event //Name of event, Login, Register, UpdateProfile, ResetPassword, ChangePassword, emailVerification, AddEmail, RemoveEmail, BlockAccount, DeleteAccount, SetUsername, CreateTraditionalAccount, AssignRoles, UnassignRoles, SetPassword, LinkAccount, UnlinkAccount, UpdatePhoneId, VerifyPhoneNumber - * @return type - */ - public function subscribeWebHooks($target_url, $event = 'Login') - { - return $this->apiClientHandler('webhook', array('apikey' => Functions::getApiKey(), 'apisecret' => Functions::getApiSecret()), array('method' => 'POST', 'post_data' => array('TargetUrl' => $target_url, 'Event' => $event), 'content_type' => 'json')); - } - - - /** - * This API retrieves all of the Urls subscribed to a given WebHook event - * - * @param string $event - * @return type - */ - public function getWebHooksSubscribedUrls($event = 'Login') - { - return $this->apiClientHandler('webhook', array('apikey' => Functions::getApiKey(), 'apisecret' => Functions::getApiSecret(), 'event' => $event)); - } - - - /** - * This API allow you to unsubscribe WebHook on your LoginRadius site. - * - * @param $target_url //URL where trigger will send data when it invoke - * @return type - */ - public function unsubscribeWebHooks($target_url, $event = 'Login') - { - return $this->apiClientHandler('webhook', array('apikey' => Functions::getApiKey(), 'apisecret' => Functions::getApiSecret()), array('method' => 'DELETE', 'post_data' => array('TargetUrl' => $target_url, 'Event' => $event), 'content_type' => 'json')); - } - - /** - * - * @param type $path - * @param type $query_array - * @param type $options - * @return type - */ - private function apiClientHandler($path, $query_array = array(), $options = array()) - { - return Functions::apiClient("/api/v2/" . $path, $query_array, array_merge(array('authentication' => 'secret'), $options)); - } -} diff --git a/src/LoginRadiusSDK/Clients/DefaultHttpClient.php b/src/LoginRadiusSDK/Clients/DefaultHttpClient.php deleted file mode 100755 index 9dacf26..0000000 --- a/src/LoginRadiusSDK/Clients/DefaultHttpClient.php +++ /dev/null @@ -1,212 +0,0 @@ -curlApiMethod($request_url, $options); - } elseif (ini_get('allow_url_fopen')) { - $response = $this->fsockopenApiMethod($request_url, $options); - } else { - throw new LoginRadiusException('cURL or FSOCKOPEN is not enabled, enable cURL or FSOCKOPEN to get response from LoginRadius API.'); - } - - if (!empty($response)) { - $result = json_decode($response); - if (isset($result->ErrorCode) && !empty($result->ErrorCode)) { - throw new LoginRadiusException($result->Message, $result); - } - } - return $response; - } - - /** - * Access LoginRadius API server by curl method - * - * @param type $request_url - * @param type $options - * @return type - */ - private function curlApiMethod($request_url, $options = array()) { - $ssl_verify = isset($options['ssl_verify']) ? $options['ssl_verify'] : false; - $method = isset($options['method']) ? strtoupper($options['method']) : 'GET'; - $data = isset($options['post_data']) ? $options['post_data'] : array(); - $content_type = isset($options['content_type']) ? trim($options['content_type']) : 'x-www-form-urlencoded'; - $auth_access_token = isset($options['access-token']) ? trim($options['access-token']) : ''; - $sott_header_content = isset($options['X-LoginRadius-Sott']) ? trim($options['X-LoginRadius-Sott']) : ''; - $secret_header_content = isset($options['X-LoginRadius-ApiSecret']) ? trim($options['X-LoginRadius-ApiSecret']) : ''; - $expiry_time = isset($options['X-Request-Expires']) ? trim($options['X-Request-Expires']) : ''; - $digest = isset($options['digest']) ? trim($options['digest']) : ''; - - $curl_handle = curl_init(); - curl_setopt($curl_handle, CURLOPT_URL, $request_url); - curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 15); - curl_setopt($curl_handle, CURLOPT_TIMEOUT, 50); - curl_setopt($curl_handle, CURLOPT_ENCODING, "gzip"); - curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify); - $optionsArray = array('Content-type: application/' . $content_type); - if ($auth_access_token != '') { - $optionsArray[] = 'Authorization:' . $auth_access_token; - } - if ($sott_header_content != '') { - $optionsArray[] = 'X-LoginRadius-Sott:' . $sott_header_content; - } - if ($secret_header_content != '') { - $optionsArray[] = 'X-LoginRadius-ApiSecret:' . $secret_header_content; - } - if ($expiry_time != '') { - $optionsArray[] = 'X-Request-Expires:' . $expiry_time; - } - if ($digest != '') { - $optionsArray[] = 'digest:' . $digest; - } - curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $optionsArray); - - if (isset($options['proxy']) && $options['proxy']['host'] != '' && $options['proxy']['port'] != '') { - curl_setopt($curl_handle, CURLOPT_PROXY, $options['proxy']['protocol'] . '://' . $options['proxy']['user'] . ':' . $options['proxy']['password'] . '@' . $options['proxy']['host'] . ':' . $options['proxy']['port']); - } - - if (!empty($data) || $data === true) { - if (($content_type == 'json') && (is_array($data) || is_object($data))) { - $data = json_encode($data); - } - - curl_setopt($curl_handle, CURLOPT_POSTFIELDS, (($content_type == 'json') ? $data : Functions::queryBuild($data))); - - if (in_array($method, array('POST', 'PUT', 'DELETE'))) { - curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, $method); - } - } - curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, 1); - curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true); - - $json_response = curl_exec($curl_handle); - if (curl_error($curl_handle)) { - $json_response = curl_error($curl_handle); - } - curl_close($curl_handle); - return $json_response; - } - - /** - * Access LoginRadius API server by fsockopen method - * - * @param type $request_url - * @param type $options - * @return type - */ - private function fsockopenApiMethod($request_url, $options = array()) { - $ssl_verify = isset($options['ssl_verify']) ? $options['ssl_verify'] : false; - $method = isset($options['method']) ? strtoupper($options['method']) : 'GET'; - $data = isset($options['post_data']) ? $options['post_data'] : array(); - $content_type = isset($options['content_type']) ? $options['content_type'] : 'form_params'; - $auth_access_token = isset($options['access-token']) ? trim($options['access-token']) : ''; - $sott_header_content = isset($options['X-LoginRadius-Sott']) ? trim($options['X-LoginRadius-Sott']) : ''; - $secret_header_content = isset($options['X-LoginRadius-ApiSecret']) ? trim($options['X-LoginRadius-ApiSecret']) : ''; - $expiry_time = isset($options['X-Request-Expires']) ? trim($options['X-Request-Expires']) : ''; - $digest = isset($options['digest']) ? trim($options['digest']) : ''; - - $optionsArray = array('http' => - array( - 'method' => strtoupper($method), - 'timeout' => 50, - 'ignore_errors' => true, - 'header' => 'Content-Type: application/' . $content_type - ), - "ssl" => array( - "verify_peer" => $ssl_verify - ) - ); - if (!empty($data) || $data === true) { - if (($content_type == 'json') && (is_array($data) || is_object($data))) { - $data = json_encode($data); - } - $optionsArray['http']['header'] .= "\r\n" . 'Content-Length:' . (($data === true) ? '0' : strlen($data)); - $optionsArray['http']['header'] .= "\r\n" . 'Accept-Encoding: gzip'; - $optionsArray['http']['content'] = (($content_type == 'json') ? $data : Functions::queryBuild($data)); - } - if ($auth_access_token != '') { - $optionsArray['http']['header'] .= "\r\n" . 'Authorization: ' . $auth_access_token; - } - if ($sott_header_content != '') { - $optionsArray['http']['header'] .= "\r\n" . 'X-LoginRadius-Sott: ' . $sott_header_content; - } - if ($secret_header_content != '') { - $optionsArray['http']['header'] .= "\r\n" . 'X-LoginRadius-ApiSecret: ' . $secret_header_content; - } - if ($expiry_time != '') { - $optionsArray['http']['header'] .= "\r\n" . 'X-Request-Expires: ' . $expiry_time; - } - if ($digest != '') { - $optionsArray['http']['header'] .= "\r\n" . 'digest: ' . $digest; - } - - $context = stream_context_create($optionsArray); - $json_response = file_get_contents($request_url, false, $context); - if (!$json_response) { - throw new LoginRadiusException('file_get_contents error'); - } - return $json_response; - } -} diff --git a/src/LoginRadiusSDK/Clients/IHttpClient.php b/src/LoginRadiusSDK/Clients/IHttpClient.php deleted file mode 100755 index 63cfed6..0000000 --- a/src/LoginRadiusSDK/Clients/IHttpClient.php +++ /dev/null @@ -1,24 +0,0 @@ -apiClientHandler("", array('fields' => $fields), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API Returns an Email Verification token. - * - * @param $email - * - * @return - */ - public function getEmailVerificationToken($email, $fields = '*') { - return $this->apiClientHandler('/verify/token', array('fields' => $fields), array('method' => 'POST', 'post_data' => array('Email' => $email), 'content_type' => 'json')); - } - - /** - * This API Returns a forgot password token. - * - * @param $email - * - * @return - */ - public function getForgotPasswordToken($email, $fields = '*') { - return $this->apiClientHandler('/forgot/token', array('fields' => $fields), array('method' => 'POST', 'post_data' => array('Email' => $email), 'content_type' => 'json')); - } - - /** - * This API is used to Get Identities by Email Id. - * - * @param $email - * @return array - */ - public function getIdentitiesByEmail($email, $fields = '*') { - return $this->apiClientHandler('/identities', array('email' => $email, 'fields' => $fields)); - } - - /** - * This API is used to retrieve Access Token based on UID or user impersonation API. - * - * @param $uid = 'xxxxxxxxxx' //UID, the unified identifier for each user account. - * - * return Array of user profile - */ - public function getAccessTokenByUid($uid, $fields = '*') { - return $this->apiClientHandler("/access_token", array('uid' => $uid, 'fields' => $fields)); - } - - /** - * This API is used to get the password field of an account. - * - * @param $uid = 'xxxxxxxxxx' //UID, the unified identifier for each user account. - * - * return {passwordHash : passwordhash} - */ - public function getHashPassword($uid, $fields = '*') { - return $this->apiClientHandler("/" . $uid . "/password", array('fields' => $fields)); - } - - /** - * This API retrieves the profile data associated with the specific user using the passing in email address. - * - * @param $email = 'example@doamin.com'; - * - * return all user profile - */ - public function getProfileByEmail($email, $fields = '*') { - return $this->apiClientHandler('', array('email' => $email, 'fields' => $fields)); - } - - /** - * This API retrieves the profile data associated with the specific user using the passing in username. - * - * @param $username = 'example'; - * - * return all user profile - */ - public function getProfileByUsername($username, $fields = '*') { - return $this->apiClientHandler('', array('username' => $username, 'fields' => $fields)); - } - - /** - * This API retrieves the profile data associated with the specific user using the passing in phone number. - * - * @param $phone = 'example'; - * - * return all user profile - */ - public function getProfileByPhone($phone, $fields = '*') { - return $this->apiClientHandler('', array('phone' => $phone, 'fields' => $fields)); - } - - /** - * This API is used to retrieve all of the profile data from each of the linked social provider accounts associated with the account. For ex: A user has linked facebook and google account then this api will retrieve both profile data. - * - * @param $uid = 'xxxxxxxxxx' //UID, the unified identifier for each user account. - * - * return Array of user profile - */ - public function getProfileByUid($uid, $fields = '*') { - return $this->apiClientHandler("/" . $uid, array('fields' => $fields)); - } - - /** - * This API is used to set a password for an account. It does not require to know the previous(old) password. - * - * @param $uid = 'xxxxxxxxxx' //UID, the unified identifier for each user account. - * @param $password = 'xxxxxxxxxx'; - * - * return {PasswordHash : passwordhash} - */ - public function setPassword($uid, $password, $fields = '*') { - return $this->apiClientHandler("/" . $uid . "/password", array('fields' => $fields), array('method' => 'PUT', 'post_data' => array('password' => $password), 'content_type' => 'json')); - } - - /** - * This API is used to Modify/Update details of an existing user. - * - * @param $uid = 'xxxxxxxxxx' //UID, the unified identifier for each user account. - * @param $payload = '{ - "Prefix":"", - "FirstName":"", - "MiddleName":null, - "LastName":"", - "Suffix":null, - "FullName":"", - "NickName":null, - "ProfileName":null, - "BirthDate":"10-12-1985", - "Gender":"M", - "Website":null - }'; - * @return type Object - */ - public function update($uid, $payload, $is_null_support = 'false', $fields = '*') { - return $this->apiClientHandler('/' . $uid, array('nullsupport' => $is_null_support, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API is used to update security questions configuration using uid. - * - * @param $uid = 'xxxxxxxxxx' //UID, the unified identifier for each user account. - * @param $payload = - { - "securityquestionanswer": { - "MiddleName": "value1", - "PetName": "value1" - } - } - * @return type object - */ - public function updateSecurityQuestionByUid($uid, $payload, $fields = '*') { - return $this->apiClientHandler("/" . $uid, array('fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API is used to invalidate the account. - * - * @param $uid = 'xxxxxxxxxx' //UID, the unified identifier for each user account. - * @param $data = true(boolean type) if have you no body parameters - * - * @return array - */ - public function invalidateEmail($uid, $data, $fields = '*') { - return $this->apiClientHandler("/" . $uid . '/invalidateemail', array('fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * This API is used to remove email using uid. - * - * @param $uid = 'xxxxxxxxxx' //UID, the unified identifier for each user account. - * @param $email = 'xxxx@xxxxxx.com' - * @return type object - */ - public function removeEmailByUidAndEmail($uid, $email, $fields = '*') { - return $this->apiClientHandler('/' . $uid . '/email', array('fields' => $fields), array('method' => 'DELETE', 'post_data' => array('Email' => $email), 'content_type' => 'json')); - } - - /** - * Delete an account from your LoginRadius app. - * - * @param $uid = 'xxxxxxxxxx' //UID, the unified identifier for each user account. - * - * return {"IsDeleted": "true"} - */ - public function delete($uid, $fields = '*') { - return $this->apiClientHandler('/' . $uid, array('fields' => $fields), array('method' => 'DELETE', 'post_data' => true)); - } - - /** - * This API is used to update or insert email using uid. - * - * @param $uid - * @param $payload = - '{ - "Email" : [ - { - "Type" : "Primary", - "Value" : "xxx@xxxxxxxx.com" - } - ] - }'; - * @return type object - */ - public function updateOrInsertEmailByUid($uid, $payload, $fields = '*') { - return $this->apiClientHandler('/' . $uid . '/email', array('fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API is used to receive a backup code to login via the UID. - * - * @param $uid - * @return type object - */ - public function mfaGetBackupCodeByUid($uid, $fields = '*') { - return $this->apiClientHandler("/2fa/backupcode", array('uid' => $uid, 'fields' => $fields)); - } - - /** - * This API is used to get backup codes for login by the UID. - * - * @param $uid - * @return type object - */ - public function mfaResetBackupCodeByUid($uid, $fields = '*') { - return $this->apiClientHandler("/2fa/backupcode/reset", array('uid' => $uid, 'fields' => $fields)); - } - - /** - * MFA Reset Google Authenticator By UID - * - * @param $uid - * @param $googleauthenticator - * @return {"IsDeleted": "true"} - */ - public function mfaResetGoogleAuthenticatorByUid($uid, $googleauthenticator) { - return $this->apiClientHandler("/2fa/authenticator", array('uid' => $uid), array('method' => 'DELETE', 'post_data' => array('googleauthenticator' => $googleauthenticator), 'content_type' => 'json')); - } - - /** - * MFA Reset SMS Authenticator By UID - * - * @param $uid - * @param $otpauthenticator - * @return {"IsDeleted": "true"} - */ - public function mfaResetSMSAuthenticatorByUid($uid, $otpauthenticator) { - return $this->apiClientHandler("/2fa/authenticator", array('uid' => $uid), array('method' => 'DELETE', 'post_data' => array('otpauthenticator' => $otpauthenticator), 'content_type' => 'json')); - } - - /** - * This API is used to reset phone id verification by the UID. - * - * @param $uid - * @param $data = true(boolean type) if have you no body parameters - * @return type object - */ - public function resetPhoneIdVerification($uid, $data, $fields = '*') { - return $this->apiClientHandler('/' . $uid . '/invalidatephone', array('fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * This API allows you to generate SOTT with a given expiration time. - * - * @param $time_difference - * @return type object - */ - public function generateSOTT($time_difference = '10', $fields = '*') { - return $this->apiClientHandler("/sott", array('timedifference' => $time_difference, 'fields' => $fields)); - } - - /** - * Handle account APIs - * - * @param type $path - * @param type $query_array - * @param type $options - * @return type - */ - private function apiClientHandler($path, $query_array = array(), $options = array()) { - return Functions::apiClient("/identity/v2/manage/account" . $path, $query_array, array_merge(array('authentication' => 'secret'), $options)); - } - -} diff --git a/src/LoginRadiusSDK/CustomerRegistration/Account/CustomObjectAPI.php b/src/LoginRadiusSDK/CustomerRegistration/Account/CustomObjectAPI.php deleted file mode 100644 index d989140..0000000 --- a/src/LoginRadiusSDK/CustomerRegistration/Account/CustomObjectAPI.php +++ /dev/null @@ -1,115 +0,0 @@ -apiClientHandler($uid . '/customObject/', array('ObjectName' => $object_name, 'fields' => $fields), array('method' => 'POST', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * This API is used to retrieve the Custom Object for the specified account based on the account ID(UID). - * - * @param $uid='xxxxxx';//// UID, the identifier for each user account - * @param $object_name= 'xxxxxxxxxxxx';//LoginRadius Custom Object name - * @return type - */ - public function getObjectByAccountid($uid, $object_name, $fields = '*') - { - return $this->apiClientHandler($uid . '/customObject/', array('ObjectName' => $object_name, 'fields' => $fields)); - } - - /** - * This API is used to update the Custom Object for the specified account based on the record ID($object_record_id). - * - * @param $uid='xxxxxx';//// UID, the identifier for each user account - * @param $object_name= 'xxxxxxxxxxxx';//LoginRadius Custom Object name - * @param $object_record_id='xxxxxxxxx';//Unique identifier of the user's record in Custom Object - * @param $update_type='xxxxxxxxx'; - * @param $data='{ - * "field1": "Store my field1 value", - * "field2": "Store my field2 value" - * }'; - * @return type - */ - public function updateObjectByRecordID($uid, $object_name, $object_record_id, $update_type, $data, $fields = '*') - { - return $this->apiClientHandler($uid . '/customObject/' . $object_record_id, array('ObjectName' => $object_name, 'updatetype'=> $update_type, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * This API is used to retrieve the Custom Object for the specified account based on the record ID($object_record_id). - * - * @param $uid='xxxxxx';//// UID, the identifier for each user account - * @param $object_name= 'xxxxxxxxxxxx';//LoginRadius Custom Object name - * @param $object_record_id='xxxxxxxxx';//Unique identifier of the user's record in Custom Object - * @return type - */ - public function getObjectByRecordID($uid, $object_name, $object_record_id, $fields = '*') - { - return $this->apiClientHandler($uid . '/customObject/' . $object_record_id, array('ObjectName' => $object_name, 'fields' => $fields)); - } - - /** - * This API is used to remove the specified Custom Object based on the account ID(UID). - * - * @param $uid='xxxxxx';//// UID, the identifier for each user account - * @param $object_name= 'xxxxxxxxxxxx';//LoginRadius Custom Object name - * @param $object_record_id='xxxxxxxxx';//Unique identifier of the user's record in Custom Object - * @return type - */ - public function delete($uid, $object_name, $object_record_id, $fields = '*') - { - return $this->apiClientHandler($uid . '/customObject/' . $object_record_id, array('ObjectName' => $object_name, 'fields' => $fields), array('method' => 'DELETE', 'post_data' => true)); - } - - /** - * Custom Object API handler - * - * @param type $path - * @param type $query_array - * @param type $options - * @return type - */ - private function apiClientHandler($path, $query_array = array(), $options = array()) - { - return Functions::apiClient("/identity/v2/manage/account/" . $path, $query_array, array_merge(array('authentication' => 'secret'), $options)); - } -} diff --git a/src/LoginRadiusSDK/CustomerRegistration/Account/CustomRegistrationDataAPI.php b/src/LoginRadiusSDK/CustomerRegistration/Account/CustomRegistrationDataAPI.php deleted file mode 100644 index 629bb01..0000000 --- a/src/LoginRadiusSDK/CustomerRegistration/Account/CustomRegistrationDataAPI.php +++ /dev/null @@ -1,107 +0,0 @@ -apiClientHandler("registrationdata", array('fields' => $fields), array('method' => 'POST', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * This API is used to retrieve dropdown data. - * - * @param $type - * @param string $parentid - * @param string $skip - * @param string $limit - * @return type json object - */ - public function getRegistrationData($type, $parent_id = '', $skip = '', $limit = '', $fields = '*') { - return $this->apiClientHandler("registrationdata/" . $type, array('parentid' => $parent_id, 'skip' => $skip, 'limit' => $limit, 'fields' => $fields)); - } - - /** - * This API allows you to update member of dropDown. - * @param $recordid - * { - * "IsActive": true, - * "Type": "", - * "Key": "", - * "Value": "", - * "ParentId": "", - * "Code": "" - * } - * - * return type - */ - public function updateRegistrationData($recordid, $data, $fields = '*') { - return $this->apiClientHandler("registrationdata/" . $recordid, array('fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * This API allows you to delete a member from dropDownList. - * @param $record_id - * - * return {"IsDeleted": "true"} - */ - public function deleteRegistrationData($record_id, $fields = '*') { - return $this->apiClientHandler('registrationdata/' . $record_id, array('fields' => $fields), array('method' => 'DELETE', 'post_data' => true)); - } - - /** - * handle account APIs - * - * @param type $path - * @param type $query_array - * @param type $options - * @return type - */ - private function apiClientHandler($path, $query_array = array(), $options = array()) { - return Functions::apiClient("/identity/v2/manage/" . $path, $query_array, array_merge(array('authentication' => 'secret'), $options)); - } - -} diff --git a/src/LoginRadiusSDK/CustomerRegistration/Account/RoleAPI.php b/src/LoginRadiusSDK/CustomerRegistration/Account/RoleAPI.php deleted file mode 100644 index 862f98f..0000000 --- a/src/LoginRadiusSDK/CustomerRegistration/Account/RoleAPI.php +++ /dev/null @@ -1,229 +0,0 @@ -apiClientHandler("role", array('fields' => $fields), array('method' => 'POST', 'post_data' => $roles, 'content_type' => 'json')); - } - - - /** - * Get Context with Roles and Permissions. - * - * @param $uid = xxxxxxxxxxxxxxxxxxxxx; - * - * @return type - */ - public function getContext($uid, $fields = '*') { - return $this->apiClientHandler("account/" . $uid . "/rolecontext", array('fields' => $fields)); - } - - /** - * Get Role of customer. - * - * @return type - */ - public function get($fields = '*') { - return $this->apiClientHandler("role", array('fields' => $fields)); - } - - /** - * Get Account Role by uid. - * - * @param $uid - * @return type - */ - public function getAccountRolesByUid($uid, $fields = '*') { - return $this->apiClientHandler('account/' . $uid . '/role', array('fields' => $fields)); - } - - /** - * This API is used to add permission to role.. - * - * $role = 'xxxxxx'; // role name - * $permissions = { - * "permissions": [ - * "permission_name1", - * "permission_name2" - * ] - * } - * - * return object - */ - public function addPermission($role, $permissions, $fields = '*') { - return $this->apiClientHandler("role/" . $role . "/permission", array('fields' => $fields), array('method' => 'PUT', 'post_data' => $permissions, 'content_type' => 'json')); - } - - /** - * Insert role to account. - * - * @param $uid - * @param $data = {"roles": ["role_name"]} - * @return type - */ - public function assignRolesByUid($uid, $data, $fields = '*') { - return $this->apiClientHandler('account/' . $uid . '/role', array('fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * Add/Update Roles Context. - * - * @param $uid = xxxxxxxxxxxxxxxxxxxxx; - * @param $rolesContext Json data - * - * { - * "RoleContext": [ - * { - * "Context": "Home", - * "Roles": ["admin","user"], - * "AdditionalPermissions": ["X","Y","Z"] - * }, - * { - * "Context": "Work", - * "Roles": ["admin"], - * "AdditionalPermissions": ["X","Y","Z"] - * } - * ] - * } - * @return type - */ - public function upsertContext($uid, $rolesContext, $fields = '*') { - return $this->apiClientHandler("account/" . $uid . "/rolecontext", array('fields' => $fields), array('method' => 'PUT', 'post_data' => $rolesContext, 'content_type' => 'json')); - } - - - /** - * Delete role. - * - * $role = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //Name of Role - * - * return {IsDeleted : true} - */ - public function delete($role, $fields = '*') { - return $this->apiClientHandler('role/' . $role, array('fields' => $fields), array('method' => 'DELETE', 'post_data' => true)); - } - - /** - * Unassign Roles by UID. - * - * @param $uid - * @param $data = {"roles": ["role_name"]} - * @return type - */ - public function deleteAccountRoles($uid, $data, $fields = '*') { - return $this->apiClientHandler('account/' . $uid . '/role', array('fields' => $fields), array('method' => 'DELETE', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * This API is used to remove permission to role. - * - * $role = 'xxxxxx'; // role name - * $permissions = { - * "permissions": [ - * "permission_name1" - * ] - * } - * - * return { "Name" : "Editor", "Permissions" :[{"Permission" : true},{"Permission" : true}]} - */ - public function removePermission($role, $permissions, $fields = '*') { - return $this->apiClientHandler('role/' . $role . '/permission', array('fields' => $fields), array('method' => 'DELETE', 'post_data' => $permissions, 'content_type' => 'json')); - } - - /** - * Delete Roles Context by Role Context Name - * - * @param $uid = xxxxxxxxxxxxxxxxxxxxx; - * @param $roleContextName String data - * @return type - */ - public function deleteContextbyContextName($uid, $roleContextName, $fields = '*') { - return $this->apiClientHandler("account/" . $uid . "/rolecontext/" . $roleContextName, array('fields' => $fields), array('method' => 'DELETE', 'post_data' => true)); - } - /** - * Delete Roles From Context - * @param type $uid - * @param type $roles - * { - * "Role" : ["admin"] - * } - * @return type - */ - public function deleteRoleFromContext($uid, $roleContextName, $roles, $fields = '*') { - return $this->apiClientHandler("account/" . $uid . "/rolecontext/" . $roleContextName. "/role", array('fields' => $fields), array('method' => 'DELETE', 'post_data' => $roles, 'content_type' => 'json')); - } - /** - * Delete Additional Permission by Role Context Name - * - * @param type $uid - * @param type $roleContextName - * @param type $additionalPermission Json data - * * { - * "AdditionalPermissions": ["X"] - * } - * @return type - */ - public function deleteAdditionalPermissionFromContext($uid, $roleContextName, $additionalPermission, $fields = '*') { - return $this->apiClientHandler("account/" . $uid . "/rolecontext/" . $roleContextName. "/additionalpermission", array('fields' => $fields), array('method' => 'DELETE', 'post_data' => $additionalPermission, 'content_type' => 'json')); - } - - /** - * handle Roles APIs - * - * @param type $path - * @param type $query_array - * @param type $options - * @return type - */ - private function apiClientHandler($path, $query_array = array(), $options = array()) { - return Functions::apiClient("/identity/v2/manage/" . $path, $query_array, array_merge(array('authentication' => 'secret'), $options)); - } - -} diff --git a/src/LoginRadiusSDK/CustomerRegistration/Authentication/AuthCustomObjectAPI.php b/src/LoginRadiusSDK/CustomerRegistration/Authentication/AuthCustomObjectAPI.php deleted file mode 100755 index b1838ff..0000000 --- a/src/LoginRadiusSDK/CustomerRegistration/Authentication/AuthCustomObjectAPI.php +++ /dev/null @@ -1,108 +0,0 @@ -apiClientHandler("CustomObject", array('ObjectName' => $objectname, 'fields' => $fields), array('method' => 'POST', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Update custom object data. - * - * @param $access_token - * @param $object_name - * @param $object_record_id - * @param $update_type - * @param $data - * @return type - */ - public function updateCustomObjectData($access_token, $object_name, $object_record_id, $update_type, $data, $fields = '*') - { - return $this->apiClientHandler("CustomObject/" . $object_record_id, array('ObjectName' => $object_name, 'updatetype' => $update_type, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Get custom object Sets. - * - * - * @param $access_token - * @param $object_name - * @return type - */ - public function getCustomObjectSetsByToken($access_token, $object_name, $fields = '*') - { - return $this->apiClientHandler("CustomObject", array('ObjectName' => $object_name, 'fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * Get custom object Set by id. - * - * @param $object_record_id - * @param $object_name - * @return type - */ - public function getCustomObjectSetByID($access_token, $object_name, $object_record_id, $fields = '*') - { - return $this->apiClientHandler("CustomObject/" . $object_record_id, array('ObjectName' => $object_name, 'fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * Delete custom object using ObjectRecordId. - * - * @param $object_record_id - * @return type - */ - public function deleteCustomObjectSet($access_token, $object_name, $object_record_id, $fields = '*') - { - return $this->apiClientHandler("CustomObject/" . $object_record_id, array('ObjectName' => $object_name, 'fields' => $fields), array('method' => 'DELETE', 'post_data' => true, 'access-token' => "Bearer ".$access_token)); - } - - /** - * handle CustomObject APIs - * - * @param type $path - * @param type $query_array - * @param type $options - * @return type - */ - private function apiClientHandler($path, $query_array = array(), $options = array()) - { - return Functions::apiClient("/identity/v2/auth/" . $path, $query_array, array_merge(array('authentication' => 'key'), $options)); - } -} \ No newline at end of file diff --git a/src/LoginRadiusSDK/CustomerRegistration/Authentication/UserAPI.php b/src/LoginRadiusSDK/CustomerRegistration/Authentication/UserAPI.php deleted file mode 100755 index 65d4d54..0000000 --- a/src/LoginRadiusSDK/CustomerRegistration/Authentication/UserAPI.php +++ /dev/null @@ -1,1118 +0,0 @@ -generateSOTT(); - if(!is_object($response)) { - $response = json_decode($response); - } - return $this->apiClientHandler("register", array('verificationurl' => $verification_url, 'emailtemplate' => $email_template, 'options' => $options, 'fields' => $fields), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json', 'X-LoginRadius-Sott' => $response->Sott)); - } - - /** - * This API retrieves a copy of the user data based on the Email. - * @param $payload = - '{ - "email":"xxxx@xxxx.com", - "password": "xxxxxxxx", - "securityanswer": "" - }'; - * @param string $verification_url email verification url (Optional) - * @param string $login_url url from where user is going login (Optional) - * @param string $email_template email template name (Optional) - * @param string $g_recaptcha_response It is only required for locked accounts when logging in (Optional) - * @return type userprofile object - */ - public function authLoginByEmail($payload, $verification_url = '', $login_url = '', $email_template = '', $g_recaptcha_response = '', $fields = '*') { - return $this->apiClientHandler("login", array('verificationUrl' => $verification_url, 'loginUrl' => $login_url, 'emailTemplate' => $email_template, 'g-recaptcha-response' => $g_recaptcha_response, 'fields' => $fields), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API retrieves a copy of the user data based on the username. - * - * @param $payload= - '{ - "username":"xxxxxx", - "password": "xxxxxxxx", - "securityanswer": "" - }'; - * @param string $verification_url email verification (Optional) - * @param string $login_url url from where user is going login (Optional) - * @param string $email_template email template name (Optional) - * @param string $g_recaptcha_response It is only required for locked accounts when logging in (Optional) - * @return type userprofile object - */ - public function authLoginByUsername($payload, $verification_url = '', $login_url = '', $email_template = '', $g_recaptcha_response = '', $fields = '*') { - return $this->apiClientHandler("login", array('verificationUrl' => $verification_url, 'loginUrl' => $login_url, 'emailTemplate' => $email_template, 'g-recaptcha-response' => $g_recaptcha_response, 'fields' => $fields), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * Add email to account. - * - * @param $access_token (Required) - * @param $email Email to be added to the user's account(Required) - * @param $type String to identify the type of email(Required) - * @param $verificationUrl Email verification url(Optional) - * @param $email_template Name of the email template(Optional) - * @return type - */ - public function addEmail($access_token, $email, $type, $verification_url = '', $email_template = '', $fields = '*') { - return $this->apiClientHandler("email", array('verificationurl' => $verification_url, 'emailtemplate' => $email_template, 'fields' => $fields), array('method' => 'POST', 'post_data' => array('email' => $email, 'type' => $type), 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Forgot password - * - * @param $email - * @param $reset_password_url - * @param $email_template (Optional) - * @return type - */ - public function forgotPassword($email, $reset_password_url, $email_template = '', $fields = '*') { - return $this->apiClientHandler("password", array('resetpasswordurl' => $reset_password_url, 'emailtemplate' => $email_template, 'fields' => $fields), array('method' => 'POST', 'post_data' => array('email' => $email), 'content_type' => 'json')); - } - - /** - * check email exist. - * - * @param $email - * @return type - */ - public function checkAvailablityOfEmail($email, $fields = '*') { - return $this->apiClientHandler("email", array('email' => $email, 'fields' => $fields)); - } - - /** - * check username.exist - * - * @param $username - * @return type - */ - public function checkUsername($username, $fields = '*') { - return $this->apiClientHandler("username", array('username' => $username, 'fields' => $fields)); - } - - /** - * Get profile by access token. - * - * @param $access_token - * @return userprofile object - */ - public function getProfile($access_token, $fields = '*') { - return $this->apiClientHandler("account", array('fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * This API is used update the privacy policy stored in the user's profile. - * - * @param $access_token - * @return userprofile object - */ - public function privacyPolicyAccept($access_token, $fields = '*') { - return $this->apiClientHandler("privacypolicy/accept", array('fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * This API will send welcome email. - * - * @param $access_token - * @param $welcome_email_template - * @return IsPosted object - */ - public function sendWelcomeEmail($access_token, $welcome_email_template = '', $fields = '*') { - return $this->apiClientHandler("account/sendwelcomeemail", array('welcomeemailtemplate' => $welcome_email_template, 'fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * Get Social Profile. - * - * @param $access_token - * @param $fields - * @return type - */ - public function getSocialProfile($access_token, $fields = '*') { - return $this->apiClientHandler("socialidentity", array('fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * Validates access token,if valid then returns a response with its expiry otherwise error - * - * @param $access_token * - * @return object type - */ - public function checkTokenValidity($access_token, $fields = '*') { - return $this->apiClientHandler("access_token/validate", array('fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * Verify email * - * @param $vtoken - * @param $url - * @param $welcome_email_template - * @return type - */ - public function verifyEmail($vtoken, $url = '', $welcome_email_template = '', $fields = '*') { - return $this->apiClientHandler("email", array('verificationtoken' => $vtoken, 'url' => $url, 'welcomeemailtemplate' => $welcome_email_template, 'fields' => $fields)); - } - - /** - * Delete Account. - * - * @param $deletetoken - * @return type - */ - public function deleteAccount($deletetoken, $fields = '*') { - return $this->apiClientHandler("account/delete", array('deletetoken' => $deletetoken, 'fields' => $fields)); - } - - /** - * Invalidates access token or expires an access token validity. - * - * @param $access_token * - * @return "IsPosted": "true" - */ - public function invalidateTokenByAccessToken($access_token, $fields = '*') { - return $this->apiClientHandler("access_token/invalidate", array('fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * This API is used to retrieve the list of questions using access token. - * - * @param string $access_token - * @param $fields - * @return type json object - */ - public function getSecurityQuestionsByAccessToken($access_token, $fields = '*') { - return $this->apiClientHandler("securityquestion/accesstoken", array('fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * This API is used to retrieve the list of questions using email. - * - * @param type $email - * @param type $fields - * @return type json object - */ - public function getSecurityQuestionsByEmail($email, $fields = '*') { - return $this->apiClientHandler("securityquestion/email", array('email' => $email, 'fields' => $fields)); - } - - /** - * This API is used to retrieve the list of questions using username. - * - * @param string $username - * @param $fields - * @return type json object - */ - public function getSecurityQuestionsByUserName($username, $fields = '*') { - return $this->apiClientHandler("securityquestion/username", array('username' => $username, 'fields' => $fields)); - } - - /** - * This API is used to retrieve the list of questions using phone id. - * - * @param string $phone - * @param $fields - * @return type json object - */ - public function getSecurityQuestionsByPhone($phone, $fields = '*') { - return $this->apiClientHandler("securityquestion/phone", array('phone' => $phone, 'fields' => $fields)); - } - - /** - * Verify email by OTP . - * - * @param $payload json data - * @param $url Mention URL to log the main URL(Domain name) in Database(Optional) - * @param $welcome_email_template Email template for welcome email(Optional) - * @return type - */ - public function verifyEmailByOtp($payload, $url = '', $welcome_email_template = '', $fields = '*') { - return $this->apiClientHandler("email", array('url' => $url, 'welcomeemailtemplate' => $welcome_email_template, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json')); - } - - /* Change Account Password. - * - * @param $access_token - * @param $old_password - * @param $new_password - * @return type - */ - - public function changeAccountPassword($access_token, $old_password, $new_password, $fields = '*') { - $data = array('oldpassword' => $old_password, 'newpassword' => $new_password); - return $this->apiClientHandler("password/change", array('fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Link account. - * - * @param $access_token - * @param $candidate_token - * @return type - */ - public function accountLink($access_token, $candidate_token, $fields = '*') { - $data = array('candidatetoken' => $candidate_token); - return $this->apiClientHandler("socialidentity", array('fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * This api used to resend email verification link. - * - * @param $email - * @param string $verification_url - * @param string $email_template - * @return {"isPosted": "true"} - */ - public function resendEmailVerification($email, $verification_url = '', $email_template = '', $fields = '*') { - return $this->apiClientHandler("register", array('verificationUrl' => $verification_url, 'emailTemplate' => $email_template, 'fields' => $fields), array('method' => 'PUT', 'post_data' => array('email' => $email), 'content_type' => 'json')); - } - - /** - * Reset Password by reset token. - * - * @param $reset_token - * @param $password - * @param string $welcome_email_template (Optional) - * @param string $reset_password_email_template (Optional) - * @return type - */ - public function resetPassword($reset_token, $password, $welcome_email_template = '', $reset_password_email_template = '', $fields = '*') { - return $this->apiClientHandler("password/reset", array('fields' => $fields), array('method' => 'PUT', 'post_data' => array('resettoken' => $reset_token, 'password' => $password, 'welcomeEmailTemplate' => $welcome_email_template, 'resetpasswordemailtemplate' => $reset_password_email_template), 'content_type' => 'json')); - } - - /** - * Reset Password by OTP. - * - * @param $password - * @param $otp - * @param $email - * @param $welcome_email_template (Optional) - * @param $reset_password_email_template (Optional) - * @return type - */ - public function resetPasswordByOtp($password, $otp, $email, $welcome_email_template = '', $reset_password_email_template = '', $fields = '*') { - return $this->apiClientHandler("password/reset", array('fields' => $fields), array('method' => 'PUT', 'post_data' => array('password' => $password, 'otp' => $otp, 'email' => $email, 'welcomeemailtemplate' => $welcome_email_template, 'resetpasswordemailtemplate' => $reset_password_email_template), 'content_type' => 'json')); - } - - /** - * This API is used to reset password for the specified account By email. - * - * @param $payload = - '{ - "securityanswer": { - "cb7*******3e40ef8a****01fb****20": "Answer" - }, - "email": "", - "password": "xxxxxxxxxx", - "resetpasswordemailtemplate": "" - }'; - * @return {"IsPosted" : "true"} - */ - - public function authResetPasswordBySecurityAnswerAndEmail($payload, $fields = '*') { - return $this->apiClientHandler("password/securityanswer", array('fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API is used to reset password for the specified account By phone. - * - * @param $payload = - '{ - "securityanswer": { - "cb7*******3e40ef8a****01fb****20": "Answer" - }, - "phone": "", - "password": "xxxxxxxxxx", - "resetpasswordemailtemplate": "" - }'; - * @return {"IsPosted" : "true"} - */ - - public function authResetPasswordBySecurityAnswerAndPhone($payload, $fields = '*') { - return $this->apiClientHandler("password/securityanswer", array('fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API is used to reset password for the specified account By UserName. - * - * @param $payload = - '{ - "securityanswer": { - "cb7*******3e40ef8a****01fb****20": "Answer" - }, - "userName": "", - "password": "xxxxxxxxxx", - "resetpasswordemailtemplate": "" - }'; - * @return {"IsPosted" : "true"} - */ - - public function authResetPasswordBySecurityAnswerAndUserName($payload, $fields = '*') { - return $this->apiClientHandler("password/securityanswer", array('fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * change Username . - * - * @param $access_token - * @param $username - * @return type - */ - public function changeUsername($access_token, $username, $fields = '*') { - return $this->apiClientHandler("username", array('fields' => $fields), array('method' => 'PUT', 'post_data' => array('username' => $username), 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Update user profile by access token. - * @param $access_token - * @param $payload = '{ - "Prefix":"", - "FirstName":"Joe", - "MiddleName":null, - "LastName":"Smith", - "BirthDate":"10-12-1985", - "Gender":"M", - "Website":null - }'; - * @param string $verification_url (Optional) - * @param string $email_template (Optional) - * @param string $sms_template (Optional) - * @return type object - */ - - public function updateProfile($access_token, $payload, $verification_url = '', $email_template = '', $sms_template = '', $fields = '*') { - return $this->apiClientHandler("account", array('verificationUrl' => $verification_url, 'emailTemplate' => $email_template, 'smstemplate ' => $sms_template ,'fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * This API is used to update security questions by the access token. - * @param string $access_token - * @param $payload = - * '{ - * "securityquestionanswer": { - * "db7****8a73e4******bd9****8c20": "Answer" - * } - * }'; - * @return type json object - */ - public function updateSecurityQuestionByAccessToken($access_token, $payload, $fields = '*') { - return $this->apiClientHandler("account", array('fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Delete account after email confirmation. - * - * @param $access_token - * @param string $deleteUrl - * @param string $email_template - * @return type - */ - public function deleteAccountByEmailConfirmation($access_token, $delete_url = '', $email_template = '', $fields = '*') { - return $this->apiClientHandler('account', array('deleteUrl' => $delete_url, 'emailTemplate' => $email_template, 'fields' => $fields), array('method' => 'DELETE', 'post_data' => true, 'access-token' => "Bearer ".$access_token)); - } - - /** - * Remove Email to account. - * - * @param $access_token - * @param $email string "xxx@xxxxxxx.com" - * @return type - - */ - public function removeEmail($access_token, $email, $fields = '*') { - $data = array('Email' => $email); - return $this->apiClientHandler("email", array('fields' => $fields), array('method' => 'DELETE', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Unlink account. - * - * @param $access_token - * @param $provider_id Unique ID of the linked account - * @param $provider Name of the provider - * @return type - */ - public function accountUnlink($access_token, $provider_id, $provider, $fields = '*') { - $data = array('Provider' => $provider, 'ProviderId' => $provider_id); - return $this->apiClientHandler("socialidentity", array('fields' => $fields), array('method' => 'DELETE', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /* Custom Registration Data */ - - /** - * This API allows you to validate code for a particular dropdown member. - * - * @param json $payload - * @return type json object - */ - public function validateRegistrationDataCode($payload, $fields = '*') { - return $this->apiClientHandler("registrationdata/validatecode", array('fields' => $fields), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API is used to retrieve dropdown data. - * - * @param $type - * @param string $parentid - * @param string $skip - * @param string $limit - * @return type json object - */ - public function authGetRegistrationDataServer($type, $parent_id = '', $skip = '', $limit = '', $fields = '*') { - return $this->apiClientHandler("registrationdata/" . $type, array('parentid' => $parent_id, 'skip' => $skip, 'limit' => $limit, 'fields' => $fields)); - } - - - /* Password Less Login API's */ - - /** - * This API is used to send a Passwordless Login verification link to the provided Email ID. - * - * @param $email - * @param string $passwordlesslogintemplate (Optional) - * @param string $verificationurl (Optional) - * @return type {"IsPosted": true} - */ - public function passwordLessLoginByEmail($email, $verificationurl = '', $passwordlesslogintemplate = '') { - return $this->apiClientHandler("login/passwordlesslogin/email", array('email' => $email, 'passwordlesslogintemplate' => $passwordlesslogintemplate, 'verificationurl' => $verificationurl)); - } - - /** - * This API is used to send a Passwordless Login Verification Link to a user by providing their UserName. - * - * @param $username - * @param string $passwordlesslogintemplate (Optional) - * @param string $verificationurl (Optional) - * @return type {"IsPosted": true} - */ - public function passwordLessLoginByUserName($username, $verificationurl = '', $passwordlesslogintemplate = '') { - return $this->apiClientHandler("login/passwordlesslogin/email", array('username' => $username, 'passwordlesslogintemplate' => $passwordlesslogintemplate, 'verificationurl' => $verificationurl)); - } - - /** - * This API is used to verify the Passwordless Login verification link. - * - * @param $verificationtoken - * @param string $welcomeemailtemplate (Optional) - * @return type object - */ - public function passwordLessLoginVerification($verificationtoken, $welcomeemailtemplate = '') { - return $this->apiClientHandler("login/passwordlesslogin/email/verify", array('verificationtoken' => $verificationtoken, 'welcomeemailtemplate' => $welcomeemailtemplate)); - } - - /** - * API can be used to send a One-time Passcode. - * - * @param $phone - * @param $sms_template (Optional) - * @return type object - */ - public function phoneSendOtp($phone, $sms_template = '') { - return $this->apiClientHandler("login/passwordlesslogin/otp", array('phone' => $phone, 'smstemplate' => $sms_template)); - } - - /** - * This API verifies an account by OTP and allows the user to login. - * - * @param $data - * @param $sms_template (Optional) - * @return type object - */ - public function phoneLoginByOtp($data, $sms_template = '') { - return $this->apiClientHandler("login/passwordlesslogin/otp/verify", array('smstemplate' => $sms_template), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json')); - } - - /* Smart Login API's */ - - /** - * This API sends a Smart Login link to the user's Email Id. - * - * @param type $clientguid - * @param type $email - * @param type $smartloginemailtemplate (Optional) - * @param type $welcomeemailtemplate (Optional) - * @param type $redirecturl (Optional) - * @return type {"IsPosted": true} - */ - public function smartLoginByEmail($clientguid, $email, $smartloginemailtemplate = "", $welcomeemailtemplate = "", $redirecturl = "") { - return $this->apiClientHandler("login/smartlogin", array('email' => $email, 'clientguid' => $clientguid, - 'smartloginemailtemplate' => $smartloginemailtemplate, - 'welcomeemailtemplate' => $welcomeemailtemplate, - 'redirecturl' => $redirecturl) - ); - } - - /** - * This API sends a Smart Login link to the user's Email Id. - * - * @param type $clientguid - * @param type $username - * @param type $smartloginemailtemplate (Optional) - * @param type $welcomeemailtemplate (Optional) - * @param type $redirecturl (Optional) - * @return type {"IsPosted": true} - */ - public function smartLoginByUserName($clientguid, $username, $smartloginemailtemplate = "", $welcomeemailtemplate = "", $redirecturl = "") { - return $this->apiClientHandler("login/smartlogin", array('username' => $username, - 'clientguid' => $clientguid, 'smartloginemailtemplate' => $smartloginemailtemplate, - 'welcomeemailtemplate' => $welcomeemailtemplate, 'redirecturl' => $redirecturl) - ); - } - - /** - * This API is used to check if the Smart Login link has been clicked or not. - * - * @param type $clientguid - * @return type object - */ - public function smartLoginPing($clientguid) { - return $this->apiClientHandler("login/smartlogin/ping", array('clientguid' => $clientguid)); - } - - /** - * This API verifies the provided token for Smart Login. - * - * @param type $verificationtoken - * @param type $welcomeemailtemplate (Optional) - * @return type {"IsPosted": true,"IsVerified": true} - */ - public function smartLoginVerifyToken($verificationtoken, $welcomeemailtemplate = "") { - return $this->apiClientHandler("email/smartlogin", array('verificationtoken' => $verificationtoken, - 'welcomeemailtemplate' => $welcomeemailtemplate) - ); - } - - /* One Touch Login API's */ - - /** - * This API is used to send a link to a specified email for a frictionless login/registration - * - * @param $payload = '{ - "clientguid": "", - "email": "", - "name": "", - "qq_captcha_ticket": "", - "qq_captcha_randstr": "", - "g-recaptcha-response ": "" - }'; - * @param type $redirecturl (Optional) - * @param type $onetouchloginemailtemplate (Optional) - * @param type $welcomeemailtemplate (Optional) - * @return {"isPosted" : true} - */ - - public function oneTouchLoginByEmail($payload, $redirecturl = '', $onetouchloginemailtemplate = '', $welcomeemailtemplate = '') { - return $this->apiClientHandler("onetouchlogin/email", array('redirecturl' => $redirecturl, 'onetouchloginemailtemplate' => $onetouchloginemailtemplate, 'welcomeemailtemplate' => $welcomeemailtemplate), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API is used to send one time password to a given phone number for a frictionless login/registration. - * - * @param $payload = '{ - "phone": "", - "name": "", - "qq_captcha_ticket": "", - "qq_captcha_randstr": "", - "g-recaptcha-response ": "" - }' - * @param string $smstemplate (Optional) - * @return type object - */ - public function oneTouchLoginByPhone($payload, $smstemplate = '') { - return $this->apiClientHandler("onetouchlogin/phone", array('smstemplate' => $smstemplate), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API is used to verify the otp for One Touch Login. - * - * @param $otp = "xxxxxx" - * @param $phone = "xxxxxxxxx" - * @param $sms_template (Optional) - * @return type object - */ - public function oneTouchOtpVerification($otp, $phone, $sms_template = '') { - return $this->apiClientHandler("onetouchlogin/phone/verify", array('otp' => $otp, 'smstemplate' => $sms_template), array('method' => 'PUT', 'post_data' => array('phone' => $phone), 'content_type' => 'json')); - } - - /* Phone Authentication API's */ - - /** - * This API retrieves a copy of the user data based on the Phone. - * - * @param $payload = '{ - "phone":"xxxxxxxxxx", - "password": "xxxxxxxx", - "securityanswer": "" - }'; - * @param string $login_url url from where user is going login - * @param string $sms_template sms template name - * @param string $g_recaptcha_response It is only required for locked accounts when logging in - * @return type userprofile object - */ - public function authLoginByPhone($payload, $login_url = '', $sms_template = '', $g_recaptcha_response = '', $fields = '*') { - return $this->apiClientHandler("login", array('loginUrl' => $login_url, 'smstemplate' => $sms_template, 'g-recaptcha-response' => $g_recaptcha_response, 'fields' => $fields), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * Phone Forgot password By OTP - * - * @param $phone = "xxxxxxxx" The Registered Phone Number - * @param $sms_template (Optional) - * @return type object - */ - public function forgotPasswordByOtp($phone, $sms_template = '') { - return $this->apiClientHandler("password/otp", array('smstemplate' => $sms_template), array('method' => 'POST', 'post_data' => array('phone' => $phone), 'content_type' => 'json')); - } - - /** - * Phone Resend OTP. - * - * @param $phone = "xxxxxxxx" The Registered Phone Number - * @param string $sms_template (Optional) - * @return type object - */ - public function resendOTP($phone, $sms_template = '') { - return $this->apiClientHandler("phone/otp", array('smsTemplate' => $sms_template), array('method' => 'POST', 'post_data' => array('phone' => $phone), 'content_type' => 'json')); - } - - /** - * Phone Resend OTP by token. - * - * @param $access_token - * @param $phone = "xxxxxxxx" The Registered Phone Number - * @param string $sms_template (Optional) - * @return type object - */ - public function resendOTPByToken($access_token, $phone, $sms_template = '') { - return $this->apiClientHandler("phone/otp", array('smsTemplate' => $sms_template), array('method' => 'POST', 'post_data' => array('phone' => $phone), 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * This API used to register a user using phone. - * - * @param $payload = '{ - "FirstName": "", - "PhoneId": "**************", - "Password": "*********", - "Email":[ - { - "Type": "Primary", - "Value": "xxx@xxxxxx.com" - } - ]}'; - * @param string $verification_url email verification - * @param string $sms_template email template name - * @return {"isPosted": "true"} - */ - public function registerByPhone($payload, $verification_url = '', $sms_template = '', $options = '') { - $accountObj = new AccountAPI(); - $response = $accountObj->generateSOTT(); - if(!is_object($response)) { - $response = json_decode($response); - } - return $this->apiClientHandler("register", array('verificationurl' => $verification_url, 'smstemplate' => $sms_template, 'options' => $options), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json', 'X-LoginRadius-Sott' => $response->Sott)); - } - - /** - * Check Phone number exist. - * - * @param $phone = "xxxxxxxxx" The Registered Phone Number - * @return type {"IsExist": true} - */ - public function checkAvailablityOfPhone($phone) { - return $this->apiClientHandler("phone", array('phone' => $phone)); - } - - /** - * Update phone number. - * - * @param $access_token - * @param $phone = "xxxxxxxx" New Phone number - * @param string $sms_template (Optional) - * @return type object - */ - public function updatePhone($access_token, $phone, $sms_template = '') { - return $this->apiClientHandler("phone", array('smsTemplate' => $sms_template), array('method' => 'PUT', 'post_data' => array('phone' => $phone), 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Phone reset password by OTP. - * - * @param $phone The Registered Phone Number - * @param $otp The Verification Code - * @param $password New password - * @param $sms_template SMS Template Name (Optional) - * @param $reset_password_email_template Reset Password Email Template (Optional) - * @return type {"IsPosted": true} - */ - public function phoneResetPasswordByOtp($phone, $otp, $password, $sms_template = '', $reset_password_email_template = '') { - return $this->apiClientHandler("password/otp", array(), array('method' => 'PUT', 'post_data' => array('phone' => $phone, 'otp' => $otp, 'password' => $password, 'smstemplate' => $sms_template, 'resetpasswordemailtemplate' => $reset_password_email_template), 'content_type' => 'json')); - } - - /** - * Phone Verify OTP. - * - * @param $otp = 'xxxxxxxxx' - * @param $phone = 'xxxxxxxxxxx' - * @param $sms_template (Optional) - * @return type object - */ - public function verifyOTP($otp, $phone, $sms_template = '', $fields = '*') { - return $this->apiClientHandler("phone/otp", array('otp' => $otp, 'smstemplate' => $sms_template, 'fields' => $fields), array('method' => 'PUT', 'post_data' => array('phone' => $phone), 'content_type' => 'json')); - } - - /** - * Verify OTP by token. - * - * @param $access_token = 'xxxxxxxxxxxx' - * @param $otp = 'xxxxxx' - * @param $sms_template (Optional) - * @return type {"IsPosted": true} - */ - public function verifyOTPByToken($access_token, $otp, $sms_template = '') { - return $this->apiClientHandler("phone/otp", array('otp' => $otp, 'smstemplate' => $sms_template), array('method' => 'PUT', 'post_data' => array('phone' => ''), 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * This API is used to delete the Phone ID. - * - * @param $access_token - * @return type {"IsDeleted": true} - */ - public function deletePhoneIdByAccessToken($access_token) { - return $this->apiClientHandler("phone", array(), array('method' => 'DELETE', 'post_data' => true, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - - /* Multi Factor Authenctiation API's */ - - /** - * This API used to provide multi factor login with email/password combination. - * @param $payload = - '{ - "email":"xxxx@xxxxxxx.com", - "password": "xxxxxx" - }'; - * @param string $login_url url from where user is going login (Optional) - * @param string $verification_url email verification (Optional) - * @param string $email_template email template name (Optional) - * @param string $sms_template_2fa sms template 2fa name (Optional) - * @return type SecondFactorAuthentication object - */ - - public function mfaEmailLogin($payload, $login_url = '', $verification_url = '', $email_template = '', $sms_template_2fa = '', $fields = '*') { - return $this->apiClientHandler("login/2fa", array('loginUrl' => $login_url, 'verificationUrl' => $verification_url, 'emailTemplate' => $email_template, 'smstemplate2fa' => $sms_template_2fa, 'fields' => $fields), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API used to provide multi factor login with username/password combination. - * - * @param $payload = - '{ - "username":"xxxxxxx", - "password": "xxxxxx" - }'; - * @param string $login_url url from where user is going login (Optional) - * @param string $verification_url email verification (Optional) - * @param string $email_template email template name (Optional) - * @param string $sms_template_2fa sms template 2fa name (Optional) - * @return type SecondFactorAuthentication object - */ - public function mfaUserNameLogin($payload, $login_url = '', $verification_url = '', $email_template = '', $sms_template_2fa = '', $fields = '*') { - return $this->apiClientHandler("login/2fa", array('loginUrl' => $login_url, 'verificationUrl' => $verification_url, 'emailTemplate' => $email_template, 'smstemplate2fa' => $sms_template_2fa, 'fields' => $fields), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API used to provide multi factor login with phone/password combination. - * - * @param $payload = - '{ - "phone":"xxxxxxx", - "password": "xxxxxx" - }'; - * @param string $login_url url from where user is going login (Optional) - * @param string $verification_url email verification (Optional) - * @param string $sms_template sms template name (Optional) - * @param string $sms_template_2fa sms template 2fa name (Optional) - * @return type SecondFactorAuthentication object - */ - public function mfaPhoneLogin($payload, $login_url = '', $verification_url = '', $sms_template = '', $sms_template_2fa = '', $fields = '*') { - return $this->apiClientHandler("login/2fa", array('loginUrl' => $login_url, 'verificationUrl' => $verification_url, 'smsTemplate' => $sms_template, 'smstemplate2fa' => $sms_template_2fa, 'fields' => $fields), array('method' => 'POST', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * MFA Validate Access Token - * This API is used to configure the multi-factor-authentication after login by using the access token - * - * @param $access_token - * @param string $sms_template_2fa (Optional) - * @return type object - */ - public function mfaValidateAccessToken($access_token, $sms_template_2fa = '', $fields = '*') { - return $this->apiClientHandler("account/2fa", array('smstemplate2fa' => $sms_template_2fa, 'fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * MFA Backup Code by Access Token - * - * @param type $access_token - * @return type backup codes object - */ - public function getBackupCodeForLoginbyAccessToken($access_token, $fields = '*') { - return $this->apiClientHandler("account/2fa/backupcode", array('fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * Reset Back Up code by access token - * - * @param type $access_token - * @return type - */ - public function resetBackupCodebyAccessToken($access_token, $fields = '*') { - return $this->apiClientHandler("account/2fa/backupcode/reset", array('fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * MFA Validate Backup code - * @param type $second_factor_auth_token Second factor authentication token - * @param type $backupcode = 'xxxxxxxx' Backup Code for login - * @return type - */ - public function getLoginbyBackupCode($second_factor_auth_token, $backupcode, $fields = '*') { - $data = array('backupcode' => $backupcode); - return $this->apiClientHandler("login/2fa/verification/backupcode", array('SecondFactorAuthenticationToken' => $second_factor_auth_token, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * This API is used to log in by completing the multi-factor-authentication by passing the one time passcode. - * @param $second_factor_auth_token - * @param $payload json data - * @param string $sms_template_2fa sms template 2fa name (optional) - * @return type - */ - - public function mfaValidateOtp($second_factor_auth_token, $payload, $sms_template_2fa = '', $fields = '*') { - return $this->apiClientHandler("login/2fa/verification/otp", array('SecondFactorAuthenticationToken' => $second_factor_auth_token, 'smstemplate2fa' => $sms_template_2fa, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json')); - } - - /** - * This API is used to log in by completing the multi-factor-authentication by passing the google authenticator code. - * @param $second_factor_auth_token - * @param $google_auth_code 'xxxxxxxxxx' The code generated by google authenticator app. - * @param $sms_template_2fa SMS Template Name (optional) - * @return type - */ - - public function mfaValidateGoogleAuthCode($second_factor_auth_token, $google_auth_code, $sms_template_2fa = '', $fields = '*') { - $data = array('googleauthenticatorcode' => $google_auth_code); - return $this->apiClientHandler("login/2fa/verification/googleauthenticatorcode", array('SecondFactorAuthenticationToken' => $second_factor_auth_token, 'smstemplate2fa' => $sms_template_2fa, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * This API is used to update the multi-factor-authentication phone number by sending the verification OTP to the provided phone number. - * - * @param $second_factor_auth_token - * @param $phoneno2fa = 'xxxxxxxxxx' - * @param string $sms_template_2fa (optional) - * @return type - */ - public function mfaUpdatePhoneNo($second_factor_auth_token, $phoneno2fa, $sms_template_2fa = '') { - $data = array('phoneno2fa' => $phoneno2fa); - return $this->apiClientHandler("login/2fa", array('SecondFactorAuthenticationToken' => $second_factor_auth_token, 'smstemplate2fa' => $sms_template_2fa), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json')); - } - - /** - * This API is used to update the multi-factor-authentication phone number by sending the access token to the provided phone number. - * - * @param $access_token - * @param $phoneno2fa = 'xxxxxxxxxx' - * @param string $sms_template_2fa (optional) - * @return type - */ - public function mfaUpdatePhoneNoByToken($access_token, $phoneno2fa, $sms_template_2fa = '') { - $data = array('phoneno2fa' => $phoneno2fa); - return $this->apiClientHandler("account/2fa", array('smstemplate2fa' => $sms_template_2fa), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Update MFA by Access Token - * This API is used to Enable Multi-factor authentication by access token on user login. - * - * @param $access_token - * @param $google_auth_code = 'xxxxxxxxxx' The code generated by google authenticator app after scanning QR code - * @param string $sms_template (optional) - * @return type - */ - - public function updateMfaByGoogleAuthCode($access_token, $google_auth_code, $sms_template = '', $fields = '*') { - $data = array('googleauthenticatorcode' => $google_auth_code); - return $this->apiClientHandler("account/2fa/verification/googleauthenticatorcode", array('smstemplate' => $sms_template, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Update MFA Setting - * This API is used to trigger the Multi-factor authentication settings after login for secure actions. - * - * @param $access_token - * @param $payload - * @param string $sms_template (optional) - * @return type - */ - - public function updateMfaByOtp($access_token, $payload, $sms_template = '', $fields = '*') { - return $this->apiClientHandler("account/2fa/verification/otp", array('smstemplate' => $sms_template, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * MFA Reset Google Authenticator by Token - * This API Removes/Reset Google Authenticator By Token. - * - * @param $access_token - * @param $googleauthenticator pass boolean(true) to remove Google Authenticator - * @return {"IsDeleted": "true"} - */ - public function resetGoogleAuthenticatorByToken($access_token, $googleauthenticator, $fields = '*') { - $data = array('googleauthenticator' => $googleauthenticator); - return $this->apiClientHandler("account/2fa/authenticator", array('fields' => $fields), array('method' => 'DELETE', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * MFA Reset SMS Authenticator by Token - * This API Removes/Reset SMS Authenticator By Token. - * - * @param $access_token - * @param $otpauthenticator pass boolean(true) to remove SMS Authenticator - * @return "IsDeleted": "true" - */ - public function resetSMSAuthenticatorByToken($access_token, $otpauthenticator, $fields = '*') { - $data = array('otpauthenticator' => $otpauthenticator); - return $this->apiClientHandler("account/2fa/authenticator", array('fields' => $fields), array('method' => 'DELETE', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /* Re-Authentication API */ - - /** - * Multi Factor Re-Authenticate - * This API can be used to trigger Multi-Factor Autentication workflow for the provided access_token. - * @param $access_token - * @param $sms_template_2fa (optional) - * @return type - */ - - public function mfaReAuthentiation($access_token, $sms_template_2fa = '', $fields = '*') { - return $this->apiClientHandler("account/reauth/2fa", array('smstemplate2fa' => $sms_template_2fa, 'fields' => $fields), array('access-token' => "Bearer ".$access_token)); - } - - /** - * Validate MFA by Google Authenticator Code - * This API is used to re-authenticate via Multi-factor-authentication by passing the google authenticator code. - * @param $access_token - * @param $google_authenticator = 'xxxxxxxxxx' - * @return type - */ - - public function validateMfaByGoogleAuthCode($access_token, $google_authenticator, $fields = '*') { - $data = array('googleauthenticatorcode' => $google_authenticator); - return $this->apiClientHandler("account/reauth/2fa/googleauthenticatorcode", array('fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Validate MFA by Backup Code - * This API is used to re-authenticate by set of backup codes via access token. - * @param $access_token - * @param $backupcode = 'xxxxxxxx' - * @return type - */ - - public function validateMfaByBackupCode($access_token, $backupcode, $fields = '*') { - $data = array('backupcode' => $backupcode); - return $this->apiClientHandler("account/reauth/2fa/backupcode", array('fields' => $fields), array('method' => 'PUT', 'post_data' => $data, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Validate MFA by OTP - * This API is used to re-authenticate via Multi-factor authentication by passing the One Time Password received via SMS. - * @param $access_token - * @param $payload json data - * @param string $sms_template_2fa (Optional) - * @return type - */ - - public function validateMfaByOtp($access_token, $payload, $sms_template_2fa = '', $fields = '*') { - return $this->apiClientHandler("account/reauth/2fa/otp", array('smstemplate' => $sms_template_2fa, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - /** - * This API can be used to verify event based multi factor authentication by Password. - * @param $access_token - * @param $payload json data - * @param string $sms_template_2fa (Optional) - * @return type - */ - - public function validateMfaByPassword($access_token, $payload, $sms_template_2fa = '', $fields = '*') { - return $this->apiClientHandler("account/reauth/password", array('smstemplate' => $sms_template_2fa, 'fields' => $fields), array('method' => 'PUT', 'post_data' => $payload, 'content_type' => 'json', 'access-token' => "Bearer ".$access_token)); - } - - /** - * Handle User APIs - * - * @param type $path - * @param type $query_array - * @param type $options - * @return type - */ - - private function apiClientHandler($path, $query_array = array(), $options = array()) { - return Functions::apiClient("/identity/v2/auth/" . $path, $query_array, array_merge(array('authentication' => 'key'), $options)); - } -} \ No newline at end of file diff --git a/src/LoginRadiusSDK/CustomerRegistration/Social/AdvanceSocialLoginAPI.php b/src/LoginRadiusSDK/CustomerRegistration/Social/AdvanceSocialLoginAPI.php deleted file mode 100755 index 65a4dc0..0000000 --- a/src/LoginRadiusSDK/CustomerRegistration/Social/AdvanceSocialLoginAPI.php +++ /dev/null @@ -1,209 +0,0 @@ -apiClientHandler('access_token/facebook', array("key" => Functions::getApiKey(), "fb_access_token" => $fb_access_token, 'fields' => $fields)); - } - - /** - * Get LoginRadius Access token by Passing Twitter token - * - * @param $tw_access_token - * @param $tw_token_secret - * @return type - */ - public function getAccessTokenByPassingTwitterToken($tw_access_token, $tw_token_secret, $fields = '*') - { - return $this->apiClientHandler('access_token/twitter', array("key" => Functions::getApiKey(), "tw_access_token" => $tw_access_token, 'tw_token_secret' => $tw_token_secret, 'fields' => $fields)); - } - - /** - * The User Profile API is used to get the latest updated social profile data from the user’s social account after authentication. - * The social profile will be retrieved via oAuth and OpenID protocols. - * The data is normalized into LoginRadius’ standard data format. - * This API should be called using the access token retrieved from the refresh access token API. - * - * @param $access_token - * @return type - */ - public function refreshUserProfile($access_token, $fields = '*') - { - return $this->apiClientHandler('userprofile/refresh', array('access_token' => $access_token, 'fields' => $fields)); - } - /** - * The Refresh Access Token API is used to refresh the provider access token after authentication. - * It will be valid for 60 days on LoginRadius' side but it also depends on the provider side. - * In order to use the access token in other APIs always refresh the token with this API. - * Supported Providers : Facebook,Yahoo,Google,Twitter, Linkedin Contact LoginRadius support team to enable this API. - * - * @param $access_token - * @return type - */ - public function refreshAccessToken($access_token, $fields = '*') - { - return $this->apiClientHandler('access_token/refresh', array('access_token' => $access_token, "secret" => Functions::getApiSecret(), 'fields' => $fields)); - } - - - /** - * Get all active seesions by Access Token - * - * @param $access_token - * @return type - */ - - public function getActiveSessionByToken($access_token, $fields = '*') - { - return $this->apiClientHandler('access_token/activesession', array('token' => $access_token, "key" => Functions::getApiKey(), "secret" => Functions::getApiSecret(), 'fields' => $fields)); - } - - - /** - * This API is used to retrieve a tracked post based on the passed in post ID value. This API requires setting permissions in your LoginRadius Dashboard. - * - * @param $post_id - * @return type - */ - public function trackableStatus($post_id, $fields = '*') - { - return $this->apiClientHandler('status/trackable', array('postid' => $post_id, "secret" => Functions::getApiSecret(), 'fields' => $fields)); - } - - /** - * The Message API is used to post messages to the user’s contacts. Supported Providers: LinkedIn, Twitter. - * - * @param $access_token - * @param $to - * @param $subject - * @param $message - * @return type - */ - public function postMessage($access_token, $to, $subject, $message, $fields = '*') - { - return $this->apiClientHandler('message/js', array('access_token' => $access_token, "to" => $to, 'subject' => $subject, 'message' => $message, 'fields' => $fields)); - } - /** - * The Status API is used to update the status on the user’s wall. It is commonly referred to as Permission based sharing or Push notifications. - * This API requires setting permissions in your LoginRadius Dashboard. - * - * @param $access_token - * @param $title - * @param $url - * @param $imageurl - * @param $status - * @param $caption - * @param $description - * @return type - */ - public function postStatus($access_token, $status, $title = '', $url = '', $imageurl = '', $caption = '', $description = '', $fields = '*') - { - return $this->apiClientHandler('status/js', array('access_token' => $access_token, "title" => $title, 'url' => $url, 'imageurl' => $imageurl, 'status' => $status, 'caption' => $caption, 'description' => $description, 'fields' => $fields)); - } - - /** - * The Shorten URL API is used to convert your URLs to the LoginRadius short URL - ish.re - * - * @param $url - * @return type - */ - public function shortenUrl($url, $fields = '*') - { - return Functions::apiClient('/sharing/v1/shorturl/', array('key' => Functions::getApiKey(), "url" => $url, 'fields' => $fields)); - } - - /** - * The Trackable status API works very similar to the Status API but it returns a Post id that you can use to track the stats(shares, likes, comments) for a specific share/post/status update. - * This API requires setting permissions in your LoginRadius Dashboard. - * - * @param $access_token - * @param $title - * @param $url - * @param $imageurl - * @param $status - * @param $caption - * @param $description - * @return type - */ - public function trackableStatusStats($access_token, $status, $title = '', $url = '', $imageurl = '', $caption = '', $description = '', $fields = '*') - { - return $this->apiClientHandler('status/trackable/js', array('access_token' => $access_token, "title" => $title, 'url' => $url, 'imageurl' => $imageurl, 'status' => $status, 'caption' => $caption, 'description' => $description, 'fields' => $fields)); - } - /** - * The Trackable Status API is used to update the status on the user’s wall and return an Post ID value. It is commonly referred to as Permission based sharing or Push notifications. - * - * @param $access_token - * @param $title - * @param $url - * @param $imageurl - * @param $status - * @param $caption - * @param $description - * @return type - */ - public function trackableStatusPosting($access_token, $status, $title = '', $url = '', $imageurl = '', $caption = '', $description = '', $fields = '*') - { - $data = array( - 'title' => $title, - 'url' => $url, - 'imageurl' => $imageurl, - 'status' => $status, - 'caption' => $caption, - 'description' => $description - ); - return $this->apiClientHandler("status/trackable", array('access_token' => $access_token, 'fields' => $fields), array('method' => 'POST', 'post_data' => $data, 'content_type' => 'json')); - - } - - - /** - * Social API handler - * - * @param type $path - * @param type $query_array - * @param type $options - * @return type - */ - private function apiClientHandler($path, $query_array = array(), $options = array()) - { - return Functions::apiClient("/api/v2/" . $path, $query_array, $options); - } - -} diff --git a/src/LoginRadiusSDK/CustomerRegistration/Social/SocialLoginAPI.php b/src/LoginRadiusSDK/CustomerRegistration/Social/SocialLoginAPI.php deleted file mode 100755 index e8db44b..0000000 --- a/src/LoginRadiusSDK/CustomerRegistration/Social/SocialLoginAPI.php +++ /dev/null @@ -1,373 +0,0 @@ -apiClientHandler('access_token', false, array("token" => $request_token, "secret" => Functions::getApiSecret(), 'fields' => $fields)); - } - - /** - * LoginRadius function - To fetch social profile data from the user's social account after authentication. The social profile will be retrieved via oAuth and OpenID protocols. The data is normalized into LoginRadius' standard data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object User profile data. - */ - public function getUserProfiledata($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler('userprofile', $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To fetch custom fileds of raas. The social profile will be retrieved via oAuth and OpenID protocols. The data is normalized into LoginRadius' standard data format. - * - * @param string $apiKey LoginRadius api key - * @param string $secret LoginRadius secret key - * @param boolean $raw If true, raw data is fetched - * - * @return object custom fields of raas. - */ - public function getUserCustomFields($apikey, $secret, $raw = false, $fields = '*') { - return $this->apiClientHandler('userprofile/fields', $raw, array('apikey' => $apikey, 'apisecret' => $secret, 'fields' => $fields)); - } - - /** - * LoginRadius function - To get the Albums data from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object User's albums data. - */ - public function getPhotoAlbums($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler('album', $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To fetch photo data from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param string $album_id ID of the album to fetch photos from - * @param boolean $raw If true, raw data is fetched - * - * @return object User's photo data. - */ - public function getPhotos($access_token, $album_id, $raw = false, $fields = '*') - { - return $this->apiClientHandler("photo", $raw, array("access_token" => $access_token, "albumid" => $album_id, 'fields' => $fields)); - } - - /** - * LoginRadius function - To fetch check-ins data from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object User's check-ins. - */ - public function getCheckins($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler('checkin', $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To fetch user's audio files data from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object User's audio files data. - */ - public function getAudio($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler("audio", $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To fetch user's contacts/friends/connections data from the user's social account. The data will normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param integer $next_cursor Offset to start fetching contacts from - * @param boolean $raw If true, raw data is fetched - * - * @return object User's contacts/friends/followers. - */ - public function getContacts($access_token, $next_cursor = '', $raw = false, $fields = '*') - { - return $this->apiClientHandler("contact", $raw, array("access_token" => $access_token, "nextcursor" => $next_cursor, 'fields' => $fields)); - } - - /** - * LoginRadius function - To get mention data from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object User's twitter mentions. - */ - public function getMentions($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler("mention", $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To fetch information of the people, user is following on Twitter. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object Information of the people, user is following. - */ - public function getFollowing($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler("following", $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To get the event data from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object User's event data. - */ - public function getEvents($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler("event", $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To get posted messages from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object User's posted messages. - * - */ - public function getPosts($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler("post", $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To get the followed company's data in the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object Companies followed by user. - */ - public function getFollowedCompanies($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler("company", $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To get group data from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object Group data. - */ - public function getGroups($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler("group", $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To get the status messages from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object Status messages. - */ - public function getStatus($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler("status", $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To get videos data from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object Videos data. - */ - public function getVideos($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler("video", $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To get likes data from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param boolean $raw If true, raw data is fetched - * - * @return object likes data. - */ - public function getLikes($access_token, $raw = false, $fields = '*') - { - return $this->apiClientHandler("like", $raw, array("access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - To get the page data from the user's social account. The data will be normalized into LoginRadius' data format. - * - * @param string $access_token LoginRadius access token - * @param string $page_name Page name - * @param boolean $raw If true, raw data is fetched - * - * @return object Page data. - */ - public function getPages($access_token, $page_name, $raw = false, $fields = '*') - { - return $this->apiClientHandler("page", $raw, array("access_token" => $access_token, "pagename" => $page_name, 'fields' => $fields)); - } - - /** - * LoginRadius function - To update the status on the user's wall. - * - * @param string $access_token LoginRadius access token - * @param string $status The status message text (Required). - * @param string $title Title for status message (Optional). - * @param string $url A web link of the status message (Optional). - * @param string $imageurl An image URL of the status message (Optional). - * @param string $caption Caption of the status message (Optional). - * @param string $description Description of the status message (Optional). - * - * @return boolean Returns true if successful, false otherwise. - * - */ - public function postStatus($access_token, $status, $title = '', $url = '', $imageurl = '', $caption = '', $description = '', $fields = '*') - { - $data = array( - 'access_token' => $access_token, - 'title' => $title, - 'url' => $url, - 'imageurl' => $imageurl, - 'status' => $status, - 'caption' => $caption, - 'description' => $description, - 'fields' => $fields - ); - return $this->apiClientHandler("status", false, $data, array('method' => 'POST', 'post_data' => true)); - } - - /** - * LoginRadius function - Post messages to the user's contacts. After using the Contact API, you can send messages to the retrieved contacts. - * - * @param string $access_token LoginRadius access token - * @param string $to Social ID of the receiver - * @param string $subject Subject of the message - * @param string $message Message - * - * @return bool True on success, false otherwise - */ - public function sendMessage($access_token, $to, $subject, $message, $fields = '*') - { - $data = array( - 'access_token' => $access_token, - 'to' => $to, - 'subject' => $subject, - 'message' => $message, - 'fields' => $fields - ); - return $this->apiClientHandler("message", false, $data, array('method' => 'POST', 'post_data' => true)); - } - - /** - * LoginRadius function - This API is used to validate access_token, check it is valid, expired or active. - * - * @param string $access_token LoginRadius access token - * - * @return object User profile data. - */ - public function tokenValidate($access_token, $fields = '*') - { - return $this->apiClientHandler('access_token/Validate', false, array("key" => Functions::getApiKey(),"secret" => Functions::getApiSecret(),"access_token" => $access_token, 'fields' => $fields)); - } - - /** - * LoginRadius function - This API is used to invalidate access token, means expiring token. After this API call passed access_token no longer be active and will not accepted by LoginRadius APIs. - * - * @param string $access_token LoginRadius access token - * - * @return object User profile data. - */ - public function tokenInvalidate($access_token, $fields = '*') - { - return $this->apiClientHandler('access_token/invalidate', false, array("key" => Functions::getApiKey(),"secret" => Functions::getApiSecret(),"access_token" => $access_token, 'fields' => $fields)); - } - - - /** - * LoginRadius function - This API is used to validate API key and Secret. - * - * @return object. - */ - public function validateKeyandSecret($fields = '*') - { - return $this->apiClientHandler('app/validate', false, array("apikey" => rawurlencode(Functions::getApiKey()),"apisecret" => rawurlencode(Functions::getApiSecret()), 'fields' => $fields)); - } - - /** - * Social API heandler - * - * @param type $path - * @param type $raw_data - * @param type $query_array - * @param type $options - * @return type - */ - private function apiClientHandler($path, $raw_data, $query_array = array(), $options = array()) - { - $raw = $raw_data ? '/raw' : ''; - return Functions::apiClient("/api/v2/" . $path . $raw, $query_array, $options); - } - -} diff --git a/src/LoginRadiusSDK/LoginRadiusException.php b/src/LoginRadiusSDK/LoginRadiusException.php deleted file mode 100755 index a9ba791..0000000 --- a/src/LoginRadiusSDK/LoginRadiusException.php +++ /dev/null @@ -1,44 +0,0 @@ -error_response = $error_response; - } - - /** - * Get error Response from API. - * - * @return array - */ - public function getErrorResponse() - { - return $this->error_response; - } -} \ No newline at end of file diff --git a/src/LoginRadiusSDK/Utility/Functions.php b/src/LoginRadiusSDK/Utility/Functions.php deleted file mode 100755 index 92aad3b..0000000 --- a/src/LoginRadiusSDK/Utility/Functions.php +++ /dev/null @@ -1,219 +0,0 @@ -request($path, $query_array, $merge_options); - return $output_format && (is_object(json_decode($response)) || is_array(json_decode($response))) ? json_decode($response) : $response; - } - - /** - * Manage LoginRadius Authentication - * - * @param type $array - * @return type - */ - public static function authentication($array = array(), $secure = 'key', $request_url = '') { - $result = array(); - if ($secure == 'key') { - $result = array('apikey' => Functions::getApiKey()); - } else if ($secure == 'secret') { - $result = array('X-LoginRadius-ApiSecret' => Functions::getApiSecret()); - } else if ($secure == 'hashsecret') { - $expiry_time = gmdate("Y-m-d H:i:s", strtotime('1 hour')); - $encoded_url = self::urlReplacement(urlencode(urldecode($request_url))); - - if (isset($array['method']) && (($array['method'] == 'POST') || ($array['method'] == 'PUT') || ($array['method'] == 'DELETE')) && $array['post_data'] !== true) { - $post_data = $array['post_data']; - if ((is_array($array['post_data']) || is_object($array['post_data']))) { - $post_data = json_encode($array['post_data']); - } - $string_to_hash = $expiry_time . ':' . strtolower($encoded_url) . ':' . $post_data; - } else { - $string_to_hash = $expiry_time . ':' . strtolower($encoded_url); - } - $sha_hash = hash_hmac('sha256', $string_to_hash, Functions::getApiSecret(), true); - $result = array('X-Request-Expires' => $expiry_time, 'digest' => "SHA-256=" . base64_encode($sha_hash)); - } - - return (is_array($array) && sizeof($array) > 0) ? array_merge($result, $array) : $result; - } - - - /** - * URL replacement - * - * @param type $decoded_url - * @return type - */ - public static function urlReplacement($decoded_url) { - $replacementArray = array('%2A' => '*','%28' => '(','%29' => ')'); - return str_replace(array_keys($replacementArray), array_values($replacementArray), $decoded_url); - } - - /** - * Build Query string - * - * @param type $data - * @return type - */ - public static function queryBuild($data = array()) { - if (is_array($data) && sizeof($data) > 0) { - return http_build_query($data); - } - return ''; - } -} diff --git a/storage/app/.gitignore b/storage/app/.gitignore new file mode 100644 index 0000000..8f4803c --- /dev/null +++ b/storage/app/.gitignore @@ -0,0 +1,3 @@ +* +!public/ +!.gitignore diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore new file mode 100644 index 0000000..b02b700 --- /dev/null +++ b/storage/framework/.gitignore @@ -0,0 +1,8 @@ +config.php +routes.php +schedule-* +compiled.php +services.json +events.scanned.php +routes.scanned.php +down diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/AccountTest.php b/tests/AccountTest.php deleted file mode 100644 index 5ffb300..0000000 --- a/tests/AccountTest.php +++ /dev/null @@ -1,142 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - } - - public function setUp() { - $data = '{ - "Email": [ - { - "Type": "Primary", - "Value": "phpunittester96@mailinator.com" - }, - { - "Type": "Secondary", - "Value": "phpunittester96secondary@mailinator.com" - } - ], - "UserName": "put96", - "PhoneId": "12016768877", - "Password": "password" - }'; - $result = self::$accountApi->create($data); - $this->testerUid = $result->Uid; - $this->testerEmail = $result->Email[0]->Value; - $this->testerEmailSecondary = $result->Email[1]->Value; - $this->testerUsername = $result->UserName; - $this->testerPhoneId = $result->PhoneId; - } - - public function tearDown() { - self::$accountApi->delete($this->testerUid); - } - - public function testAccountCreate() { - $this->assertNotNull($this->testerUid); - } - - public function testGetEmailVerificationToken() { - $result = self::$accountApi->getEmailVerificationToken($this->testerEmail); - $this->assertObjectHasAttribute("VerificationToken", $result); - } - - public function testGetForgotPasswordToken() { - $result = self::$accountApi->getForgotPasswordToken($this->testerEmail); - $this->assertObjectHasAttribute("ForgotToken", $result); - } - - public function testGetIdentitiesByEmail() { - $result = self::$accountApi->getIdentitiesByEmail($this->testerEmail); - $this->assertObjectHasAttribute("Data", $result); - } - - public function testAccountImpersonation() { - $result = self::$accountApi->getAccessTokenByUid($this->testerUid); - $this->assertObjectHasAttribute("access_token", $result); - } - - public function testAccountGetPassword() { - $result = self::$accountApi->getHashPassword($this->testerUid); - $this->assertObjectHasAttribute("PasswordHash", $result); - } - - public function testAccountProfileByEmail() { - $result = self::$accountApi->getProfileByEmail($this->testerEmail); - $this->assertObjectHasAttribute("Uid", $result); - } - - public function testAccountProfileByUsername() { - $result = self::$accountApi->getProfileByUsername($this->testerUsername); - $this->assertObjectHasAttribute("Uid", $result); - } - - public function testAccountProfileByPhoneId() { - $result = self::$accountApi->getProfileByPhone($this->testerPhoneId); - $this->assertObjectHasAttribute("Uid", $result); - } - - public function testAccountProfileByUid() { - $result = self::$accountApi->getProfileByUid($this->testerUid); - $this->assertObjectHasAttribute("Uid", $result); - } - - public function testAccountSetPassword() { - $result = self::$accountApi->setPassword($this->testerUid, "password1"); - $this->assertObjectHasAttribute("PasswordHash", $result); - } - - public function testAccountUpdate() { - $data = '{ - "Gender": "M" - }'; - - $result = self::$accountApi->update($this->testerUid, $data); - $this->assertObjectHasAttribute("Uid", $result); - } - - public function testAccountUpdateSecurityQuestionConfiguration() { - if (SECURITY_QUESTION_ID === "") { - $this->markTestSkipped("Security Question ID in config.php needs to be defined."); - } else { - $data = '{ - "securityquestionanswer": { - "' . SECURITY_QUESTION_ID . '": "Answer" - } - }'; - $result = self::$accountApi->updateSecurityQuestionByUid($this->testerUid, $data); - $this->assertObjectHasAttribute("Uid", $result); - } - } - - public function testAccountInvalidateVerificationEmail() { - $data = '{ - "EmailVerified": true - }'; - self::$accountApi->update($this->testerUid, $data); - $result = self::$accountApi->invalidateEmail($this->testerUid, true); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAccountEmailDelete() { - $result = self::$accountApi->removeEmailByUidAndEmail($this->testerUid, $this->testerEmailSecondary); - $this->assertObjectHasAttribute("Uid", $result); - } - - public function testAccountDelete() { - print_r("testAccountDelete passes if tests are being taken down properly."); - $this->assertTrue(true); - } -} diff --git a/tests/AuthenticationTest.php b/tests/AuthenticationTest.php deleted file mode 100644 index 9a85569..0000000 --- a/tests/AuthenticationTest.php +++ /dev/null @@ -1,383 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$userApi = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - } - - public function setUp() { - $data = '{ - "Email": [ - { - "Type": "Primary", - "Value": "phpunittester96@mailinator.com" - }, - { - "Type": "Secondary", - "Value": "phpunittester96secondary2@mailinator.com" - } - ], - "UserName": "put96", - "PhoneId": "12016768877", - "Password": "password", - "EmailVerified": true - }'; - $resultCreate = self::$accountApi->create($data); - $this->testerUid = $resultCreate->Uid; - $this->testerEmail = $resultCreate->Email[0]->Value; - $this->testerUsername = $resultCreate->UserName; - $this->testerPhoneId = $resultCreate->PhoneId; - - $loginData = '{ - "email": "phpunittester96@mailinator.com", - "password": "password" - }'; - $resultLogin = self::$userApi->authLoginByEmail($loginData); - $this->testerAccessToken = $resultLogin->access_token; - } - - public function tearDown() { - self::$accountApi->delete($this->testerUid); - } - - public function testAuthAddEmail() { - $result = self::$userApi->addEmail($this->testerAccessToken, "phpunittester96secondary@mailinator.com", "Secondary"); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAuthForgotPassword() { - $result = self::$userApi->forgotPassword($this->testerEmail, "www.example.com"); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAuthUserRegistrationByEmail() { - $registrationData = '{ - "Email": [ - { - "Type": "Primary", - "Value": "phpunittester95@mailinator.com" - } - ], - "Password": "password" - }'; - $result = self::$userApi->registerByEmail($registrationData); - $this->assertObjectHasAttribute("IsPosted", $result); - - $uid = self::$accountApi->getProfileByEmail("phpunittester95@mailinator.com")->Uid; - self::$accountApi->delete($uid); - } - - public function testAuthLoginByEmail() { - $this->assertNotNull($this->testerAccessToken); - } - - public function testAuthLoginByUsername() { - $data = '{ - "UserName": "' . $this->testerUsername . '", - "Password": "password" - }'; - $result = self::$userApi->authLoginByUsername($data); - $this->assertObjectHasAttribute("access_token", $result); - } - - public function testAuthCheckEmailAvailability() { - $result = self::$userApi->checkAvailablityOfEmail("phpunittester96@mailinator.com"); - $this->assertObjectHasAttribute("IsExist", $result); - } - - public function testAuthCheckUsernameAvailability() { - $result = self::$userApi->checkUsername("put96"); - $this->assertObjectHasAttribute("IsExist", $result); - } - - public function testAuthReadProfileByToken() { - $result = self::$userApi->getProfile($this->testerAccessToken); - $this->assertObjectHasAttribute("Uid", $result); - } - - public function testAuthPrivacyPolicyAccept() { - try { - $result = self::$userApi->privacyPolicyAccept($this->testerAccessToken); - $this->assertObjectHasAttribute("Uid", $result); - } catch (Exception $e) { - $this->assertEquals($e->getMessage(), "Privacy policy is not available"); - } - } - - public function testAuthSendWelcomeEmail() { - $result = self::$userApi->sendWelcomeEmail($this->testerAccessToken); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAuthSocialIdentity() { - $result = self::$userApi->getSocialProfile($this->testerAccessToken); - $this->assertObjectHasAttribute("Uid", $result); - } - - public function testAuthValidateAccessToken() { - $result = self::$userApi->checkTokenValidity($this->testerAccessToken); - $this->assertObjectHasAttribute("access_token", $result); - } - - public function testAuthVerifyEmail() { - $updateData = '{ - "EmailVerified": false - }'; - self::$accountApi->update($this->testerUid, $updateData); - $vtoken = self::$accountApi->getEmailVerificationToken($this->testerEmail)->VerificationToken; - $result = self::$userApi->verifyEmail($vtoken); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAuthVerifyEmailByOtp() { - $data = '{ - "otp": "99999", - "email": "' . $this->testerEmail . '" - }'; - try { - $result = self::$userApi->verifyEmailByOtp($data); - $this->assertObjectHasAttribute("IsPosted", $result); - } catch (Exception $e) { - $this->assertEquals($e->getMessage(), "Invalid email verification OTP"); - } - } - - public function testAuthDeleteAccount() { - try { - $result = self::$userApi->deleteAccount("99999999999"); - $this->assertObjectHasAttribute("IsPosted", $result); - } catch (Exception $e) { - $this->assertEquals($e->getMessage(), "The LoginRadius DeleteToken is invalid"); - } - } - - public function testAuthAccessTokenInvalidate() { - $result = self::$userApi->invalidateTokenByAccessToken($this->testerAccessToken); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAuthSecurityQuestionsByAccessToken() { - if (SECURITY_QUESTION_ID !== "") { - $sq_data = '{ - "securityquestionanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - } - }'; - self::$userApi->updateSecurityQuestionByAccessToken($this->testerAccessToken, $sq_data); - $result = self::$userApi->getSecurityQuestionsByAccessToken($this->testerAccessToken); - $this->assertObjectHasAttribute("QuestionId", $result[0]); - } else { - $this->markTestSkipped("Security Question ID in config.php needs to be defined."); - } - } - - public function testAuthSecurityQuestionsByEmail() { - if (SECURITY_QUESTION_ID !== "") { - $sq_data = '{ - "securityquestionanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - } - }'; - self::$userApi->updateSecurityQuestionByAccessToken($this->testerAccessToken, $sq_data); - $result = self::$userApi->getSecurityQuestionsByEmail($this->testerEmail); - $this->assertObjectHasAttribute("QuestionId", $result[0]); - } else { - $this->markTestSkipped("Security Question ID in config.php needs to be defined."); - } - } - - public function testAuthSecurityQuestionsByUsername() { - if (SECURITY_QUESTION_ID !== "") { - $sq_data = '{ - "securityquestionanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - } - }'; - self::$userApi->updateSecurityQuestionByAccessToken($this->testerAccessToken, $sq_data); - $result = self::$userApi->getSecurityQuestionsByUserName($this->testerUsername); - $this->assertObjectHasAttribute("QuestionId", $result[0]); - } else { - $this->markTestSkipped("Security Question ID in config.php needs to be defined."); - } - } - - public function testAuthSecurityQuestionsByPhone() { - if (SECURITY_QUESTION_ID !== "") { - $sq_data = '{ - "securityquestionanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - } - }'; - self::$userApi->updateSecurityQuestionByAccessToken($this->testerAccessToken, $sq_data); - $result = self::$userApi->getSecurityQuestionsByPhone($this->testerPhoneId); - $this->assertObjectHasAttribute("QuestionId", $result[0]); - } else { - $this->markTestSkipped("Security Question ID in config.php needs to be defined."); - } - } - - public function testAuthChangePassword() { - $result = self::$userApi->changeAccountPassword($this->testerAccessToken, "password", "passwords"); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAuthResendEmailVerification() { - $updateData = '{ - "EmailVerified": false - }'; - self::$accountApi->update($this->testerUid, $updateData); - $result = self::$userApi->resendEmailVerification($this->testerEmail); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAuthResetPasswordByResetToken() { - $resetToken = self::$accountApi->getForgotPasswordToken($this->testerEmail)->ForgotToken; - $result = self::$userApi->resetPassword($resetToken, "password1"); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAuthResetPasswordByOtp() { - try { - $result = self::$userApi->resetPasswordByOtp("password1", "99999", $this->testerEmail); - $this->assertObjectHasAttribute("IsPosted", $result); - } catch (Exception $e) { - $this->assertEquals("Verification OTP is invalid", $e->getMessage()); - } - } - - public function testAuthResetPasswordBySecurityAnswerAndEmail() { - if (SECURITY_QUESTION_ID === "") { - $this->markTestSkipped("Security Question ID in config.php needs to be defined."); - } else { - $sq_data = '{ - "securityquestionanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - } - }'; - self::$userApi->updateSecurityQuestionByAccessToken($this->testerAccessToken, $sq_data); - - $data = '{ - "securityanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - }, - "email": "' . $this->testerEmail . '", - "password": "password1" - }'; - $result = self::$userApi->authResetPasswordBySecurityAnswerAndEmail($data); - $this->assertObjectHasAttribute("IsPosted", $result); - } - } - - public function testAuthResetPasswordBySecurityAnswerAndPhone() { - if (SECURITY_QUESTION_ID === "") { - $this->markTestSkipped("Security Question ID in config.php needs to be defined."); - } else { - $sq_data = '{ - "securityquestionanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - } - }'; - self::$userApi->updateSecurityQuestionByAccessToken($this->testerAccessToken, $sq_data); - - $data = '{ - "securityanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - }, - "phone": "' . $this->testerPhoneId . '", - "password": "password1" - }'; - $result = self::$userApi->authResetPasswordBySecurityAnswerAndPhone($data); - $this->assertObjectHasAttribute("IsPosted", $result); - } - } - - public function testAuthResetPasswordBySecurityAnswerAndUserName() { - if (SECURITY_QUESTION_ID === "") { - $this->markTestSkipped("Security Question ID in config.php needs to be defined."); - } else { - $sq_data = '{ - "securityquestionanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - } - }'; - self::$userApi->updateSecurityQuestionByAccessToken($this->testerAccessToken, $sq_data); - - $data = '{ - "securityanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - }, - "username": "' . $this->testerUsername . '", - "password": "password1" - }'; - $result = self::$userApi->authResetPasswordBySecurityAnswerAndUserName($data); - $this->assertObjectHasAttribute("IsPosted", $result); - } - } - - public function testAuthSetOrChangeUserName() { - $result = self::$userApi->changeUsername($this->testerAccessToken, "putester96"); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAuthUpdateProfileByToken() { - $data = '{ - "Gender": "M" - }'; - $result = self::$userApi->updateProfile($this->testerAccessToken, $data); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testAuthUpdateSecurityQuestionByAccessToken() { - if (SECURITY_QUESTION_ID === "") { - $this->markTestSkipped("Security Question ID in config.php needs to be defined."); - } else { - $sq_data = '{ - "securityquestionanswer": { - "' . SECURITY_QUESTION_ID . '": "answer" - } - }'; - $result = self::$userApi->updateSecurityQuestionByAccessToken($this->testerAccessToken, $sq_data); - $this->assertObjectHasAttribute("IsPosted", $result); - } - } - - public function testAuthDeleteAccountWithEmailConfirmation() { - $result = self::$userApi->deleteAccountByEmailConfirmation($this->testerAccessToken); - $this->assertObjectHasAttribute("IsDeleteRequestAccepted", $result); - } - - public function testAuthRemoveEmail() { - $result = self::$userApi->removeEmail($this->testerAccessToken, $this->testerEmail); - $this->assertObjectHasAttribute("IsDeleted", $result); - } - - public function testAuthLinkUnlinkSocialIdentities() { - if (SOCIAL_LOGIN_REQUEST_TOKEN === "") { - $this->markTestSkipped("Social Login Request Token in config.php needs to be defined."); - } else { - $linkResult = self::$userApi->accountLink($this->testerAccessToken, SOCIAL_LOGIN_REQUEST_TOKEN); - $this->assertObjectHasAttribute("IsPosted", $linkResult); - - $testerProfile = self::$accountApi->getProfileByEmail($this->testerEmail); - $accountProvider = $testerProfile->Identities[0]->Provider; - $accountProviderId = $testerProfile->Identities[0]->ID; - - $unlinkResult = self::$userApi->accountUnlink($this->testerAccessToken, $accountProviderId, $accountProvider); - $this->assertObjectHasAttribute("IsDeleted", $unlinkResult); - } - } -} diff --git a/tests/ConfigurationTest.php b/tests/ConfigurationTest.php deleted file mode 100644 index 4756ef7..0000000 --- a/tests/ConfigurationTest.php +++ /dev/null @@ -1,30 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$configApi = new ConfigAPI(API_KEY, API_SECRET, array('output_format' => 'json')); - } - - public function testGetConfigurations() { - $result = self::$configApi->getConfigurationList(); - $this->assertObjectHasAttribute("AppName", $result); - } - - public function testGetServerTime() { - $result = self::$configApi->getServerTime(); - $this->assertObjectHasAttribute("ServerName", $result); - } - - public function testGenerateSott() { - $result = self::$accountApi->generateSOTT(); - $this->assertObjectHasAttribute("Sott", $result); - } -} diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php new file mode 100644 index 0000000..547152f --- /dev/null +++ b/tests/CreatesApplication.php @@ -0,0 +1,22 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/tests/CustomObjectManagementTest.php b/tests/CustomObjectManagementTest.php deleted file mode 100644 index 8a21600..0000000 --- a/tests/CustomObjectManagementTest.php +++ /dev/null @@ -1,107 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$authCustomObjApi = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$customObjApi = new CustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - - $createResult = self::$accountApi->create($data); - self::$testerUid = $createResult->Uid; - self::$testerAccessToken = self::$accountApi->getAccessTokenByUid(self::$testerUid)->access_token; - } - - public static function tearDownAfterClass() { - self::$accountApi->delete(self::$testerUid); - } - - public function testCustomObjectManagement() { - if (CUSTOM_OBJECT_NAME === "") { - $this->markTestSkipped("Custom Object Name in config.php needs to be defined."); - } else { - $createData1 = '{ - "testKey1": "testValue1" - }'; - $createData2 = '{ - "testKey2": "testValue2" - }'; - $updateData1 = '{ - "testKey12": "testValue12" - }'; - $updateData2 = '{ - "testKey22": "testValue22" - }'; - - // Create Custom Object by UID - $createByUidResult = self::$customObjApi->insert(self::$testerUid, CUSTOM_OBJECT_NAME, $createData1); - $this->assertObjectHasAttribute("Id", $createByUidResult); - $customObjId1 = $createByUidResult->Id; - - // Create Custom Object by Token - $createByTokenResult = self::$authCustomObjApi->createCustomObject(self::$testerAccessToken, CUSTOM_OBJECT_NAME, $createData2); - $this->assertObjectHasAttribute("Id", $createByTokenResult); - $customObjId2 = $createByTokenResult->Id; - - // Get Custom Object by ObjectRecordId and UID - $getByUidAndRecordId = self::$customObjApi->getObjectByRecordID(self::$testerUid, CUSTOM_OBJECT_NAME, $customObjId1); - $this->assertObjectHasAttribute("Id", $getByUidAndRecordId); - - // Get Custom Object by ObjectRecordId and Token - $getByTokenAndRecordId = self::$authCustomObjApi->getCustomObjectSetByID(self::$testerAccessToken, CUSTOM_OBJECT_NAME, $customObjId2); - $this->assertObjectHasAttribute("Id", $getByTokenAndRecordId); - - // Get Custom Object by Token - $getByTokenResult = self::$authCustomObjApi->getCustomObjectSetsByToken(self::$testerAccessToken, CUSTOM_OBJECT_NAME); - $this->assertObjectHasAttribute("data", $getByTokenResult); - - // Get Custom Object by UID - $getByUidResult = self::$customObjApi->getObjectByAccountid(self::$testerUid, CUSTOM_OBJECT_NAME); - $this->assertObjectHasAttribute("data", $getByUidResult); - - // Update Custom Object by ObjectRecordId and UID - $updateByUid = self::$customObjApi->updateObjectByRecordID(self::$testerUid, CUSTOM_OBJECT_NAME, $customObjId1, "replace", $updateData1); - $this->assertObjectHasAttribute("Id", $updateByUid); - - // Update Custom Object by ObjectRecordId and Access Token - $updateByAccessToken = self::$authCustomObjApi->updateCustomObjectData(self::$testerAccessToken, CUSTOM_OBJECT_NAME, $customObjId2, "replace", $updateData2); - $this->assertObjectHasAttribute("Id", $updateByAccessToken); - - // Delete Custom Object by ObjectRecordId and UID - $deleteByUidResult = self::$customObjApi->delete(self::$testerUid, CUSTOM_OBJECT_NAME, $customObjId1); - $this->assertObjectHasAttribute("IsDeleted", $deleteByUidResult); - - // Delete Custom Object by ObjectRecordId and Token - $deleteByTokenResult = self::$authCustomObjApi->deleteCustomObjectSet(self::$testerAccessToken, CUSTOM_OBJECT_NAME, $customObjId2); - $this->assertObjectHasAttribute("IsDeleted", $deleteByTokenResult); - } - } -} diff --git a/tests/CustomRegistrationDataTest.php b/tests/CustomRegistrationDataTest.php deleted file mode 100644 index 93c964b..0000000 --- a/tests/CustomRegistrationDataTest.php +++ /dev/null @@ -1,74 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$customRegistrationDataApi = new CustomRegistrationDataAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - } - - public function testCustomRegistrationData() { - if (CUSTOM_REGISTRATION_DATA_TYPE === "") { - $this->markTestSkipped("Custom Registration Data Type needs to be defined in config.php."); - } else { - // Add Registration Data - $registrationData = '{ - "Data": [ - { - "type": "' . CUSTOM_REGISTRATION_DATA_TYPE . '", - "key": "example1", - "value": "value1", - "parentid": "", - "code": "examplecode", - "isactive": true - } - ] - }'; - - $addDataResult = self::$customRegistrationDataApi->addRegistrationData($registrationData); - $this->assertObjectHasAttribute("IsPosted", $addDataResult); - - // Get Registration Data - $getDataResult = self::$customRegistrationDataApi->getRegistrationData(CUSTOM_REGISTRATION_DATA_TYPE, "", "0", "50"); - $this->assertNotEmpty($getDataResult); - - // Auth Get Registration Data - $authGetDataResult = self::$userApi->authGetRegistrationDataServer(CUSTOM_REGISTRATION_DATA_TYPE, "", "0", "50"); - $this->assertNotEmpty($authGetDataResult); - - $lastRecord = end($getDataResult); - $rdRecordId = $lastRecord->Id; - $rdCode = $lastRecord->Code; - - // Validate Code - $validateData = '{ - "recordid": "' . $rdRecordId . '", - "code": "' . $rdCode . '" - }'; - $validateResult = self::$userApi->validateRegistrationDataCode($validateData); - $this->assertObjectHasAttribute("IsValid", $validateResult); - - // Update Registration Data - $updateData = '{ - "IsActive": true, - "Type": "' . CUSTOM_REGISTRATION_DATA_TYPE . '", - "Key": "Key", - "Value": "A value", - "ParentId": "", - "Code": "' . $rdCode . '" - }'; - $updateResult = self::$customRegistrationDataApi->updateRegistrationData($rdRecordId, $updateData); - $this->assertObjectHasAttribute("IsPosted", $updateResult); - - // Delete Registration Data - $deleteResult = self::$customRegistrationDataApi->deleteRegistrationData($rdRecordId); - $this->assertObjectHasAttribute("IsDeleted", $deleteResult); - } - } -} diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..486dc27 --- /dev/null +++ b/tests/Feature/ExampleTest.php @@ -0,0 +1,23 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/MultiFactorAuthenticationTest.php b/tests/MultiFactorAuthenticationTest.php deleted file mode 100644 index 9d33ac8..0000000 --- a/tests/MultiFactorAuthenticationTest.php +++ /dev/null @@ -1,262 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$userApi = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - } - - public function setUp() { - $data = '{ - "Email": [ - { - "Type": "Primary", - "Value": "phpunittester96@mailinator.com" - }, - { - "Type": "Secondary", - "Value": "phpunittester96secondary2@mailinator.com" - } - ], - "UserName": "put96", - "PhoneId": "12016768877", - "Password": "password", - "EmailVerified": true, - "PhoneIdVerified": true - }'; - $resultCreate = self::$accountApi->create($data); - $this->testerUid = $resultCreate->Uid; - $this->testerEmail = $resultCreate->Email[0]->Value; - $this->testerUsername = $resultCreate->UserName; - $this->testerPhoneId = $resultCreate->PhoneId; - } - - public function tearDown() { - self::$accountApi->delete($this->testerUid); - } - - public function testMfaEmailLogin() { - $loginData = '{ - "email": "' . $this->testerEmail . '", - "password": "password" - }'; - - $result = self::$userApi->mfaEmailLogin($loginData); - $this->assertObjectHasAttribute("SecondFactorAuthentication", $result); - } - - public function testMfaUsernameLogin() { - $loginData = '{ - "username": "' . $this->testerUsername . '", - "password": "password" - }'; - - $result = self::$userApi->mfaUserNameLogin($loginData); - $this->assertObjectHasAttribute("SecondFactorAuthentication", $result); - } - - public function testMfaPhoneLogin() { - $loginData = '{ - "phone": "' . $this->testerPhoneId . '", - "password": "password" - }'; - - $result = self::$userApi->mfaPhoneLogin($loginData); - $this->assertObjectHasAttribute("SecondFactorAuthentication", $result); - } - - public function testMfaValidateAccessToken() { - $impersonationResult = self::$accountApi->getAccessTokenByUid($this->testerUid); - $access_token = $impersonationResult->access_token; - $result = self::$userApi->mfaValidateAccessToken($access_token); - $this->assertObjectHasAttribute("QRCode", $result); - } - - public function testMfaBackupCodeByAccessToken() { - $impersonationResult = self::$accountApi->getAccessTokenByUid($this->testerUid); - $access_token = $impersonationResult->access_token; - try { - $result = self::$userApi->getBackupCodeForLoginbyAccessToken($access_token); - $this->assertObjectHasAttribute("BackUpCodes", $result); - } catch (Exception $e) { - $this->assertEquals("Two factor authentication client is not configured", $e->getMessage()); - } - } - - public function testMfaResetBackupCodeByAccessToken() { - $impersonationResult = self::$accountApi->getAccessTokenByUid($this->testerUid); - $access_token = $impersonationResult->access_token; - try { - $result = self::$userApi->resetBackupCodebyAccessToken($access_token); - $this->assertObjectHasAttribute("BackUpCodes", $result); - } catch (Exception $e) { - $this->assertEquals("Two factor authentication client is not configured", $e->getMessage()); - } - } - - public function testMfaBackupCodeByUid() { - try { - $result = self::$accountApi->mfaGetBackupCodeByUid($this->testerUid); - $this->assertObjectHasAttribute("BackUpCodes", $result); - } catch (Exception $e) { - $this->assertEquals("Two factor authentication client is not configured", $e->getMessage()); - } - } - - public function testMfaResetBackupCodeByUid() { - try { - $result = self::$accountApi->mfaResetBackupCodeByUid($this->testerUid); - $this->assertObjectHasAttribute("BackUpCodes", $result); - } catch (Exception $e) { - $this->assertEquals("Two factor authentication client is not configured", $e->getMessage()); - } - } - - public function testMfaValidateBackupCode() { - $loginData = '{ - "email": "' . $this->testerEmail . '", - "password": "password" - }'; - - $loginResult = self::$userApi->mfaEmailLogin($loginData); - $secondFactorAuthToken = $loginResult->SecondFactorAuthentication->SecondFactorAuthenticationToken; - try { - $result = self::$userApi->getLoginbyBackupCode($secondFactorAuthToken, "9999999"); - $this->assertObjectHasAttribute("access_token", $result); - } catch (Exception $e) { - $this->assertEquals("Two factor authentication backup code is not configured", $e->getMessage()); - } - } - - public function testMfaValidateOtp() { - $loginData = '{ - "email": "' . $this->testerEmail . '", - "password": "password" - }'; - - $loginResult = self::$userApi->mfaEmailLogin($loginData); - $secondFactorAuthToken = $loginResult->SecondFactorAuthentication->SecondFactorAuthenticationToken; - try { - $otpData = '{ - "otp": "99999" - }'; - - $result = self::$userApi->mfaValidateOtp($secondFactorAuthToken, $otpData); - $this->assertObjectHasAttribute("access_token", $result); - } catch (Exception $e) { - $this->assertEquals("Invalid OTP Code", $e->getMessage()); - } - } - - public function testMfaValidateGoogleAuthCode() { - $loginData = '{ - "email": "' . $this->testerEmail . '", - "password": "password" - }'; - - $loginResult = self::$userApi->mfaEmailLogin($loginData); - $secondFactorAuthToken = $loginResult->SecondFactorAuthentication->SecondFactorAuthenticationToken; - try { - $result = self::$userApi->mfaValidateGoogleAuthCode($secondFactorAuthToken, "999999999"); - $this->assertObjectHasAttribute("access_token", $result); - } catch (Exception $e) { - $this->assertEquals("Google two factor authentication code is incorrect", $e->getMessage()); - } - } - - public function testMfaUpdatePhoneNumber() { - $loginData = '{ - "email": "' . $this->testerEmail . '", - "password": "password" - }'; - - $loginResult = self::$userApi->mfaEmailLogin($loginData); - $secondFactorAuthToken = $loginResult->SecondFactorAuthentication->SecondFactorAuthenticationToken; - $result = self::$userApi->mfaUpdatePhoneNo($secondFactorAuthToken, "12016768877"); - $this->assertObjectHasAttribute("AccountSid", $result); - } - - public function testMfaUpdatePhoneNumberByToken() { - $impersonationResult = self::$accountApi->getAccessTokenByUid($this->testerUid); - $access_token = $impersonationResult->access_token; - $result = self::$userApi->mfaUpdatePhoneNoByToken($access_token, "12016768877"); - $this->assertObjectHasAttribute("AccountSid", $result); - } - - public function testMfaResetGoogleAuthenticatorByToken() { - $impersonationResult = self::$accountApi->getAccessTokenByUid($this->testerUid); - $access_token = $impersonationResult->access_token; - try { - $result = self::$userApi->resetGoogleAuthenticatorByToken($access_token, true); - $this->assertObjectHasAttribute("IsDeleted", $result); - } catch (Exception $e) { - $this->assertEquals("Two factor authentication client is not configured", $e->getMessage()); - } - } - - public function testMfaResetSmsAuthenticatorByToken() { - $impersonationResult = self::$accountApi->getAccessTokenByUid($this->testerUid); - $access_token = $impersonationResult->access_token; - try { - $result = self::$userApi->resetSMSAuthenticatorByToken($access_token, true); - $this->assertObjectHasAttribute("IsDeleted", $result); - } catch (Exception $e) { - $this->assertEquals("Two factor authentication client is not configured", $e->getMessage()); - } - } - - public function testMfaResetGoogleAuthenticatorByUid() { - try { - $result = self::$accountApi->mfaResetGoogleAuthenticatorByUid($this->testerUid, true); - $this->assertObjectHasAttribute("IsDeleted", $result); - } catch (Exception $e) { - $this->assertEquals("Two factor authentication client is not configured", $e->getMessage()); - } - } - - public function testMfaResetSmsAuthenticatorByUid() { - try { - $result = self::$accountApi->mfaResetSMSAuthenticatorByUid($this->testerUid, true); - $this->assertObjectHasAttribute("IsDeleted", $result); - } catch (Exception $e) { - $this->assertEquals("Two factor authentication client is not configured", $e->getMessage()); - } - } - - public function testMfaUpdateByAccessToken() { - $impersonationResult = self::$accountApi->getAccessTokenByUid($this->testerUid); - $access_token = $impersonationResult->access_token; - try { - $result = self::$userApi->updateMfaByGoogleAuthCode($access_token, "999999"); - $this->assertObjectHasAttribute("Uid", $result); - } catch (Exception $e) { - $this->assertEquals("Two factor authentication is not enabled", $e->getMessage()); - } - } - - public function testMfaUpdateSetting() { - $otpData = '{ - "otp": "999999" - }'; - $impersonationResult = self::$accountApi->getAccessTokenByUid($this->testerUid); - $access_token = $impersonationResult->access_token; - try { - $result = self::$userApi->updateMfaByOtp($access_token, $otpData); - $this->assertObjectHasAttribute("Uid", $result); - } catch (Exception $e) { - $this->assertEquals("Invalid OTP Code", $e->getMessage()); - } - } -} diff --git a/tests/OneTouchLoginTest.php b/tests/OneTouchLoginTest.php deleted file mode 100644 index a0b7c4e..0000000 --- a/tests/OneTouchLoginTest.php +++ /dev/null @@ -1,92 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$userApi = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - - $createResult = self::$accountApi->create($data); - self::$testerUid = $createResult->Uid; - self::$testerEmail = $createResult->Email[0]->Value; - self::$testerPhone = $createResult->PhoneId; - } - - public static function tearDownAfterClass() { - self::$accountApi->delete(self::$testerUid); - } - - public function testOneTouchLoginByEmail() { - $data = '{ - "email": "' . self::$testerEmail . '", - "clientguid": "testguid' . rand() . '", - "g-recaptcha-response": "abcd" - }'; - - try { - $result = self::$userApi->oneTouchLoginByEmail($data); - $this->assertObjectHasAttribute("IsPosted", $result); - } catch (Exception $e) { - $this->assertEquals("CAPTCHA is invalid", $e->getMessage()); - } - } - - public function testOneTouchLoginByPhone() { - $data = '{ - "phone": "' . self::$testerPhone . '", - "g-recaptcha-response": "abcd" - }'; - - try { - $result = self::$userApi->oneTouchLoginByPhone($data); - $this->assertObjectHasAttribute("IsPosted", $result); - } catch (Exception $e) { - $this->assertEquals("CAPTCHA is invalid", $e->getMessage()); - } - } - - public function testOneTouchLoginVerifyByOtp() { - try { - $result = self::$userApi->oneTouchOtpVerification("99999", "16135550185"); - $this->assertObjectHasAttribute("Profile", $result); - } catch (Exception $e) { - $this->assertEquals("Invalid OTP Code", $e->getMessage()); - } - } - - public function testOneTouchLoginVerifyOtpByEmail() { - try { - $result = self::$userApi->smartLoginVerifyToken("abc"); - $this->assertObjectHasAttribute("IsVerified", $result); - } catch (Exception $e) { - $this->assertEquals("Verification token (vtoken) is invalid", $e->getMessage()); - } - } -} diff --git a/tests/PasswordlessLoginTest.php b/tests/PasswordlessLoginTest.php deleted file mode 100644 index fc6e24e..0000000 --- a/tests/PasswordlessLoginTest.php +++ /dev/null @@ -1,64 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$userApi = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - - $createResult = self::$accountApi->create($data); - self::$testerUid = $createResult->Uid; - self::$testerEmail = $createResult->Email[0]->Value; - self::$testerUsername = $createResult->UserName; - } - - public static function tearDownAfterClass() { - self::$accountApi->delete(self::$testerUid); - } - - public function testPasswordlessLoginByEmail() { - $result = self::$userApi->passwordLessLoginByEmail(self::$testerEmail); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testPasswordlessLoginByUsername() { - $result = self::$userApi->passwordLessLoginByUserName(self::$testerUsername); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testPasswordlessLoginVerification() { - try { - $result = self::$userApi->passwordLessLoginVerification("a"); - $this->assertObjectHasAttribute("Profile", $result); - } catch (Exception $e) { - $this->assertEquals("Verification token (vtoken) is invalid", $e->getMessage()); - } - } -} diff --git a/tests/PhoneAuthenticationTest.php b/tests/PhoneAuthenticationTest.php deleted file mode 100644 index 209851d..0000000 --- a/tests/PhoneAuthenticationTest.php +++ /dev/null @@ -1,172 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$userApi = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - } - - public function setUp() { - $data = '{ - "Email": [ - { - "Type": "Primary", - "Value": "phpunittester96@mailinator.com" - }, - { - "Type": "Secondary", - "Value": "phpunittester96secondary2@mailinator.com" - } - ], - "UserName": "put96", - "PhoneId": "12016768877", - "Password": "password", - "EmailVerified": true, - "PhoneIdVerified": true - }'; - $resultCreate = self::$accountApi->create($data); - $this->testerUid = $resultCreate->Uid; - $this->testerPhoneId = $resultCreate->PhoneId; - - $loginData = '{ - "phone": "' . $this->testerPhoneId . '", - "password": "password" - }'; - $resultLogin = self::$userApi->authLoginByPhone($loginData); - $this->testerAccessToken = $resultLogin->access_token; - } - - public function tearDown() { - self::$accountApi->delete($this->testerUid); - } - - public function testPhoneLogin() { - $this->assertNotNull($this->testerAccessToken); - } - - public function testPhoneForgotPasswordByOtp() { - $result = self::$userApi->forgotPasswordByOtp($this->testerPhoneId); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testPhoneResendVerificationOtp() { - $updateData = '{ - "PhoneIdVerified": false - }'; - self::$accountApi->update($this->testerUid, $updateData); - - $result = self::$userApi->resendOTP($this->testerPhoneId); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testPhoneResendVerificationOtpByToken() { - $updateData = '{ - "PhoneIdVerified": false - }'; - self::$accountApi->update($this->testerUid, $updateData); - - $result = self::$userApi->resendOTPByToken($this->testerAccessToken, $this->testerPhoneId); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testPhoneUserRegistrationBySms() { - $testPhoneId = "12368008106"; - $registerData = '{ - "Email": [ - { - "Type": "Primary", - "Value": "phpunittester90@mailinator.com" - } - ], - "PhoneId": "' . $testPhoneId . '", - "Password": "password", - "EmailVerified": true, - "PhoneIdVerified": true - }'; - - $result = self::$userApi->registerByPhone($registerData); - $this->assertObjectHasAttribute("IsPosted", $result); - - $profileData = self::$accountApi->getProfileByPhone($testPhoneId); - $profileUid = $profileData->Uid; - $deleteResult = self::$accountApi->delete($profileUid); - $this->assertObjectHasAttribute("IsDeleted", $deleteResult); - } - - public function testPhoneNumberAvailability() { - $result = self::$userApi->checkAvailablityOfPhone($this->testerPhoneId); - $this->assertObjectHasAttribute("IsExist", $result); - } - - public function testPhoneNumberUpdate() { - $testPhoneId = "12368008106"; - $result = self::$userApi->updatePhone($this->testerAccessToken, $testPhoneId); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testPhoneResetPasswordByOtp() { - try { - $result = self::$userApi->phoneResetPasswordByOtp($this->testerPhoneId, "99999", "password"); - $this->assertObjectHasAttribute("IsPosted", $result); - } catch (Exception $e) { - $this->assertEquals("Invalid OTP Code", $e->getMessage()); - } - } - - public function testPhoneVerificationByOtp() { - try { - $result = self::$userApi->verifyOTP("99999", $this->testerPhoneId); - $this->assertObjectHasAttribute("Profile", $result); - } catch (Exception $e) { - $this->assertEquals("This phone number has already been confirmed", $e->getMessage()); - } - } - - public function testPhoneVerificationOtpByToken() { - try { - $result = self::$userApi->verifyOTPByToken($this->testerAccessToken, "99999"); - $this->assertObjectHasAttribute("Profile", $result); - } catch (Exception $e) { - $this->assertEquals("Invalid OTP Code", $e->getMessage()); - } - } - - public function testResetPhoneIdVerification() { - $result = self::$accountApi->resetPhoneIdVerification($this->testerUid, true); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testRemovePhoneIdByAccessToken() { - $result = self::$userApi->deletePhoneIdByAccessToken($this->testerAccessToken); - $this->assertObjectHasAttribute("IsDeleted", $result); - } - - public function testPhoneSendOtp() { - $result = self::$userApi->phoneSendOtp($this->testerPhoneId); - $this->assertObjectHasAttribute("Data", $result); - } - - public function testPhoneLoginUsingOtp() { - $loginData = '{ - "phone": "' . $this->testerPhoneId . '", - "otp": "99999" - }'; - - try { - $result = self::$userApi->phoneLoginByOtp($loginData); - } catch (Exception $e) { - $this->assertEquals("Invalid OTP Code", $e->getMessage()); - } - } -} diff --git a/tests/RolesManagementTest.php b/tests/RolesManagementTest.php deleted file mode 100644 index 4141f93..0000000 --- a/tests/RolesManagementTest.php +++ /dev/null @@ -1,173 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$roleApi = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - - $createResult = self::$accountApi->create($data); - self::$testerUid = $createResult->Uid; - self::$testerAccessToken = self::$accountApi->getAccessTokenByUid(self::$testerUid)->access_token; - } - - public static function tearDownAfterClass() { - self::$accountApi->delete(self::$testerUid); - } - - public function testRolesManagement() { - // Create Roles - $roleData = '{ - "roles": [ - { - "name": "example_test_role1", - "permissions": { - "pname1": true, - "pname2": true - } - }, - { - "name": "example_test_role2", - "permissions": { - "pname3": true, - "pname4": true - } - } - ] - }'; - - $rolesCreateResult = self::$roleApi->create($roleData); - $this->assertObjectHasAttribute("data", $rolesCreateResult); - - // Get Roles List - $rolesGetResult = self::$roleApi->get(); - $this->assertObjectHasAttribute("data", $rolesGetResult); - - // Add Permissions to Role - $permissionData = '{ - "permissions": [ - "pname5", - "pname6" - ] - }'; - - $addPermissionResult = self::$roleApi->addPermission("example_test_role2", $permissionData); - $this->assertObjectHasAttribute("Name", $addPermissionResult); - - // Assign Role to User - $assignData = '{ - "roles": [ - "example_test_role1", - "example_test_role2" - ] - }'; - - $assignRoleResult = self::$roleApi->assignRolesByUid(self::$testerUid, $assignData); - $this->assertObjectHasAttribute("Roles", $assignRoleResult); - - // Get Roles by Uid - $getRolesByUidResult = self::$roleApi->getAccountRolesByUid(self::$testerUid); - $this->assertObjectHasAttribute("Roles", $getRolesByUidResult); - - // Upsert Context - $contextData = '{ - "rolecontext": [ - { - "context": "example_context", - "roles": [ - "example_test_role1", - "example_test_role2" - ], - "additionalpermissions": [ - "eap1", - "eap2" - ], - "expiration": "2020-10-01 8:30:00 AM" - } - ] - }'; - - $upsertContextResult = self::$roleApi->upsertContext(self::$testerUid, $contextData); - $this->assertObjectHasAttribute("Data", $upsertContextResult); - - // Get Context - $getContextResult = self::$roleApi->getContext(self::$testerUid); - $this->assertObjectHasAttribute("Data", $getContextResult); - - // Delete Additional Permissions from Context - $deleteAdditionalPermissionsData = '{ - "additionalpermissions": [ - "eap1", - "eap2" - ] - }'; - $deleteAPFCResult = self::$roleApi->deleteAdditionalPermissionFromContext(self::$testerUid, "example_context", $deleteAdditionalPermissionsData); - $this->assertObjectHasAttribute("IsDeleted", $deleteAPFCResult); - - // Delete Role from Context - $deleteRoleFromContextData = '{ - "roles": [ - "example_test_role2" - ] - }'; - - $deleteRoleFromContextResult = self::$roleApi->deleteRoleFromContext(self::$testerUid, "example_context", $deleteRoleFromContextData); - $this->assertObjectHasAttribute("IsDeleted", $deleteRoleFromContextResult); - - // Delete Context - $deleteContextResult = self::$roleApi->deleteContextbyContextName(self::$testerUid, "example_context"); - $this->assertObjectHasAttribute("IsDeleted", $deleteContextResult); - - // Unassign Roles - $unassignData = '{ - "roles": [ - "example_test_role2" - ] - }'; - - $unassignRolesResult = self::$roleApi->deleteAccountRoles(self::$testerUid, $unassignData); - $this->assertObjectHasAttribute("IsDeleted", $unassignRolesResult); - - // Delete Permissions from Role - $deletePermissionData = '{ - "permissions": [ - "pname2" - ] - }'; - - $deletePermissionsFromRoleResult = self::$roleApi->removePermission("example_test_role1", $deletePermissionData); - $this->assertObjectHasAttribute("Name", $deletePermissionsFromRoleResult); - - // Delete Role - $deleteRoleResult1 = self::$roleApi->delete("example_test_role1"); - $deleteRoleResult2 = self::$roleApi->delete("example_test_role2"); - $this->assertObjectHasAttribute("IsDeleted", $deleteRoleResult1); - $this->assertObjectHasAttribute("IsDeleted", $deleteRoleResult2); - } -} diff --git a/tests/SmartLoginTest.php b/tests/SmartLoginTest.php deleted file mode 100644 index c4122b3..0000000 --- a/tests/SmartLoginTest.php +++ /dev/null @@ -1,72 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$userApi = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - - $createResult = self::$accountApi->create($data); - self::$testerUid = $createResult->Uid; - self::$testerEmail = $createResult->Email[0]->Value; - self::$testerUsername = $createResult->UserName; - } - - public static function tearDownAfterClass() { - self::$accountApi->delete(self::$testerUid); - } - - public function testSmartLoginByEmailAndPing() { - $clientGuid = "testguid" . rand(); - $result = self::$userApi->smartLoginByEmail($clientGuid, self::$testerEmail); - $this->assertObjectHasAttribute("IsPosted", $result); - - try { - $pingResult = self::$userApi->smartLoginPing($clientGuid); - $this->assertObjectHasAttribute("access_token", $result); - } catch (Exception $e) { - $this->assertEquals("The smart login link has not been verified", $e->getMessage()); - } - } - - public function testSmartLoginByUsername() { - $result = self::$userApi->smartLoginByUserName("testguid" . rand(), self::$testerUsername); - $this->assertObjectHasAttribute("IsPosted", $result); - } - - public function testSmartLoginVerifyToken() { - try { - $result = self::$userApi->smartLoginVerifyToken("1234567890"); - $this->assertObjectHasAttribute("Profile", $result); - } catch (Exception $e) { - $this->assertEquals("Verification token (vtoken) is invalid", $e->getMessage()); - } - } -} diff --git a/tests/SocialTest.php b/tests/SocialTest.php deleted file mode 100644 index 9525d0c..0000000 --- a/tests/SocialTest.php +++ /dev/null @@ -1,285 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$socialApi = new SocialLoginAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - } - - public function testPostMessage() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$socialApi->sendMessage($accessTokenFromTwitter, "991413461560131585", "Test Message", "This is a test message."); - $this->assertObjectHasAttribute("isPosted", $result); - } - } - - public function testStatusPostingPost() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$socialApi->postStatus($accessTokenFromTwitter, "Test Post", "www.test.com", "www.test.com", "This is a test post. -" . rand(), "A post.", "A post."); - $this->assertObjectHasAttribute("isPosted", $result); - } - } - - public function testAccessTokenTranslate() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$socialApi->exchangeAccessToken($accessTokenFromTwitter); - $this->assertObjectHasAttribute("access_token", $result); - } - } - - public function testAccessTokenValidate() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$socialApi->tokenValidate($accessTokenFromTwitter); - $this->assertObjectHasAttribute("access_token", $result); - } - } - - public function testAccessTokenInvalidate() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$socialApi->tokenInvalidate($accessTokenFromTwitter); - $this->assertObjectHasAttribute("isPosted", $result); - } - } - - public function testGetAlbum() { - // Using Facebook - if (FACEBOOK_ACCESS_TOKEN === "") { - $this->markTestSkipped("Facebook Access Token in config.php needs to be defined."); - } else { - $fbAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingFacebookToken(FACEBOOK_ACCESS_TOKEN); - $accessTokenFromFacebook = $fbAccessTokenResult->access_token; - $result = self::$socialApi->getPhotoAlbums($accessTokenFromFacebook); - $this->assertNotNull($result); - } - } - - public function testGetAudio() { - // Using Vkontakte - if (VKONTAKTE_ACCESS_TOKEN === "") { - $this->markTestSkipped("Vkontakte Access Token in config.php needs to be defined."); - } else { - $this->markTestIncomplete(); - } - } - - public function testGetCheckIns() { - // Using Facebook - if (FACEBOOK_ACCESS_TOKEN === "") { - $this->markTestSkipped("Facebook Access Token in config.php needs to be defined."); - } else { - $fbAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingFacebookToken(FACEBOOK_ACCESS_TOKEN); - $accessTokenFromFacebook = $fbAccessTokenResult->access_token; - $result = self::$socialApi->getCheckins($accessTokenFromFacebook); - $this->assertNotNull($result); - } - } - - public function testGetCompanies() { - // Using Facebook - if (FACEBOOK_ACCESS_TOKEN === "") { - $this->markTestSkipped("Facebook Access Token in config.php needs to be defined."); - } else { - $fbAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingFacebookToken(FACEBOOK_ACCESS_TOKEN); - $accessTokenFromFacebook = $fbAccessTokenResult->access_token; - $result = self::$socialApi->getFollowedCompanies($accessTokenFromFacebook); - $this->assertNotNull($result); - } - } - - public function testGetContacts() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$socialApi->getContacts($accessTokenFromTwitter); - $this->assertNotNull($result); - } - } - - public function testGetEvents() { - // Using Facebook - if (FACEBOOK_ACCESS_TOKEN === "") { - $this->markTestSkipped("Facebook Access Token in config.php needs to be defined."); - } else { - $fbAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingFacebookToken(FACEBOOK_ACCESS_TOKEN); - $accessTokenFromFacebook = $fbAccessTokenResult->access_token; - $result = self::$socialApi->getEvents($accessTokenFromFacebook); - $this->assertNotNull($result); - } - } - - public function testGetFollowing() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$socialApi->getFollowing($accessTokenFromTwitter); - $this->assertNotNull($result); - } - } - - public function testGetGroups() { - // Using Facebook - if (FACEBOOK_ACCESS_TOKEN === "") { - $this->markTestSkipped("Facebook Access Token in config.php needs to be defined."); - } else { - $fbAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingFacebookToken(FACEBOOK_ACCESS_TOKEN); - $accessTokenFromFacebook = $fbAccessTokenResult->access_token; - $result = self::$socialApi->getGroups($accessTokenFromFacebook); - $this->assertNotNull($result); - } - } - - public function testGetLikes() { - // Using Facebook - if (FACEBOOK_ACCESS_TOKEN === "") { - $this->markTestSkipped("Facebook Access Token in config.php needs to be defined."); - } else { - $fbAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingFacebookToken(FACEBOOK_ACCESS_TOKEN); - $accessTokenFromFacebook = $fbAccessTokenResult->access_token; - $result = self::$socialApi->getLikes($accessTokenFromFacebook); - $this->assertNotNull($result); - } - } - - public function testGetMentions() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$socialApi->getMentions($accessTokenFromTwitter); - $this->assertNotNull($result); - } - } - - public function testGetMessage() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$advancedSocialApi->postMessage($accessTokenFromTwitter, "991413461560131585", "Test Message", "This is a test message."); - $this->assertObjectHasAttribute("isPosted", $result); - } - } - - public function testGetPages() { - // Using Facebook - if (FACEBOOK_ACCESS_TOKEN === "") { - $this->markTestSkipped("Facebook Access Token in config.php needs to be defined."); - } else { - $fbAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingFacebookToken(FACEBOOK_ACCESS_TOKEN); - $accessTokenFromFacebook = $fbAccessTokenResult->access_token; - $result = self::$socialApi->getPages($accessTokenFromFacebook, "loginradius"); - $this->assertNotNull($result); - } - } - - public function testGetPhotos() { - // Using Vkontakte - if (VKONTAKTE_ACCESS_TOKEN === "") { - $this->markTestSkipped("Vkontakte Access Token in config.php needs to be defined."); - } else { - $this->markTestIncomplete(); - } - } - - public function testGetPosts() { - // Using Facebook - if (FACEBOOK_ACCESS_TOKEN === "") { - $this->markTestSkipped("Facebook Access Token in config.php needs to be defined."); - } else { - $fbAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingFacebookToken(FACEBOOK_ACCESS_TOKEN); - $accessTokenFromFacebook = $fbAccessTokenResult->access_token; - $result = self::$socialApi->getPosts($accessTokenFromFacebook); - $this->assertNotNull($result); - } - } - - public function testStatusFetching() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$socialApi->getStatus($accessTokenFromTwitter); - $this->assertNotNull($result); - } - } - - public function testStatusPostingGet() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$advancedSocialApi->postStatus($accessTokenFromTwitter, "This is a test post. -" . rand(), "Test Post", "www.test.com", "www.test.com", "A post.", "A post."); - $this->assertObjectHasAttribute("isPosted", $result); - } - } - - public function testGetUserProfile() { - // Using Twitter - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $twitterAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $accessTokenFromTwitter = $twitterAccessTokenResult->access_token; - $result = self::$advancedSocialApi->refreshUserProfile($accessTokenFromTwitter); - $this->assertObjectHasAttribute("Uid", $result); - } - } - - public function testGetVideos() { - // Using Facebook - if (FACEBOOK_ACCESS_TOKEN === "") { - $this->markTestSkipped("Facebook Access Token in config.php needs to be defined."); - } else { - $fbAccessTokenResult = self::$advancedSocialApi->getAccessTokenByPassingFacebookToken(FACEBOOK_ACCESS_TOKEN); - $accessTokenFromFacebook = $fbAccessTokenResult->access_token; - $result = self::$socialApi->getVideos($accessTokenFromFacebook); - $this->assertNotNull($result); - } - } -} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,10 @@ + 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - self::$advancedSocialApi = new AdvanceSocialLoginAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - - $createResult = self::$accountApi->create($data); - self::$testerUid = $createResult->Uid; - self::$testerAccessToken = self::$accountApi->getAccessTokenByUid(self::$testerUid)->access_token; - } - - public static function tearDownAfterClass() { - self::$accountApi->delete(self::$testerUid); - } - - public function testAccessTokenViaFacebookAccessToken() { - if (FACEBOOK_ACCESS_TOKEN === "") { - $this->markTestSkipped("Facebook Access Token in config.php needs to be defined."); - } else { - $result = self::$advancedSocialApi->getAccessTokenByPassingFacebookToken(FACEBOOK_ACCESS_TOKEN); - $this->assertObjectHasAttribute("access_token", $result); - } - } - - public function testAccessTokenViaTwitterToken() { - if (TWITTER_ACCESS_TOKEN === "" || TWITTER_TOKEN_SECRET === "") { - $this->markTestSkipped("Twitter Access Token and Token Secret in config.php needs to be defined."); - } else { - $result = self::$advancedSocialApi->getAccessTokenByPassingTwitterToken(TWITTER_ACCESS_TOKEN, TWITTER_TOKEN_SECRET); - $this->assertObjectHasAttribute("access_token", $result); - } - } - - public function testAccessTokenViaVkontakteToken() { - $this->markTestIncomplete("testAccessTokenViaVkontakteToken not implemented."); - } - - public function testAccessTokenViaGoogleToken() { - $this->markTestIncomplete("testAccessTokenViaGoogleToken not implemented."); - } - - public function testRefreshUserProfile() { - $result = self::$advancedSocialApi->refreshUserProfile(self::$testerAccessToken); - $this->assertObjectHasAttribute("Uid", $result); - } - - public function testRefreshToken() { - $result = self::$advancedSocialApi->refreshAccessToken(self::$testerAccessToken); - $this->assertObjectHasAttribute("access_token", $result); - } - - public function testGetActiveSessions() { - $result = self::$advancedSocialApi->getActiveSessionByToken(self::$testerAccessToken); - $this->assertObjectHasAttribute("data", $result); - } -} diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php new file mode 100644 index 0000000..5663bb4 --- /dev/null +++ b/tests/Unit/ExampleTest.php @@ -0,0 +1,20 @@ +assertTrue(true); + } +} diff --git a/tests/WebhooksTest.php b/tests/WebhooksTest.php deleted file mode 100644 index 44d101d..0000000 --- a/tests/WebhooksTest.php +++ /dev/null @@ -1,30 +0,0 @@ - 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - } - - public function testWebhooks() { - // Subscribe Webhooks - $subscribeResult = self::$webHooksApi->subscribeWebHooks("https://www.testphpsdk.com", "Login"); - $this->assertObjectHasAttribute("IsPosted", $subscribeResult); - - // Webhooks Test - $testResult = self::$webHooksApi->webHooksSettings(); - $this->assertObjectHasAttribute("IsAllowed", $testResult); - - // Webhooks Subscribed Urls - $subscribedUrlsResult = self::$webHooksApi->getWebHooksSubscribedUrls("Login"); - $this->assertObjectHasAttribute("data", $subscribedUrlsResult); - - // Webhooks Unsubscribe - $unsubscribeResult = self::$webHooksApi->unsubscribeWebHooks("https://www.testphpsdk.com", "Login"); - $this->assertObjectHasAttribute("IsDeleted", $unsubscribeResult); - } -} diff --git a/tests/bootstrap.php b/tests/bootstrap.php deleted file mode 100644 index 2d90b9d..0000000 --- a/tests/bootstrap.php +++ /dev/null @@ -1,5 +0,0 @@ -' - -Note MultiFactorAuthenticationTest.php needs to have MFA set to enabled and required in the LoginRadius Dashboard. diff --git a/webpack.mix.js b/webpack.mix.js new file mode 100644 index 0000000..72fdbb1 --- /dev/null +++ b/webpack.mix.js @@ -0,0 +1,15 @@ +let mix = require('laravel-mix'); + +/* + |-------------------------------------------------------------------------- + | Mix Asset Management + |-------------------------------------------------------------------------- + | + | Mix provides a clean, fluent API for defining some Webpack build steps + | for your Laravel application. By default, we are compiling the Sass + | file for the application as well as bundling up all the JS files. + | + */ + +mix.js('resources/assets/js/app.js', 'public/js') + .sass('resources/assets/sass/app.scss', 'public/css'); From 59982ded54afdb11483a6dd3e57891a9d3f32fd5 Mon Sep 17 00:00:00 2001 From: Sudhanshu Agarwal Date: Fri, 15 Feb 2019 13:57:25 +0530 Subject: [PATCH 2/4] LoginRadius CakePHP Demo --- .editorconfig | 24 + .env.example | 33 - .gitattributes | 49 +- .github/ISSUE_TEMPLATE.md | 23 + .github/PULL_REQUEST_TEMPLATE.md | 10 + .gitignore | 51 +- .htaccess | 12 + .travis.yml | 39 + README.md | 112 +- app/Console/Kernel.php | 40 - app/Exceptions/Handler.php | 65 - .../Auth/ForgotPasswordController.php | 32 - app/Http/Controllers/Auth/LoginController.php | 39 - .../Controllers/Auth/RegisterController.php | 71 - .../Auth/ResetPasswordController.php | 39 - app/Http/Controllers/Controller.php | 13 - app/Http/Kernel.php | 60 - app/Http/Middleware/EncryptCookies.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 26 - app/Http/Middleware/TrimStrings.php | 18 - app/Http/Middleware/VerifyCsrfToken.php | 17 - app/Providers/AppServiceProvider.php | 28 - app/Providers/AuthServiceProvider.php | 30 - app/Providers/BroadcastServiceProvider.php | 21 - app/Providers/EventServiceProvider.php | 32 - app/Providers/RouteServiceProvider.php | 73 - app/User.php | 29 - artisan | 51 - bin/cake | 75 + bin/cake.bat | 27 + bin/cake.php | 12 + bootstrap/app.php | 55 - bootstrap/autoload.php | 18 - bootstrap/cache/.gitignore | 2 - bootstrap/constants.php | 8 - composer.json | 66 +- composer.lock | 3577 ++++++++++------- config/.env.default | 38 + config/app.php | 591 ++- config/auth.php | 102 - config/bootstrap.php | 203 + config/bootstrap_cli.php | 28 + config/broadcasting.php | 58 - config/cache.php | 91 - config/database.php | 120 - config/filesystems.php | 68 - config/mail.php | 123 - config/paths.php | 89 + config/queue.php | 85 - config/requirements.php | 39 + config/routes.php | 127 + config/schema/i18n.sql | 18 + config/schema/sessions.sql | 15 + config/services.php | 38 - config/session.php | 179 - config/view.php | 33 - database/.gitignore | 1 - database/factories/ModelFactory.php | 24 - .../2014_10_12_000000_create_users_table.php | 35 - ...12_100000_create_password_resets_table.php | 32 - database/seeds/DatabaseSeeder.php | 16 - demo-php-framework (1).zip | Bin 324584 -> 592014 bytes index.php | 16 + package.json | 21 - phpunit.xml | 31 - phpunit.xml.dist | 41 + public/favicon.ico => plugins/empty | 0 public/.htaccess | 20 - public/index.php | 58 - public/robots.txt | 2 - public/web.config | 23 - resources/assets/js/app.js | 22 - resources/assets/js/bootstrap.js | 53 - resources/assets/js/components/Example.vue | 23 - resources/assets/sass/_variables.scss | 38 - resources/assets/sass/app.scss | 9 - resources/lang/en/auth.php | 19 - resources/lang/en/pagination.php | 19 - resources/lang/en/passwords.php | 22 - resources/lang/en/validation.php | 121 - resources/views/README.md | 32 - resources/views/index.html | 11 - .../views/layouts/profile/home.blade.php | 43 - resources/views/test.blade.php | 6 - resources/views/welcome.blade.php | 95 - resources/views/welcome_message.php | 89 - routes/api.php | 18 - routes/channels.php | 16 - routes/console.php | 18 - routes/web.php | 57 - server.php | 21 - src/Application.php | 85 + src/Console/Installer.php | 246 ++ src/Controller/AppController.php | 61 + src/Controller/Component/empty | 0 src/Controller/ErrorController.php | 70 + .../Controller}/HomeController.php | 241 +- src/Controller/PagesController.php | 69 + .../Controller/ProfileController.php | 237 +- src/Model/Behavior/empty | 0 src/Model/Entity/empty | 0 src/Model/Table/empty | 0 src/Shell/ConsoleShell.php | 81 + src/Template/Cell/empty | 1 + src/Template/Element/Flash/default.ctp | 10 + src/Template/Element/Flash/error.ctp | 6 + src/Template/Element/Flash/success.ctp | 6 + src/Template/Email/html/default.ctp | 20 + src/Template/Email/text/default.ctp | 16 + src/Template/Error/error400.ctp | 38 + src/Template/Error/error500.ctp | 43 + .../Template/Home/change_password_view.ctp | 7 +- .../Template/Home/forgot_password_view.ctp | 7 +- .../Template/Home/login_screen.ctp | 8 +- .../Template/Home/minimal.ctp | 5 +- .../Template/Home/registration_view.ctp | 4 +- src/Template/Layout/Email/html/default.ctp | 24 + src/Template/Layout/Email/text/default.ctp | 16 + src/Template/Layout/ajax.ctp | 16 + src/Template/Layout/default.ctp | 57 + src/Template/Layout/error.ctp | 47 + .../Template/Layout/minimallayout.ctp | 36 +- src/Template/Layout/profilelayout.ctp | 48 + src/Template/Layout/rss/default.ctp | 11 + src/Template/Pages/home.ctp | 276 ++ .../Template/profile/account_linking_view.ctp | 7 +- .../Template/profile/account_view.ctp | 10 +- src/Template/profile/change_password_view.ctp | 13 + .../Template/profile/custom_object_view.ctp | 7 +- .../Template/profile/profile_view.ctp | 6 +- .../profile/reset_multifactor_view.ctp | 7 +- .../Template/profile/role_view.ctp | 5 +- .../Template/profile/set_password_view.ctp | 9 +- src/View/AjaxView.php | 49 + src/View/AppView.php | 40 + src/View/Cell/empty | 0 src/View/Helper/empty | 0 storage/app/.gitignore | 3 - storage/app/public/.gitignore | 2 - storage/framework/.gitignore | 8 - storage/framework/cache/.gitignore | 2 - storage/framework/sessions/.gitignore | 2 - storage/framework/testing/.gitignore | 2 - storage/framework/views/.gitignore | 2 - storage/logs/.gitignore | 2 - tests/CreatesApplication.php | 22 - tests/Feature/ExampleTest.php | 23 - tests/Fixture/empty | 0 tests/TestCase.php | 10 - tests/TestCase/ApplicationTest.php | 84 + tests/TestCase/Controller/Component/empty | 0 .../Controller/PagesControllerTest.php | 97 + tests/TestCase/Model/Behavior/empty | 0 tests/TestCase/View/Helper/empty | 0 tests/Unit/ExampleTest.php | 20 - tests/bootstrap.php | 12 + webpack.mix.js | 15 - webroot/.htaccess | 5 + webroot/css/base.css | 455 +++ webroot/css/home.css | 240 ++ webroot/css/style.css | 524 +++ .../css/style.css => webroot/css/stylelr.css | 4 +- webroot/favicon.ico | Bin 0 -> 15086 bytes webroot/font/cakedingbats-webfont.eot | Bin 0 -> 75538 bytes webroot/font/cakedingbats-webfont.svg | 78 + webroot/font/cakedingbats-webfont.ttf | Bin 0 -> 75412 bytes webroot/font/cakedingbats-webfont.woff | Bin 0 -> 43484 bytes webroot/font/cakedingbats-webfont.woff2 | Bin 0 -> 35456 bytes webroot/img/cake-logo.png | Bin 0 -> 2683 bytes webroot/img/cake.icon.png | Bin 0 -> 943 bytes webroot/img/cake.logo.svg | 41 + webroot/img/cake.power.gif | Bin 0 -> 201 bytes .../images => webroot/img}/icon-sprite-32.png | Bin {public/images => webroot/img}/line.png | Bin {public/images => webroot/img}/line.svg | 0 {public/images => webroot/img}/loading.png | Bin {public/images => webroot/img}/login.jpg | Bin {public/images => webroot/img}/lr-logo.png | Bin .../img}/lr_provider_sprite.png | Bin .../img}/mapping/Pinterest.png | Bin .../images => webroot/img}/mapping/RAAS.png | Bin .../images => webroot/img}/mapping/amazon.png | Bin .../images => webroot/img}/mapping/aol.png | Bin .../img}/mapping/classmates.png | Bin .../img}/mapping/facebook.png | Bin .../img}/mapping/foursquare.png | Bin .../images => webroot/img}/mapping/github.png | Bin .../images => webroot/img}/mapping/google.png | Bin .../images => webroot/img}/mapping/hyves.png | Bin .../images => webroot/img}/mapping/kaixin.png | Bin .../images => webroot/img}/mapping/line.png | Bin .../img}/mapping/linkedin.png | Bin .../images => webroot/img}/mapping/live.png | Bin .../img}/mapping/livejournal.png | Bin .../images => webroot/img}/mapping/mixi.png | Bin .../img}/mapping/myopenid.png | Bin .../img}/mapping/myspace.png | Bin .../img}/mapping/odnoklassniki.png | Bin .../images => webroot/img}/mapping/openid.png | Bin .../images => webroot/img}/mapping/orange.png | Bin .../images => webroot/img}/mapping/paypal.png | Bin .../img}/mapping/persona.png | Bin {public/images => webroot/img}/mapping/qq.png | Bin .../images => webroot/img}/mapping/renren.png | Bin .../img}/mapping/salesforce.png | Bin .../img}/mapping/stackexchange.png | Bin .../img}/mapping/steamcommunity.png | Bin .../img}/mapping/twitter.png | Bin .../img}/mapping/verisign.png | Bin .../img}/mapping/virgilio.png | Bin .../img}/mapping/vkontakte.png | Bin .../img}/mapping/wordpres.png | Bin .../img}/mapping/wordpress.png | Bin .../images => webroot/img}/mapping/yahoo.png | Bin {public/images => webroot/img}/pinterest.png | Bin {public/images => webroot/img}/user-blank.png | Bin webroot/index.php | 40 + .../js/LoginRadiusLoginScreen.1.0.0.js | 3 +- {public => webroot}/js/account.js | 14 +- {public => webroot}/js/accountlinking.js | 0 {public => webroot}/js/emailverification.js | 13 +- webroot/js/empty | 0 {public => webroot}/js/index.js | 74 +- {public => webroot}/js/jquery.min.js | 0 {public => webroot}/js/logout.js | 2 +- {public => webroot}/js/options.js | 2 +- {public => webroot}/js/profile.js | 49 +- {public => webroot}/js/sociallogin.js | 0 228 files changed, 6802 insertions(+), 4984 deletions(-) create mode 100644 .editorconfig delete mode 100644 .env.example create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .htaccess create mode 100644 .travis.yml delete mode 100644 app/Console/Kernel.php delete mode 100644 app/Exceptions/Handler.php delete mode 100644 app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 app/Http/Controllers/Auth/LoginController.php delete mode 100644 app/Http/Controllers/Auth/RegisterController.php delete mode 100644 app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 app/Http/Controllers/Controller.php delete mode 100644 app/Http/Kernel.php delete mode 100644 app/Http/Middleware/EncryptCookies.php delete mode 100644 app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 app/Http/Middleware/TrimStrings.php delete mode 100644 app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 app/Providers/AppServiceProvider.php delete mode 100644 app/Providers/AuthServiceProvider.php delete mode 100644 app/Providers/BroadcastServiceProvider.php delete mode 100644 app/Providers/EventServiceProvider.php delete mode 100644 app/Providers/RouteServiceProvider.php delete mode 100644 app/User.php delete mode 100644 artisan create mode 100644 bin/cake create mode 100644 bin/cake.bat create mode 100644 bin/cake.php delete mode 100644 bootstrap/app.php delete mode 100644 bootstrap/autoload.php delete mode 100644 bootstrap/cache/.gitignore delete mode 100644 bootstrap/constants.php create mode 100644 config/.env.default delete mode 100644 config/auth.php create mode 100644 config/bootstrap.php create mode 100644 config/bootstrap_cli.php delete mode 100644 config/broadcasting.php delete mode 100644 config/cache.php delete mode 100644 config/database.php delete mode 100644 config/filesystems.php delete mode 100644 config/mail.php create mode 100644 config/paths.php delete mode 100644 config/queue.php create mode 100644 config/requirements.php create mode 100644 config/routes.php create mode 100644 config/schema/i18n.sql create mode 100644 config/schema/sessions.sql delete mode 100644 config/services.php delete mode 100644 config/session.php delete mode 100644 config/view.php delete mode 100644 database/.gitignore delete mode 100644 database/factories/ModelFactory.php delete mode 100644 database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 database/seeds/DatabaseSeeder.php create mode 100644 index.php delete mode 100644 package.json delete mode 100644 phpunit.xml create mode 100644 phpunit.xml.dist rename public/favicon.ico => plugins/empty (100%) delete mode 100644 public/.htaccess delete mode 100644 public/index.php delete mode 100644 public/robots.txt delete mode 100644 public/web.config delete mode 100644 resources/assets/js/app.js delete mode 100644 resources/assets/js/bootstrap.js delete mode 100644 resources/assets/js/components/Example.vue delete mode 100644 resources/assets/sass/_variables.scss delete mode 100644 resources/assets/sass/app.scss delete mode 100644 resources/lang/en/auth.php delete mode 100644 resources/lang/en/pagination.php delete mode 100644 resources/lang/en/passwords.php delete mode 100644 resources/lang/en/validation.php delete mode 100644 resources/views/README.md delete mode 100644 resources/views/index.html delete mode 100644 resources/views/layouts/profile/home.blade.php delete mode 100644 resources/views/test.blade.php delete mode 100644 resources/views/welcome.blade.php delete mode 100644 resources/views/welcome_message.php delete mode 100644 routes/api.php delete mode 100644 routes/channels.php delete mode 100644 routes/console.php delete mode 100644 routes/web.php delete mode 100644 server.php create mode 100644 src/Application.php create mode 100644 src/Console/Installer.php create mode 100644 src/Controller/AppController.php create mode 100644 src/Controller/Component/empty create mode 100644 src/Controller/ErrorController.php rename {app/Http/Controllers => src/Controller}/HomeController.php (66%) create mode 100644 src/Controller/PagesController.php rename app/Http/Controllers/Profile.php => src/Controller/ProfileController.php (72%) create mode 100644 src/Model/Behavior/empty create mode 100644 src/Model/Entity/empty create mode 100644 src/Model/Table/empty create mode 100644 src/Shell/ConsoleShell.php create mode 100644 src/Template/Cell/empty create mode 100644 src/Template/Element/Flash/default.ctp create mode 100644 src/Template/Element/Flash/error.ctp create mode 100644 src/Template/Element/Flash/success.ctp create mode 100644 src/Template/Email/html/default.ctp create mode 100644 src/Template/Email/text/default.ctp create mode 100644 src/Template/Error/error400.ctp create mode 100644 src/Template/Error/error500.ctp rename resources/views/changepassword.blade.php => src/Template/Home/change_password_view.ctp (84%) rename resources/views/forgot.blade.php => src/Template/Home/forgot_password_view.ctp (90%) rename resources/views/loginscreen.blade.php => src/Template/Home/login_screen.ctp (98%) rename resources/views/index.blade.php => src/Template/Home/minimal.ctp (98%) rename resources/views/signup.blade.php => src/Template/Home/registration_view.ctp (93%) create mode 100644 src/Template/Layout/Email/html/default.ctp create mode 100644 src/Template/Layout/Email/text/default.ctp create mode 100644 src/Template/Layout/ajax.ctp create mode 100644 src/Template/Layout/default.ctp create mode 100644 src/Template/Layout/error.ctp rename resources/views/layouts/home.blade.php => src/Template/Layout/minimallayout.ctp (53%) create mode 100644 src/Template/Layout/profilelayout.ctp create mode 100644 src/Template/Layout/rss/default.ctp create mode 100644 src/Template/Pages/home.ctp rename resources/views/accountlinking.blade.php => src/Template/profile/account_linking_view.ctp (91%) rename resources/views/account.blade.php => src/Template/profile/account_view.ctp (78%) create mode 100644 src/Template/profile/change_password_view.ctp rename resources/views/customobjects.blade.php => src/Template/profile/custom_object_view.ctp (95%) rename resources/views/profile.blade.php => src/Template/profile/profile_view.ctp (90%) rename resources/views/multifactor.blade.php => src/Template/profile/reset_multifactor_view.ctp (76%) rename resources/views/roles.blade.php => src/Template/profile/role_view.ctp (95%) rename resources/views/setpassword.blade.php => src/Template/profile/set_password_view.ctp (76%) create mode 100644 src/View/AjaxView.php create mode 100644 src/View/AppView.php create mode 100644 src/View/Cell/empty create mode 100644 src/View/Helper/empty delete mode 100644 storage/app/.gitignore delete mode 100644 storage/app/public/.gitignore delete mode 100644 storage/framework/.gitignore delete mode 100644 storage/framework/cache/.gitignore delete mode 100644 storage/framework/sessions/.gitignore delete mode 100644 storage/framework/testing/.gitignore delete mode 100644 storage/framework/views/.gitignore delete mode 100644 storage/logs/.gitignore delete mode 100644 tests/CreatesApplication.php delete mode 100644 tests/Feature/ExampleTest.php create mode 100644 tests/Fixture/empty delete mode 100644 tests/TestCase.php create mode 100644 tests/TestCase/ApplicationTest.php create mode 100644 tests/TestCase/Controller/Component/empty create mode 100644 tests/TestCase/Controller/PagesControllerTest.php create mode 100644 tests/TestCase/Model/Behavior/empty create mode 100644 tests/TestCase/View/Helper/empty delete mode 100644 tests/Unit/ExampleTest.php create mode 100644 tests/bootstrap.php delete mode 100644 webpack.mix.js create mode 100644 webroot/.htaccess create mode 100644 webroot/css/base.css create mode 100644 webroot/css/home.css create mode 100644 webroot/css/style.css rename public/css/style.css => webroot/css/stylelr.css (97%) create mode 100644 webroot/favicon.ico create mode 100644 webroot/font/cakedingbats-webfont.eot create mode 100644 webroot/font/cakedingbats-webfont.svg create mode 100644 webroot/font/cakedingbats-webfont.ttf create mode 100644 webroot/font/cakedingbats-webfont.woff create mode 100644 webroot/font/cakedingbats-webfont.woff2 create mode 100644 webroot/img/cake-logo.png create mode 100644 webroot/img/cake.icon.png create mode 100644 webroot/img/cake.logo.svg create mode 100644 webroot/img/cake.power.gif rename {public/images => webroot/img}/icon-sprite-32.png (100%) rename {public/images => webroot/img}/line.png (100%) rename {public/images => webroot/img}/line.svg (100%) rename {public/images => webroot/img}/loading.png (100%) rename {public/images => webroot/img}/login.jpg (100%) rename {public/images => webroot/img}/lr-logo.png (100%) rename {public/images => webroot/img}/lr_provider_sprite.png (100%) rename {public/images => webroot/img}/mapping/Pinterest.png (100%) rename {public/images => webroot/img}/mapping/RAAS.png (100%) rename {public/images => webroot/img}/mapping/amazon.png (100%) rename {public/images => webroot/img}/mapping/aol.png (100%) rename {public/images => webroot/img}/mapping/classmates.png (100%) rename {public/images => webroot/img}/mapping/facebook.png (100%) rename {public/images => webroot/img}/mapping/foursquare.png (100%) rename {public/images => webroot/img}/mapping/github.png (100%) rename {public/images => webroot/img}/mapping/google.png (100%) rename {public/images => webroot/img}/mapping/hyves.png (100%) rename {public/images => webroot/img}/mapping/kaixin.png (100%) rename {public/images => webroot/img}/mapping/line.png (100%) rename {public/images => webroot/img}/mapping/linkedin.png (100%) rename {public/images => webroot/img}/mapping/live.png (100%) rename {public/images => webroot/img}/mapping/livejournal.png (100%) rename {public/images => webroot/img}/mapping/mixi.png (100%) rename {public/images => webroot/img}/mapping/myopenid.png (100%) rename {public/images => webroot/img}/mapping/myspace.png (100%) rename {public/images => webroot/img}/mapping/odnoklassniki.png (100%) rename {public/images => webroot/img}/mapping/openid.png (100%) rename {public/images => webroot/img}/mapping/orange.png (100%) rename {public/images => webroot/img}/mapping/paypal.png (100%) rename {public/images => webroot/img}/mapping/persona.png (100%) rename {public/images => webroot/img}/mapping/qq.png (100%) rename {public/images => webroot/img}/mapping/renren.png (100%) rename {public/images => webroot/img}/mapping/salesforce.png (100%) rename {public/images => webroot/img}/mapping/stackexchange.png (100%) rename {public/images => webroot/img}/mapping/steamcommunity.png (100%) rename {public/images => webroot/img}/mapping/twitter.png (100%) rename {public/images => webroot/img}/mapping/verisign.png (100%) rename {public/images => webroot/img}/mapping/virgilio.png (100%) rename {public/images => webroot/img}/mapping/vkontakte.png (100%) rename {public/images => webroot/img}/mapping/wordpres.png (100%) rename {public/images => webroot/img}/mapping/wordpress.png (100%) rename {public/images => webroot/img}/mapping/yahoo.png (100%) rename {public/images => webroot/img}/pinterest.png (100%) rename {public/images => webroot/img}/user-blank.png (100%) create mode 100644 webroot/index.php rename {public => webroot}/js/LoginRadiusLoginScreen.1.0.0.js (99%) rename {public => webroot}/js/account.js (91%) rename {public => webroot}/js/accountlinking.js (100%) rename {public => webroot}/js/emailverification.js (91%) create mode 100644 webroot/js/empty rename {public => webroot}/js/index.js (92%) rename {public => webroot}/js/jquery.min.js (100%) rename {public => webroot}/js/logout.js (95%) rename {public => webroot}/js/options.js (88%) rename {public => webroot}/js/profile.js (94%) rename {public => webroot}/js/sociallogin.js (100%) diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7be895e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,24 @@ +; This file is for unifying the coding style for different editors and IDEs. +; More information at http://editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.bat] +end_of_line = crlf + +[*.yml] +indent_style = space +indent_size = 2 + +[*.twig] +insert_final_newline = false + +[Makefile] +indent_style = tab diff --git a/.env.example b/.env.example deleted file mode 100644 index 668c06f..0000000 --- a/.env.example +++ /dev/null @@ -1,33 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY= -APP_DEBUG=true -APP_LOG_LEVEL=debug -APP_URL=http://localhost - -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=homestead -DB_USERNAME=homestead -DB_PASSWORD=secret - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -SESSION_DRIVER=file -QUEUE_DRIVER=sync - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_DRIVER=smtp -MAIL_HOST=smtp.mailtrap.io -MAIL_PORT=2525 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= diff --git a/.gitattributes b/.gitattributes index 967315d..f552ddb 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,46 @@ +# Define the line ending behavior of the different file extensions +# Set default behavior, in case users don't have core.autocrlf set. * text=auto -*.css linguist-vendored -*.scss linguist-vendored -*.js linguist-vendored -CHANGELOG.md export-ignore +* text eol=lf + +# Explicitly declare text files we want to always be normalized and converted +# to native line endings on checkout. +*.php text +*.default text +*.ctp text +*.sql text +*.md text +*.po text +*.js text +*.css text +*.ini text +*.properties text +*.txt text +*.xml text +*.svg text +*.yml text +.htaccess text + +# Declare files that will always have CRLF line endings on checkout. +*.bat eol=crlf + +# Declare files that will always have LF line endings on checkout. +*.pem eol=lf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary +*.gif binary +*.ico binary +*.mo binary +*.pdf binary +*.phar binary +*.woff binary +*.woff2 binary +*.ttf binary +*.otf binary +*.eot binary +*.gz binary +*.bz2 binary +*.7z binary +*.zip binary diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..660b539 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,23 @@ +This is a (multiple allowed): + +* [x] bug +* [ ] enhancement +* [ ] feature-discussion (RFC) + +* CakePHP Application Skeleton Version: EXACT RELEASE VERSION OR COMMIT HASH, HERE. +* Platform and Target: YOUR WEB-SERVER, DATABASE AND OTHER RELEVANT INFO AND HOW THE REQUEST IS BEING MADE, HERE. + +### What you did +EXPLAIN WHAT YOU DID, PREFERABLY WITH CODE EXAMPLES, HERE. + +### What happened +EXPLAIN WHAT IS ACTUALLY HAPPENING, HERE. + +### What you expected to happen +EXPLAIN WHAT IS TO BE EXPECTED, HERE. + +P.S. Remember, an issue is not the place to ask questions. You can use [Stack Overflow](https://stackoverflow.com/questions/tagged/cakephp) +for that or join the #cakephp channel on irc.freenode.net, where we will be more +than happy to help answer your questions. + +Before you open an issue, please check if a similar issue already exists or has been closed before. \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..05ca9eb --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,10 @@ +**PLEASE NOTE:** + +This is only a issue tracker for issues related to the CakePHP Application Skeleton. +For CakePHP Framework issues please use this [issue tracker](https://github.com/cakephp/cakephp/issues). + +Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue. + +The best way to propose a feature is to open an issue first and discuss your ideas there before implementing them. + +Always follow the [contribution guidelines](https://github.com/cakephp/cakephp/blob/master/.github/CONTRIBUTING.md) guidelines when submitting a pull request. In particular, make sure existing tests still pass, and add tests for all new behavior. When fixing a bug, you may want to add a test to verify the fix. \ No newline at end of file diff --git a/.gitignore b/.gitignore index b6a4b86..a8c0da0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,39 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -/.idea -/.vagrant -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -.env +# CakePHP specific files # +########################## +/config/.env +/logs/* +/tmp/* +/vendor/* + +# OS generated files # +###################### +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +Icon? +ehthumbs.db +Thumbs.db + +# Tool specific files # +####################### +# vim +*~ +*.swp +*.swo +# sublime text & textmate +*.sublime-* +*.stTheme.cache +*.tmlanguage.cache +*.tmPreferences.cache +# Eclipse +.settings/* +# JetBrains, aka PHPStorm, IntelliJ IDEA +.idea/* +# NetBeans +nbproject/* +# Visual Studio Code +.vscode +# Sass preprocessor +.sass-cache/ diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..54b08e8 --- /dev/null +++ b/.htaccess @@ -0,0 +1,12 @@ +# Uncomment the following to prevent the httpoxy vulnerability +# See: https://httpoxy.org/ +# +# RequestHeader unset Proxy +# + + + RewriteEngine on + RewriteRule ^(\.well-known/.*)$ $1 [L] + RewriteRule ^$ webroot/ [L] + RewriteRule (.*) webroot/$1 [L] + diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..9c914f6 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,39 @@ +language: php + +dist: trusty + +sudo: false + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + +matrix: + fast_finish: true + + global: + - DEFAULT=1 + + include: + - php: 7.0 + env: PHPCS=1 DEFAULT=0 + + - php: 7.1 + env: PHPSTAN=1 DEFAULT=0 + +before_script: + - if [[ $PHPCS = 1 ]]; then composer require cakephp/cakephp-codesniffer:~2.1; fi + - if [[ $DEFAULT = 1 ]]; then composer install; fi + - if [[ $DEFAULT = 1 ]]; then composer require phpunit/phpunit:"^5.7|^6.0"; fi + - if [[ $DEFAULT = 1 ]]; then composer run-script post-install-cmd --no-interaction; fi + - if [[ $PHPSTAN = 1 ]]; then composer require --dev "phpstan/phpstan"; fi + +script: + - if [[ $DEFAULT = 1 ]]; then vendor/bin/phpunit; fi + - if [[ $PHPCS = 1 ]]; then vendor/bin/phpcs -p --extensions=php --standard=vendor/cakephp/cakephp-codesniffer/CakePHP ./src ./tests ./config ./webroot; fi + - if [[ $PHPSTAN = 1 ]]; then vendor/bin/phpstan analyse -l 5 src; fi + +notifications: + email: false diff --git a/README.md b/README.md index 4ab2e13..5ee0219 100755 --- a/README.md +++ b/README.md @@ -1,59 +1,83 @@ -# LoginRadius Laravel Demo -** Disclaimer: -This guide assumes you have some basic knowledge of PHP and Laravel. +# LoginRadius CakePHP Demo -# Setup +## Overview +This demo is meant to help you with a quick implementation of the LoginRadius platform with CakePHP. +It presumes you have basic knowledge of PHP. - 1. Download our Laravel demo project. +## Getting Started - 2. After Downloading laravel-demo, you need to update composer to download required library using the following command: +**Required: Composer needs to be installed ** - composer update +1. Setup a local server. If you don't know how to set up a local server read these guides [here](https://www.maketecheasier.com/setup-local-web-server-all-platforms/) or set up a small GitHub webserver [here](https://pages.github.com/) - 3. Open constants.php (File Location: bootstrap\constants.php) and fill your LoginRadius credentials - - define('API_KEY', ''); // Pass API Key - define('API_SECRET', ''); // Pass API Secret Key - define('API_REQUEST_SIGNING', false); // Pass boolean true/false for enable/disable - define('AUTH_FLOW', ''); +2. Download the demo and put it in your root directory on your server. - 4. Then open the option.js(File Location: public\js\option.js) and fill your LoginRadius credentials - - var commonOptions = {}; - commonOptions.apiKey = ""; - commonOptions.appName = ""; - commonOptions.hashTemplate = true; - commonOptions.sott = ""; - commonOptions.formValidationMessage = true; - commonOptions.verificationUrl = domainName+"/login"; - commonOptions.resetPasswordUrl = domainName+"/login"; - var LRObject = new LoginRadiusV2(commonOptions); +3. Install the dependencies by typing following command in your command-line interface. - 5. After configuring the options, run following commands: + ##### ** Note: intl extension should be enabled in PHP. ** - cp .env.example .env - php artisan key:generate - php artisan serve +``` + composer update +``` - 6. Open the browser and hit the url: http://127.0.0.1:8000/. You would be good to go and start playing with the demo. +4. Configure your LoginRadius Credentials in \ "\src\Controller\AppController.php\" + +``` + define('API_KEY', ''); // Pass API Key + define('API_SECRET', ''); // Pass API Secret Key + define('API_REQUEST_SIGNING', false); // Pass boolean true/false for enable/disable + define('AUTH_FLOW', ''); +``` +5. Configure your LoginRadius Credentials in \ "\webroot\js\option.js\ " + +``` + var commonOptions = {}; + commonOptions.apiKey = ""; + commonOptions.appName = ""; + commonOptions.hashTemplate = true; + commonOptions.sott = ""; + commonOptions.formValidationMessage = true; + commonOptions.verificationUrl = domainName+"/login"; + commonOptions.resetPasswordUrl = domainName+"/login"; + var LRObject = new LoginRadiusV2(commonOptions); + +``` + +6. Run following command in your command-line interface. +``` + copy config\app.default.php config\app.php +``` + +6. Go to your web browser and type in the root directory URL that your server is hosting. + +## Features Implemented in the Demo + +1. Login + +2. Register + +3. Resend Email Verification + +4. Social Login + +5. Multi-Factor Authentication + +6. Hosted Page + +7. Forgot Password + +8. Custom Object Management + +9. Update Profile + +10. Set Password + +11. Account Linking + +12. Roles Management -**Features Implemented in the Demo** -1. Login -2. Register -3. Resend Email Verification -4. Social Login -5. Multi-Factor Authentication -6. Hosted Page -7. Forgot Password -8. Custom Object Management -9. Update Profile -10. Set Password -11. Account Linking -12. Roles Management - - \ No newline at end of file diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php deleted file mode 100644 index 622e774..0000000 --- a/app/Console/Kernel.php +++ /dev/null @@ -1,40 +0,0 @@ -command('inspire') - // ->hourly(); - } - - /** - * Register the Closure based commands for the application. - * - * @return void - */ - protected function commands() - { - require base_path('routes/console.php'); - } -} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php deleted file mode 100644 index a747e31..0000000 --- a/app/Exceptions/Handler.php +++ /dev/null @@ -1,65 +0,0 @@ -expectsJson()) { - return response()->json(['error' => 'Unauthenticated.'], 401); - } - - return redirect()->guest(route('login')); - } -} diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 6a247fe..0000000 --- a/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,32 +0,0 @@ -middleware('guest'); - } -} diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php deleted file mode 100644 index b2ea669..0000000 --- a/app/Http/Controllers/Auth/LoginController.php +++ /dev/null @@ -1,39 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index f77265a..0000000 --- a/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,71 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => 'required|string|max:255', - 'email' => 'required|string|email|max:255|unique:users', - 'password' => 'required|string|min:6|confirmed', - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => bcrypt($data['password']), - ]); - } -} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index cf726ee..0000000 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,39 +0,0 @@ -middleware('guest'); - } -} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php deleted file mode 100644 index 03e02a2..0000000 --- a/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ - [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - 'throttle:60,1', - 'bindings', - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, - 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, - 'can' => \Illuminate\Auth\Middleware\Authorize::class, - 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - ]; -} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 3aa15f8..0000000 --- a/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ -check()) { - return redirect('/home'); - } - - return $next($request); - } -} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 943e9a4..0000000 --- a/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,18 +0,0 @@ - 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 352cce4..0000000 --- a/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - 'App\Listeners\EventListener', - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - parent::boot(); - - // - } -} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 5ea48d3..0000000 --- a/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,73 +0,0 @@ -mapApiRoutes(); - - $this->mapWebRoutes(); - - // - } - - /** - * Define the "web" routes for the application. - * - * These routes all receive session state, CSRF protection, etc. - * - * @return void - */ - protected function mapWebRoutes() - { - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - } - - /** - * Define the "api" routes for the application. - * - * These routes are typically stateless. - * - * @return void - */ - protected function mapApiRoutes() - { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - } -} diff --git a/app/User.php b/app/User.php deleted file mode 100644 index bfd96a6..0000000 --- a/app/User.php +++ /dev/null @@ -1,29 +0,0 @@ -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/bin/cake b/bin/cake new file mode 100644 index 0000000..14f9019 --- /dev/null +++ b/bin/cake @@ -0,0 +1,75 @@ +#!/usr/bin/env sh +################################################################################ +# +# Cake is a shell script for invoking CakePHP shell commands +# +# CakePHP(tm) : Rapid Development Framework (https://cakephp.org) +# Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) +# +# Licensed under The MIT License +# For full copyright and license information, please see the LICENSE.txt +# Redistributions of files must retain the above copyright notice. +# +# @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) +# @link https://cakephp.org CakePHP(tm) Project +# @since 1.2.0 +# @license https://opensource.org/licenses/mit-license.php MIT License +# +################################################################################ + +# Canonicalize by following every symlink of the given name recursively +canonicalize() { + NAME="$1" + if [ -f "$NAME" ] + then + DIR=$(dirname -- "$NAME") + NAME=$(cd -P "$DIR" > /dev/null && pwd -P)/$(basename -- "$NAME") + fi + while [ -h "$NAME" ]; do + DIR=$(dirname -- "$NAME") + SYM=$(readlink "$NAME") + NAME=$(cd "$DIR" > /dev/null && cd $(dirname -- "$SYM") > /dev/null && pwd)/$(basename -- "$SYM") + done + echo "$NAME" +} + +# Find a CLI version of PHP +findCliPhp() { + for TESTEXEC in php php-cli /usr/local/bin/php + do + SAPI=`echo "" | $TESTEXEC 2>/dev/null` + if [ "$SAPI" = "cli" ] + then + echo $TESTEXEC + return + fi + done + echo "Failed to find a CLI version of PHP; falling back to system standard php executable" >&2 + echo "php"; +} + +# If current path is a symlink, resolve to real path +realname="$0" +if [ -L "$realname" ] +then + realname=$(readlink -f "$0") +fi + +CONSOLE=$(dirname -- "$(canonicalize "$realname")") +APP=$(dirname "$CONSOLE") + +# If your CLI PHP is somewhere that this doesn't find, you can define a PHP environment +# variable with the correct path in it. +if [ -z "$PHP" ] +then + PHP=$(findCliPhp) +fi + +if [ $(basename $realname) != 'cake' ] +then + exec $PHP "$CONSOLE"/cake.php $(basename $realname) "$@" +else + exec $PHP "$CONSOLE"/cake.php "$@" +fi + +exit diff --git a/bin/cake.bat b/bin/cake.bat new file mode 100644 index 0000000..ad13782 --- /dev/null +++ b/bin/cake.bat @@ -0,0 +1,27 @@ +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Cake is a Windows batch script for invoking CakePHP shell commands +:: +:: CakePHP(tm) : Rapid Development Framework (https://cakephp.org) +:: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) +:: +:: Licensed under The MIT License +:: Redistributions of files must retain the above copyright notice. +:: +:: @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) +:: @link https://cakephp.org CakePHP(tm) Project +:: @since 2.0.0 +:: @license https://opensource.org/licenses/mit-license.php MIT License +:: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +@echo off + +SET app=%0 +SET lib=%~dp0 + +php "%lib%cake.php" %* + +echo. + +exit /B %ERRORLEVEL% diff --git a/bin/cake.php b/bin/cake.php new file mode 100644 index 0000000..320ee36 --- /dev/null +++ b/bin/cake.php @@ -0,0 +1,12 @@ +#!/usr/bin/php -q +run($argv)); diff --git a/bootstrap/app.php b/bootstrap/app.php deleted file mode 100644 index f2801ad..0000000 --- a/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -singleton( - Illuminate\Contracts\Http\Kernel::class, - App\Http\Kernel::class -); - -$app->singleton( - Illuminate\Contracts\Console\Kernel::class, - App\Console\Kernel::class -); - -$app->singleton( - Illuminate\Contracts\Debug\ExceptionHandler::class, - App\Exceptions\Handler::class -); - -/* -|-------------------------------------------------------------------------- -| Return The Application -|-------------------------------------------------------------------------- -| -| This script returns the application instance. The instance is given to -| the calling script so we can separate the building of the instances -| from the actual running of the application and sending responses. -| -*/ - -return $app; diff --git a/bootstrap/autoload.php b/bootstrap/autoload.php deleted file mode 100644 index 31e547f..0000000 --- a/bootstrap/autoload.php +++ /dev/null @@ -1,18 +0,0 @@ - \ No newline at end of file diff --git a/composer.json b/composer.json index 1472e53..3303dc0 100755 --- a/composer.json +++ b/composer.json @@ -1,52 +1,54 @@ { - "name": "laravel/laravel", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", + "name": "cakephp/app", + "description": "CakePHP skeleton app", + "homepage": "https://cakephp.org", "type": "project", + "license": "MIT", "require": { - "php": ">=5.6.4", - "laravel/framework": "5.4.*", - "laravel/tinker": "~1.0", - "loginradius/php-sdk": "^5.0.2" + "php": ">=5.6", + "cakephp/cakephp": "3.7.4", + "cakephp/migrations": "^2.0.0", + "cakephp/plugin-installer": "^1.0", + "loginradius/php-sdk": "^5.0.2", + "mobiledetect/mobiledetectlib": "2.*" }, "require-dev": { - "fzaninotto/faker": "~1.4", - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~5.7" + "cakephp/bake": "^1.9.0", + "cakephp/cakephp-codesniffer": "^3.0", + "cakephp/debug_kit": "^3.17.0", + "josegonzalez/dotenv": "3.*", + "phpunit/phpunit": "^5|^6", + "psy/psysh": "@stable" + }, + "suggest": { + "markstory/asset_compress": "An asset compression plugin which provides file concatenation and a flexible filter system for preprocessing and minification.", + "dereuromark/cakephp-ide-helper": "After baking your code, this keeps your annotations in sync with the code evolving from there on for maximum IDE and PHPStan compatibility." }, "autoload": { - "classmap": [ - "database" - ], "psr-4": { - "App\\": "app/" + "App\\": "src/" } }, "autoload-dev": { "psr-4": { - "Tests\\": "tests/" + "App\\Test\\": "tests/", + "Cake\\Test\\": "vendor/cakephp/cakephp/tests/" } }, "scripts": { - "post-root-package-install": [ - "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "php artisan key:generate" - ], - "post-install-cmd": [ - "Illuminate\\Foundation\\ComposerScripts::postInstall", - "php artisan optimize" + "post-install-cmd": "App\\Console\\Installer::postInstall", + "post-create-project-cmd": "App\\Console\\Installer::postInstall", + "post-autoload-dump": "Cake\\Composer\\Installer\\PluginInstaller::postAutoloadDump", + "check": [ + "@test", + "@cs-check" ], - "post-update-cmd": [ - "Illuminate\\Foundation\\ComposerScripts::postUpdate", - "php artisan optimize" - ] + "cs-check": "phpcs --colors -p --standard=vendor/cakephp/cakephp-codesniffer/CakePHP src/ tests/", + "cs-fix": "phpcbf --colors --standard=vendor/cakephp/cakephp-codesniffer/CakePHP src/ tests/", + "test": "phpunit --colors=always" }, + "prefer-stable": true, "config": { - "preferred-install": "dist", - "sort-packages": true, - "optimize-autoloader": true + "sort-packages": true } } diff --git a/composer.lock b/composer.lock index 920b757..c71fcc4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,71 +4,117 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2030e8869bbe238156bdc1d247d08206", + "content-hash": "439fdd9f5c66fdc3a96575c125b791df", "packages": [ { - "name": "dnoegel/php-xdg-base-dir", - "version": "0.1", + "name": "aura/intl", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" + "url": "https://github.com/auraphp/Aura.Intl.git", + "reference": "7fce228980b19bf4dee2d7bbd6202a69b0dde926" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", + "url": "https://api.github.com/repos/auraphp/Aura.Intl/zipball/7fce228980b19bf4dee2d7bbd6202a69b0dde926", + "reference": "7fce228980b19bf4dee2d7bbd6202a69b0dde926", "shasum": "" }, "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "@stable" + "php": "^5.6|^7.0" }, - "type": "project", + "type": "library", "autoload": { "psr-4": { - "XdgBaseDir\\": "src/" + "Aura\\Intl\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "implementation of xdg base directory specification for php", - "time": "2014-10-24T07:27:01+00:00" + "authors": [ + { + "name": "Aura.Intl Contributors", + "homepage": "https://github.com/auraphp/Aura.Intl/contributors" + } + ], + "description": "The Aura Intl package provides internationalization tools, specifically message translation.", + "homepage": "https://github.com/auraphp/Aura.Intl", + "keywords": [ + "g11n", + "globalization", + "i18n", + "internationalization", + "intl", + "l10n", + "localization" + ], + "time": "2017-01-20T05:00:11+00:00" }, { - "name": "doctrine/inflector", - "version": "v1.1.0", + "name": "cakephp/cakephp", + "version": "3.7.4", "source": { "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + "url": "https://github.com/cakephp/cakephp.git", + "reference": "5c78a61c0ed7fbd56ce9d7cee3c6d6f9b27af46b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "url": "https://api.github.com/repos/cakephp/cakephp/zipball/5c78a61c0ed7fbd56ce9d7cee3c6d6f9b27af46b", + "reference": "5c78a61c0ed7fbd56ce9d7cee3c6d6f9b27af46b", "shasum": "" }, "require": { - "php": ">=5.3.2" + "aura/intl": "^3.0.0", + "cakephp/chronos": "^1.0.1", + "ext-intl": "*", + "ext-mbstring": "*", + "php": ">=5.6.0", + "psr/log": "^1.0.0", + "psr/simple-cache": "^1.0.0", + "zendframework/zend-diactoros": "^1.4.0" + }, + "conflict": { + "phpunit/phpunit": "<5.7" + }, + "replace": { + "cakephp/cache": "self.version", + "cakephp/collection": "self.version", + "cakephp/core": "self.version", + "cakephp/database": "self.version", + "cakephp/datasource": "self.version", + "cakephp/event": "self.version", + "cakephp/filesystem": "self.version", + "cakephp/form": "self.version", + "cakephp/i18n": "self.version", + "cakephp/log": "self.version", + "cakephp/orm": "self.version", + "cakephp/utility": "self.version", + "cakephp/validation": "self.version" }, "require-dev": { - "phpunit/phpunit": "4.*" + "cakephp/cakephp-codesniffer": "^3.0", + "cakephp/chronos": "^1.2.1", + "phpunit/phpunit": "^5.7.14|^6.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } + "suggest": { + "ext-curl": "To enable more efficient network calls in Http\\Client.", + "ext-openssl": "To use Security::encrypt() or have secure CSRF token generation.", + "lib-ICU": "The intl PHP library, to use Text::transliterate() or Text::slug()" }, + "type": "library", "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" - } + "psr-4": { + "Cake\\": "src/" + }, + "files": [ + "src/Core/functions.php", + "src/Collection/functions.php", + "src/I18n/functions.php", + "src/Utility/bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -76,62 +122,57 @@ ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/cakephp/graphs/contributors" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", + "description": "The CakePHP framework", + "homepage": "https://cakephp.org", "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" + "conventions over configuration", + "dry", + "form", + "framework", + "mvc", + "orm", + "psr-7", + "rapid-development", + "validation" ], - "time": "2015-11-06T14:35:42+00:00" + "time": "2019-02-09T20:30:00+00:00" }, { - "name": "erusev/parsedown", - "version": "1.7.1", + "name": "cakephp/chronos", + "version": "1.2.4", "source": { "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" + "url": "https://github.com/cakephp/chronos.git", + "reference": "ebda7326d4a65e53bc5bb915ebbbeee98f1926b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "url": "https://api.github.com/repos/cakephp/chronos/zipball/ebda7326d4a65e53bc5bb915ebbbeee98f1926b0", + "reference": "ebda7326d4a65e53bc5bb915ebbbeee98f1926b0", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" + "php": "^5.5.9|^7" }, "require-dev": { - "phpunit/phpunit": "^4.8.35" + "athletic/athletic": "~0.1", + "cakephp/cakephp-codesniffer": "^3.0", + "phpbench/phpbench": "@dev", + "phpstan/phpstan": "^0.6.4", + "phpunit/phpunit": "<6.0 || ^7.0" }, "type": "library", "autoload": { - "psr-0": { - "Parsedown": "" - } + "psr-4": { + "Cake\\Chronos\\": "src/" + }, + "files": [ + "src/carbon_compat.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -139,91 +180,103 @@ ], "authors": [ { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + }, + { + "name": "The CakePHP Team", + "homepage": "http://cakephp.org" } ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", + "description": "A simple API extension for DateTime.", + "homepage": "http://cakephp.org", "keywords": [ - "markdown", - "parser" + "date", + "datetime", + "time" ], - "time": "2018-03-08T01:11:30+00:00" + "time": "2019-02-11T02:08:31+00:00" }, { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", + "name": "cakephp/migrations", + "version": "2.1.0", "source": { "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" + "url": "https://github.com/cakephp/migrations.git", + "reference": "b5148180a59b991dac3a74c3058dd5891dfc8961" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", + "url": "https://api.github.com/repos/cakephp/migrations/zipball/b5148180a59b991dac3a74c3058dd5891dfc8961", + "reference": "b5148180a59b991dac3a74c3058dd5891dfc8961", "shasum": "" }, "require": { - "php": ">=5.4.0" + "cakephp/cache": "^3.6.0", + "cakephp/orm": "^3.6.0", + "php": ">=5.6.0", + "robmorgan/phinx": "~0.10.3" }, "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" + "cakephp/bake": "^1.7.0", + "cakephp/cakephp": "^3.6.0", + "cakephp/cakephp-codesniffer": "^3.0", + "phpunit/phpunit": "^5.7.14|^6.0" }, - "type": "library", + "suggest": { + "cakephp/bake": "Required if you want to generate migrations." + }, + "type": "cakephp-plugin", "autoload": { "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" + "Migrations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "MIT" ], "authors": [ { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/migrations/graphs/contributors" } ], - "time": "2018-09-29T17:23:10+00:00" + "description": "Database Migration plugin for CakePHP 3.0 based on Phinx", + "homepage": "https://github.com/cakephp/migrations", + "keywords": [ + "cakephp", + "migrations" + ], + "time": "2018-12-25T19:49:39+00:00" }, { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", + "name": "cakephp/plugin-installer", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" + "url": "https://github.com/cakephp/plugin-installer.git", + "reference": "41373d0678490502f45adc7be88aa22d24ac1843" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", + "url": "https://api.github.com/repos/cakephp/plugin-installer/zipball/41373d0678490502f45adc7be88aa22d24ac1843", + "reference": "41373d0678490502f45adc7be88aa22d24ac1843", "shasum": "" }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" + "cakephp/cakephp-codesniffer": "dev-master", + "composer/composer": "1.0.*@dev", + "phpunit/phpunit": "^4.8|^5.7|^6.0" + }, + "type": "composer-installer", + "extra": { + "class": "Cake\\Composer\\Installer\\PluginInstaller" }, - "type": "library", "autoload": { "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" + "Cake\\Composer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -232,123 +285,34 @@ ], "authors": [ { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" + "name": "CakePHP Community", + "homepage": "http://cakephp.org" } ], - "description": "Highlight PHP code in terminal", - "time": "2018-09-29T18:48:56+00:00" + "description": "A composer installer for CakePHP 3.0+ plugins.", + "time": "2017-12-24T21:09:29+00:00" }, { - "name": "laravel/framework", - "version": "v5.4.36", + "name": "loginradius/php-sdk", + "version": "5.0.2", "source": { "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9" + "url": "https://github.com/LoginRadius/php-sdk.git", + "reference": "1c92982a8d41e070ba35093083ffd1c35f0492ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/1062a22232071c3e8636487c86ec1ae75681bbf9", - "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9", + "url": "https://api.github.com/repos/LoginRadius/php-sdk/zipball/1c92982a8d41e070ba35093083ffd1c35f0492ac", + "reference": "1c92982a8d41e070ba35093083ffd1c35f0492ac", "shasum": "" }, "require": { - "doctrine/inflector": "~1.1", - "erusev/parsedown": "~1.6", - "ext-mbstring": "*", - "ext-openssl": "*", - "league/flysystem": "~1.0", - "monolog/monolog": "~1.11", - "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "~1.20", - "paragonie/random_compat": "~1.4|~2.0", - "php": ">=5.6.4", - "ramsey/uuid": "~3.0", - "swiftmailer/swiftmailer": "~5.4", - "symfony/console": "~3.2", - "symfony/debug": "~3.2", - "symfony/finder": "~3.2", - "symfony/http-foundation": "~3.2", - "symfony/http-kernel": "~3.2", - "symfony/process": "~3.2", - "symfony/routing": "~3.2", - "symfony/var-dumper": "~3.2", - "tijsverkoyen/css-to-inline-styles": "~2.2", - "vlucas/phpdotenv": "~2.2" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/exception": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version", - "tightenco/collect": "self.version" - }, - "require-dev": { - "aws/aws-sdk-php": "~3.0", - "doctrine/dbal": "~2.5", - "mockery/mockery": "~0.9.4", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~5.7", - "predis/predis": "~1.0", - "symfony/css-selector": "~3.2", - "symfony/dom-crawler": "~3.2" - }, - "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", - "laravel/tinker": "Required to use the tinker console command (~1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "nexmo/client": "Required to use the Nexmo transport (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.2).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.2).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." + "php": ">=5.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-dev" - } - }, "autoload": { - "files": [ - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], "psr-4": { - "Illuminate\\": "src/Illuminate/" + "LoginRadiusSDK\\": "src/LoginRadiusSDK/" } }, "notification-url": "https://packagist.org/downloads/", @@ -357,60 +321,44 @@ ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" + "name": "LoginRadius Team", + "email": "developers@loginradius.com" } ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", + "description": "LoginRadius PHP SDK v5.0.2", "keywords": [ - "framework", - "laravel" + "loginradius", + "phpsdk" ], - "time": "2017-08-30T09:26:16+00:00" + "time": "2019-01-11T08:29:15+00:00" }, { - "name": "laravel/tinker", - "version": "v1.0.8", + "name": "mobiledetect/mobiledetectlib", + "version": "2.8.33", "source": { "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "cafbf598a90acde68985660e79b2b03c5609a405" + "url": "https://github.com/serbanghita/Mobile-Detect.git", + "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/cafbf598a90acde68985660e79b2b03c5609a405", - "reference": "cafbf598a90acde68985660e79b2b03c5609a405", + "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/cd385290f9a0d609d2eddd165a1e44ec1bf12102", + "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102", "shasum": "" }, "require": { - "illuminate/console": "~5.1", - "illuminate/contracts": "~5.1", - "illuminate/support": "~5.1", - "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*|0.9.*", - "symfony/var-dumper": "~3.0|~4.0" + "php": ">=5.0.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (~5.1)." + "phpunit/phpunit": "~4.8.35||~5.7" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Tinker\\TinkerServiceProvider" - ] - } - }, "autoload": { - "psr-4": { - "Laravel\\Tinker\\": "src/" + "classmap": [ + "Mobile_Detect.php" + ], + "psr-0": { + "Detection": "namespaced/" } }, "notification-url": "https://packagist.org/downloads/", @@ -419,69 +367,49 @@ ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" + "name": "Serban Ghita", + "email": "serbanghita@gmail.com", + "homepage": "http://mobiledetect.net", + "role": "Developer" } ], - "description": "Powerful REPL for the Laravel framework.", + "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.", + "homepage": "https://github.com/serbanghita/Mobile-Detect", "keywords": [ - "REPL", - "Tinker", - "laravel", - "psysh" + "detect mobile devices", + "mobile", + "mobile detect", + "mobile detector", + "php mobile detect" ], - "time": "2018-10-12T19:39:35+00:00" + "time": "2018-09-01T15:05:15+00:00" }, { - "name": "league/flysystem", - "version": "1.0.49", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a63cc83d8a931b271be45148fa39ba7156782ffd", - "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "php": ">=5.5.9" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" - }, - "require-dev": { - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7.10" - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "League\\Flysystem\\": "src/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -490,53 +418,48 @@ ], "authors": [ { - "name": "Frank de Jonge", - "email": "info@frenky.net" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Filesystem abstraction: Many filesystems, one API.", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" ], - "time": "2018-11-23T23:41:29+00:00" + "time": "2016-08-06T14:39:51+00:00" }, { - "name": "loginradius/php-sdk", - "version": "5.0.1", + "name": "psr/log", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/LoginRadius/php-sdk.git", - "reference": "bb6a821e7815018d1d189389c3305509f39c3136" + "url": "https://github.com/php-fig/log.git", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LoginRadius/php-sdk/zipball/bb6a821e7815018d1d189389c3305509f39c3136", - "reference": "bb6a821e7815018d1d189389c3305509f39c3136", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "LoginRadiusSDK\\": "src/LoginRadiusSDK/" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -545,73 +468,45 @@ ], "authors": [ { - "name": "LoginRadius Team", - "email": "developers@loginradius.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "LoginRadius PHP SDK v5.0.1", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "loginradius", - "phpsdk" + "log", + "psr", + "psr-3" ], - "time": "2018-10-15T11:24:51+00:00" + "time": "2018-11-20T15:27:04+00:00" }, { - "name": "monolog/monolog", - "version": "1.24.0", + "name": "psr/simple-cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Monolog\\": "src/Monolog" + "Psr\\SimpleCache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -620,44 +515,54 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "description": "Common interfaces for simple caching", "keywords": [ - "log", - "logging", - "psr-3" + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" ], - "time": "2018-11-05T09:00:11+00:00" + "time": "2017-10-23T01:57:42+00:00" }, { - "name": "mtdowling/cron-expression", - "version": "v1.2.1", + "name": "robmorgan/phinx", + "version": "0.10.6", "source": { "type": "git", - "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" + "url": "https://github.com/cakephp/phinx.git", + "reference": "f28a1c6ab1fa1f0295cddade9aea05eeb303bd2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", + "url": "https://api.github.com/repos/cakephp/phinx/zipball/f28a1c6ab1fa1f0295cddade9aea05eeb303bd2b", + "reference": "f28a1c6ab1fa1f0295cddade9aea05eeb303bd2b", "shasum": "" }, "require": { - "php": ">=5.3.2" + "cakephp/collection": "^3.6", + "cakephp/database": "^3.6", + "php": ">=5.6", + "symfony/config": "^2.8|^3.0|^4.0", + "symfony/console": "^2.8|^3.0|^4.0", + "symfony/yaml": "^2.8|^3.0|^4.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "cakephp/cakephp-codesniffer": "^3.0", + "phpunit/phpunit": ">=5.7", + "sebastian/comparator": ">=1.2.3" }, + "bin": [ + "bin/phinx" + ], "type": "library", "autoload": { "psr-4": { - "Cron\\": "src/Cron/" + "Phinx\\": "src/Phinx/" } }, "notification-url": "https://packagist.org/downloads/", @@ -666,55 +571,82 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com", + "homepage": "http://shadowhand.me", + "role": "Developer" + }, + { + "name": "Rob Morgan", + "email": "robbym@gmail.com", + "homepage": "https://robmorgan.id.au", + "role": "Lead Developer" + }, + { + "name": "Richard Quadling", + "email": "rquadling@gmail.com", + "role": "Developer" + }, + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/phinx/graphs/contributors" } ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "description": "Phinx makes it ridiculously easy to manage the database migrations for your PHP app.", + "homepage": "https://phinx.org", "keywords": [ - "cron", - "schedule" + "database", + "database migrations", + "db", + "migrations", + "phinx" ], - "time": "2017-01-23T04:29:33+00:00" + "time": "2018-08-12T17:22:43+00:00" }, { - "name": "nesbot/carbon", - "version": "1.36.1", + "name": "symfony/config", + "version": "v4.2.3", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983" + "url": "https://github.com/symfony/config.git", + "reference": "25a2e7abe0d97e70282537292e3df45cf6da7b98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/63da8cdf89d7a5efe43aabc794365f6e7b7b8983", - "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983", + "url": "https://api.github.com/repos/symfony/config/zipball/25a2e7abe0d97e70282537292e3df45cf6da7b98", + "reference": "25a2e7abe0d97e70282537292e3df45cf6da7b98", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/translation": "~2.6 || ~3.0 || ~4.0" + "php": "^7.1.3", + "symfony/filesystem": "~3.4|~4.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<3.4" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7" + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { - "friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.", - "phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors." + "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "extra": { - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] + "branch-alias": { + "dev-master": "4.2-dev" } }, "autoload": { "psr-4": { - "": "src/" - } + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -722,147 +654,131 @@ ], "authors": [ { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "time": "2018-11-22T18:23:02+00:00" + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2019-01-30T11:44:30+00:00" }, { - "name": "nikic/php-parser", - "version": "v3.1.5", + "name": "symfony/console", + "version": "v4.2.3", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce" + "url": "https://github.com/symfony/console.git", + "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", - "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", + "url": "https://api.github.com/repos/symfony/console/zipball/1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4", + "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.5" + "php": "^7.1.3", + "symfony/contracts": "^1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, - "bin": [ - "bin/php-parse" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.2-dev" } }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" - } + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2018-02-28T20:30:58+00:00" + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2019-01-25T14:35:16+00:00" }, { - "name": "paragonie/random_compat", - "version": "v2.0.17", + "name": "symfony/contracts", + "version": "v1.0.2", "source": { "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" + "url": "https://github.com/symfony/contracts.git", + "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", - "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", + "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", "shasum": "" }, "require": { - "php": ">=5.2.0" + "php": "^7.1.3" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*" + "psr/cache": "^1.0", + "psr/container": "^1.0" }, "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "time": "2018-07-04T16:31:37+00:00" - }, - { - "name": "psr/log", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" + "psr/cache": "When using the Cache contracts", + "psr/container": "When using the Service contracts", + "symfony/cache-contracts-implementation": "", + "symfony/service-contracts-implementation": "", + "symfony/translation-contracts-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } + "Symfony\\Contracts\\": "" + }, + "exclude-from-classmap": [ + "**/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -870,71 +786,57 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "A set of abstractions extracted out of the Symfony components", + "homepage": "https://symfony.com", "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2018-11-20T15:27:04+00:00" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2018-12-05T08:06:11+00:00" }, { - "name": "psy/psysh", - "version": "v0.9.9", + "name": "symfony/filesystem", + "version": "v4.2.3", "source": { "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e" + "url": "https://github.com/symfony/filesystem.git", + "reference": "7c16ebc2629827d4ec915a52ac809768d060a4ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", - "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7c16ebc2629827d4ec915a52ac809768d060a4ee", + "reference": "7c16ebc2629827d4ec915a52ac809768d060a4ee", "shasum": "" }, "require": { - "dnoegel/php-xdg-base-dir": "0.1", - "ext-json": "*", - "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" }, - "bin": [ - "bin/psysh" - ], "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.9.x-dev" + "dev-master": "4.2-dev" } }, "autoload": { - "files": [ - "src/functions.php" - ], "psr-4": { - "Psy\\": "src/" - } + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -942,74 +844,51 @@ ], "authors": [ { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "time": "2018-10-13T15:16:03+00:00" + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2019-01-16T20:35:37+00:00" }, { - "name": "ramsey/uuid", - "version": "3.8.0", + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", - "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", "shasum": "" }, "require": { - "paragonie/random_compat": "^1.0|^2.0|9.99.99", - "php": "^5.4 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "codeception/aspect-mock": "^1.0 | ~2.0.0", - "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", - "ircmaxell/random-lib": "^1.1", - "jakub-onderka/php-parallel-lint": "^0.9.0", - "mockery/mockery": "^0.9.9", - "moontoast/math": "^1.1", - "php-mock/php-mock-phpunit": "^0.3|^1.1", - "phpunit/phpunit": "^4.7|^5.0|^6.5", - "squizlabs/php_codesniffer": "^2.3" + "php": ">=5.3.3" }, "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "1.9-dev" } }, "autoload": { "psr-4": { - "Ramsey\\Uuid\\": "src/" - } + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1017,58 +896,56 @@ ], "authors": [ { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" }, { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" } ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", "keywords": [ - "guid", - "identifier", - "uuid" + "compatibility", + "ctype", + "polyfill", + "portable" ], - "time": "2018-07-19T23:38:55+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { - "name": "swiftmailer/swiftmailer", - "version": "v5.4.12", + "name": "symfony/polyfill-mbstring", + "version": "v1.10.0", "source": { "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", - "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.2" + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "1.9-dev" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, "files": [ - "lib/swift_required.php" + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1077,68 +954,61 @@ ], "authors": [ { - "name": "Chris Corbyn" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "email", - "mail", - "mailer" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], - "time": "2018-07-31T09:26:32+00:00" + "time": "2018-09-21T13:07:52+00:00" }, { - "name": "symfony/console", - "version": "v3.4.19", + "name": "symfony/yaml", + "version": "v4.2.3", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb" + "url": "https://github.com/symfony/yaml.git", + "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb", - "reference": "8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d461670ee145092b7e2a56c1da7118f19cadadb0", + "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" + "symfony/console": "<3.4" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" + "symfony/console": "~3.4|~4.0" }, "suggest": { - "psr/log-implementation": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "symfony/console": "For validating YAML files using the lint command" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Component\\Yaml\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1158,100 +1028,114 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2018-11-26T12:48:07+00:00" + "time": "2019-01-16T20:35:37+00:00" }, { - "name": "symfony/css-selector", - "version": "v3.4.19", + "name": "zendframework/zend-diactoros", + "version": "1.8.6", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8" + "url": "https://github.com/zendframework/zend-diactoros.git", + "reference": "20da13beba0dde8fb648be3cc19765732790f46e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/345b9a48595d1ab9630db791dbc3e721bf0233e8", - "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", + "reference": "20da13beba0dde8fb648be3cc19765732790f46e", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^5.6 || ^7.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-dom": "*", + "ext-libxml": "*", + "php-http/psr7-integration-tests": "dev-master", + "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", + "zendframework/zend-coding-standard": "~1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "1.8.x-dev", + "dev-develop": "1.9.x-dev", + "dev-release-2.0": "2.0.x-dev" } }, "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php" + ], "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Zend\\Diactoros\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-2-Clause" ], - "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } + "description": "PSR HTTP Message implementations", + "homepage": "https://github.com/zendframework/zend-diactoros", + "keywords": [ + "http", + "psr", + "psr-7" ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" - }, + "time": "2018-09-05T19:29:37+00:00" + } + ], + "packages-dev": [ { - "name": "symfony/debug", - "version": "v3.4.19", + "name": "ajgl/breakpoint-twig-extension", + "version": "0.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "2016b3eec2e49c127dd02d0ef44a35c53181560d" + "url": "https://github.com/ajgarlag/AjglBreakpointTwigExtension.git", + "reference": "bb419d13775d8fb5cd03b31012eaf496b31b444f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/2016b3eec2e49c127dd02d0ef44a35c53181560d", - "reference": "2016b3eec2e49c127dd02d0ef44a35c53181560d", + "url": "https://api.github.com/repos/ajgarlag/AjglBreakpointTwigExtension/zipball/bb419d13775d8fb5cd03b31012eaf496b31b444f", + "reference": "bb419d13775d8fb5cd03b31012eaf496b31b444f", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "php": ">=5.6", + "twig/twig": "^1.14|^2.0" }, "require-dev": { - "symfony/http-kernel": "~2.8|~3.0|~4.0" + "symfony/framework-bundle": "^2.7|^3.2|^4.1", + "symfony/phpunit-bridge": "^3.4|^4.1", + "symfony/twig-bundle": "^2.7|^3.2|^4.1" + }, + "suggest": { + "ext-xdebug": "The Xdebug extension is required for the breakpoint to work", + "symfony/framework-bundle": "The framework bundle to integrate the extension into Symfony", + "symfony/twig-bundle": "The twig bundle to integrate the extension into Symfony" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "0.3.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Ajgl\\Twig\\Extension\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1259,62 +1143,56 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Antonio J. García Lagar", + "email": "aj@garcialagar.es", + "homepage": "http://aj.garcialagar.es", + "role": "developer" } ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" + "description": "Twig extension to set breakpoints", + "homepage": "https://github.com/ajgarlag/AjglBreakpointTwigExtension", + "keywords": [ + "Xdebug", + "breakpoint", + "twig" + ], + "time": "2018-12-10T08:22:36+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v3.4.19", + "name": "aptoma/twig-markdown", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d365fc4416ec4980825873962ea5d1b1bca46f1a" + "url": "https://github.com/aptoma/twig-markdown.git", + "reference": "64a9c5c7418c08faf91c4410b34bdb65fb25c23d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d365fc4416ec4980825873962ea5d1b1bca46f1a", - "reference": "d365fc4416ec4980825873962ea5d1b1bca46f1a", + "url": "https://api.github.com/repos/aptoma/twig-markdown/zipball/64a9c5c7418c08faf91c4410b34bdb65fb25c23d", + "reference": "64a9c5c7418c08faf91c4410b34bdb65fb25c23d", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/dependency-injection": "<3.3" + "twig/twig": "~1.12" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0" + "codeclimate/php-test-reporter": "dev-master", + "erusev/parsedown": "^1.6", + "knplabs/github-api": "~1.2", + "league/commonmark": "~0.5", + "michelf/php-markdown": "~1", + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "~0.6" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "knplabs/github-api": "Needed for using GitHub's Markdown engine provided through their API.", + "michelf/php-markdown": "Original Markdown engine with MarkdownExtra." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "psr-0": { + "Aptoma": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1322,48 +1200,55 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Joris Berthelot", + "email": "joris@berthelot.tel" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Gunnar Lium", + "email": "gunnar@aptoma.com" } ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2018-11-26T10:17:44+00:00" + "description": "Twig extension to work with Markdown content", + "keywords": [ + "markdown", + "twig" + ], + "time": "2015-10-23T20:27:08+00:00" }, { - "name": "symfony/finder", - "version": "v3.4.19", + "name": "asm89/twig-cache-extension", + "version": "1.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442" + "url": "https://github.com/asm89/twig-cache-extension.git", + "reference": "630ea7abdc3fc62ba6786c02590a1560e449cf55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442", - "reference": "6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442", + "url": "https://api.github.com/repos/asm89/twig-cache-extension/zipball/630ea7abdc3fc62ba6786c02590a1560e449cf55", + "reference": "630ea7abdc3fc62ba6786c02590a1560e449cf55", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": ">=5.3.2", + "twig/twig": "^1.0|^2.0" + }, + "require-dev": { + "doctrine/cache": "~1.0" + }, + "suggest": { + "psr/cache-implementation": "To make use of PSR-6 cache implementation via PsrCacheAdapter." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "1.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "": "lib/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1371,53 +1256,48 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Alexander", + "email": "iam.asm89@gmail.com" } ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" + "description": "Cache fragments of templates directly within Twig.", + "homepage": "https://github.com/asm89/twig-cache-extension", + "keywords": [ + "cache", + "extension", + "twig" + ], + "time": "2017-01-10T22:04:15+00:00" }, { - "name": "symfony/http-foundation", - "version": "v3.4.19", + "name": "cakephp/bake", + "version": "1.9.2", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ea61dd57c4399b0b2a4162e1820cd9d0783acd38" + "url": "https://github.com/cakephp/bake.git", + "reference": "9949a6a867a17cf30996dfc9daceab1c63a7a9c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ea61dd57c4399b0b2a4162e1820cd9d0783acd38", - "reference": "ea61dd57c4399b0b2a4162e1820cd9d0783acd38", + "url": "https://api.github.com/repos/cakephp/bake/zipball/9949a6a867a17cf30996dfc9daceab1c63a7a9c1", + "reference": "9949a6a867a17cf30996dfc9daceab1c63a7a9c1", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php70": "~1.6" + "cakephp/cakephp": "^3.7.0", + "cakephp/plugin-installer": "^1.0", + "php": ">=5.6.0", + "wyrihaximus/twig-view": "^4.3.7" }, "require-dev": { - "symfony/expression-language": "~2.8|~3.0|~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } + "cakephp/cakephp-codesniffer": "^3.0", + "phpunit/phpunit": "^5.7.14|^6.0" }, + "type": "cakephp-plugin", "autoload": { "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Bake\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1425,88 +1305,44 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/bake/graphs/contributors" } ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com", - "time": "2018-11-26T10:17:44+00:00" + "description": "Bake plugin for CakePHP 3", + "homepage": "https://github.com/cakephp/bake", + "keywords": [ + "bake", + "cakephp" + ], + "time": "2019-01-02T12:59:40+00:00" }, { - "name": "symfony/http-kernel", - "version": "v3.4.19", + "name": "cakephp/cakephp-codesniffer", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "78528325d90e5ad54a6e9eca750fe176932bc4fa" + "url": "https://github.com/cakephp/cakephp-codesniffer.git", + "reference": "682e79fda294c4383e094a2a881e16dcf1130750" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/78528325d90e5ad54a6e9eca750fe176932bc4fa", - "reference": "78528325d90e5ad54a6e9eca750fe176932bc4fa", + "url": "https://api.github.com/repos/cakephp/cakephp-codesniffer/zipball/682e79fda294c4383e094a2a881e16dcf1130750", + "reference": "682e79fda294c4383e094a2a881e16dcf1130750", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", - "symfony/var-dumper": "<3.3", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" + "php": ">=5.6", + "squizlabs/php_codesniffer": "^3.0.0" }, "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "~2.8|~3.0|~4.0", - "symfony/class-loader": "~2.8|~3.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/console": "~2.8|~3.0|~4.0", - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "^3.4.10|^4.0.10", - "symfony/dom-crawler": "~2.8|~3.0|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0", - "symfony/templating": "~2.8|~3.0|~4.0", - "symfony/translation": "~2.8|~3.0|~4.0", - "symfony/var-dumper": "~3.3|~4.0" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "", - "symfony/var-dumper": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } + "phpunit/phpunit": "<6.0" }, + "type": "phpcodesniffer-standard", "autoload": { "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "CakePHP\\": "CakePHP" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1514,51 +1350,53 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/cakephp-codesniffer/graphs/contributors" } ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", - "time": "2018-11-26T14:04:48+00:00" + "description": "CakePHP CodeSniffer Standards", + "homepage": "http://cakephp.org", + "keywords": [ + "codesniffer", + "framework" + ], + "time": "2018-11-30T16:04:05+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.10.0", + "name": "cakephp/debug_kit", + "version": "3.17.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "url": "https://github.com/cakephp/debug_kit.git", + "reference": "6a9023ecc4ac0983c184cedf8e6142ab8ea4a3ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/cakephp/debug_kit/zipball/6a9023ecc4ac0983c184cedf8e6142ab8ea4a3ff", + "reference": "6a9023ecc4ac0983c184cedf8e6142ab8ea4a3ff", "shasum": "" }, "require": { - "php": ">=5.3.3" + "cakephp/cakephp": "^3.7.0", + "cakephp/chronos": "^1.0.0", + "cakephp/plugin-installer": "^1.0.0", + "composer/composer": "^1.3.0", + "jdorn/sql-formatter": "^1.2.0", + "php": ">=5.6.0" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "cakephp/cakephp-codesniffer": "^3.0", + "phpunit/phpunit": "^5.7.14|^6.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } + "suggest": { + "ext-pdo_sqlite": "DebugKit needs to store panel data in a database. SQLite is simple and easy to use." }, + "type": "cakephp-plugin", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] + "DebugKit\\": "src", + "DebugKit\\Test\\Fixture\\": "tests\\Fixture" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1566,57 +1404,58 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Mark Story", + "homepage": "http://mark-story.com", + "role": "Author" }, { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/debug_kit/graphs/contributors" } ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", + "description": "CakePHP Debug Kit", + "homepage": "https://github.com/cakephp/debug_kit", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "cakephp", + "debug", + "kit" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2018-12-02T03:27:26+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", + "name": "composer/ca-bundle", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + "url": "https://github.com/composer/ca-bundle.git", + "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d", + "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0" }, - "suggest": { - "ext-mbstring": "For best performance" + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] + "Composer\\CaBundle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1624,59 +1463,75 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-01-28T09:30:10+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.10.0", + "name": "composer/composer", + "version": "1.8.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" + "url": "https://github.com/composer/composer.git", + "reference": "bc364c2480c17941e2135cfc568fa41794392534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", - "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", + "url": "https://api.github.com/repos/composer/composer/zipball/bc364c2480c17941e2135cfc568fa41794392534", + "reference": "bc364c2480c17941e2135cfc568fa41794392534", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" + "composer/ca-bundle": "^1.0", + "composer/semver": "^1.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^1.1", + "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0" + }, + "conflict": { + "symfony/console": "2.8.38" }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7", + "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.8-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "Composer\\": "src/Composer" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1684,54 +1539,56 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "autoload", + "dependency", + "package" ], - "time": "2018-09-21T06:26:08+00:00" + "time": "2019-02-11T09:52:10+00:00" }, { - "name": "symfony/process", - "version": "v3.4.19", + "name": "composer/semver", + "version": "1.4.2", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2" + "url": "https://github.com/composer/semver.git", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2", - "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2", + "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5", + "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Composer\\Semver\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1739,70 +1596,61 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" } ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2018-11-20T16:10:26+00:00" + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "time": "2016-08-30T16:08:34+00:00" }, { - "name": "symfony/routing", - "version": "v3.4.19", + "name": "composer/spdx-licenses", + "version": "1.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "86eb1a581279b5e40ca280a4f63a15e37d51d16c" + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/86eb1a581279b5e40ca280a4f63a15e37d51d16c", - "reference": "86eb1a581279b5e40ca280a4f63a15e37d51d16c", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7a9556b22bd9d4df7cad89876b00af58ef20d3a2", + "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/config": "<3.3.1", - "symfony/dependency-injection": "<3.3", - "symfony/yaml": "<3.4" + "php": "^5.3.2 || ^7.0" }, "require-dev": { - "doctrine/annotations": "~1.0", - "psr/log": "~1.0", - "symfony/config": "^3.3.1|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~2.8|~3.0|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Composer\\Spdx\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1810,73 +1658,55 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" } ], - "description": "Symfony Routing Component", - "homepage": "https://symfony.com", + "description": "SPDX licenses list and validation library.", "keywords": [ - "router", - "routing", - "uri", - "url" + "license", + "spdx", + "validator" ], - "time": "2018-11-26T08:40:22+00:00" + "time": "2018-11-01T09:45:54+00:00" }, { - "name": "symfony/translation", - "version": "v3.4.19", + "name": "composer/xdebug-handler", + "version": "1.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "bdbe940ed3ef4179f86032086c32d3a858becc0f" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "d17708133b6c276d6e42ef887a877866b909d892" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/bdbe940ed3ef4179f86032086c32d3a858becc0f", - "reference": "bdbe940ed3ef4179f86032086c32d3a858becc0f", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", + "reference": "d17708133b6c276d6e42ef887a877866b909d892", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/intl": "^2.8.18|^3.2.5|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Composer\\XdebugHandler\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1884,219 +1714,176 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Symfony Translation Component", - "homepage": "https://symfony.com", - "time": "2018-11-26T10:17:44+00:00" + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2019-01-28T20:25:53+00:00" }, { - "name": "symfony/var-dumper", - "version": "v3.4.19", + "name": "dnoegel/php-xdg-base-dir", + "version": "0.1", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "6867713afe6c50ade2f34ed6435563b065a52145" + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6867713afe6c50ade2f34ed6435563b065a52145", - "reference": "6867713afe6c50ade2f34ed6435563b065a52145", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", + "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + "php": ">=5.3.2" }, "require-dev": { - "ext-iconv": "*", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "ext-symfony_debug": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } + "phpunit/phpunit": "@stable" }, + "type": "project", "autoload": { - "files": [ - "Resources/functions/dump.php" - ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "XdgBaseDir\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "time": "2018-11-20T16:10:26+00:00" + "description": "implementation of xdg base directory specification for php", + "time": "2014-10-24T07:27:01+00:00" }, { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.1", + "name": "doctrine/instantiator", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", - "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" } ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "time": "2017-11-27T11:13:29+00:00" + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" }, { - "name": "vlucas/phpdotenv", - "version": "v2.5.1", + "name": "jakub-onderka/php-console-color", + "version": "v0.2", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e" + "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", - "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.0" + "jakub-onderka/php-code-style": "1.0", + "jakub-onderka/php-parallel-lint": "1.0", + "jakub-onderka/php-var-dump-check": "0.*", + "phpunit/phpunit": "~4.3", + "squizlabs/php_codesniffer": "1.*" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, "autoload": { "psr-4": { - "Dotenv\\": "src/" + "JakubOnderka\\PhpConsoleColor\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "BSD-2-Clause" ], "authors": [ { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" + "name": "Jakub Onderka", + "email": "jakub.onderka@gmail.com" } ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "time": "2018-07-29T20:33:41+00:00" - } - ], - "packages-dev": [ + "time": "2018-09-29T17:23:10+00:00" + }, { - "name": "doctrine/instantiator", - "version": "1.0.5", + "name": "jakub-onderka/php-console-highlighter", + "version": "v0.4", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "ext-tokenizer": "*", + "jakub-onderka/php-console-color": "~0.2", + "php": ">=5.4.0" }, "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", + "jakub-onderka/php-code-style": "~1.0", + "jakub-onderka/php-parallel-lint": "~1.0", + "jakub-onderka/php-var-dump-check": "~0.1", "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "squizlabs/php_codesniffer": "~1.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + "JakubOnderka\\PhpConsoleHighlighter\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2105,50 +1892,46 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "name": "Jakub Onderka", + "email": "acci@acci.cz", + "homepage": "http://www.acci.cz/" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2015-06-14T21:17:01+00:00" + "description": "Highlight PHP code in terminal", + "time": "2018-09-29T18:48:56+00:00" }, { - "name": "fzaninotto/faker", - "version": "v1.8.0", + "name": "jasny/twig-extensions", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" + "url": "https://github.com/jasny/twig-extensions.git", + "reference": "30bdf3a3903c021544f36332c9d5d4d563527da4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", - "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", + "url": "https://api.github.com/repos/jasny/twig-extensions/zipball/30bdf3a3903c021544f36332c9d5d4d563527da4", + "reference": "30bdf3a3903c021544f36332c9d5d4d563527da4", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": ">=7.0.0 | >=5.6.0", + "twig/twig": "^2.0 | ^1.12" }, "require-dev": { "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^1.5" + "ext-pcre": "*", + "jasny/php-code-quality": "^2.1", + "phpunit/phpunit": "^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } + "suggest": { + "ext-intl": "Required for the use of the LocalDate Twig extension", + "ext-pcre": "Required for the use of the PCRE Twig extension" }, + "type": "library", "autoload": { "psr-4": { - "Faker\\": "src/Faker/" + "Jasny\\Twig\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2157,153 +1940,282 @@ ], "authors": [ { - "name": "François Zaninotto" + "name": "Arnold Daniels", + "email": "arnold@jasny.net", + "homepage": "http://www.jasny.net" } ], - "description": "Faker is a PHP library that generates fake data for you.", + "description": "A set of useful Twig filters", + "homepage": "http://github.com/jasny/twig-extensions#README", "keywords": [ - "data", - "faker", - "fixtures" + "PCRE", + "array", + "date", + "datetime", + "preg", + "regex", + "templating", + "text", + "time" ], - "time": "2018-07-12T10:23:15+00:00" + "time": "2017-09-13T07:38:01+00:00" }, { - "name": "hamcrest/hamcrest-php", - "version": "v1.2.2", + "name": "jdorn/sql-formatter", + "version": "v1.2.17", "source": { "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" + "url": "https://github.com/jdorn/sql-formatter.git", + "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", + "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", + "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", "shasum": "" }, "require": { - "php": ">=5.3.2" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" + "php": ">=5.2.4" }, "require-dev": { - "phpunit/php-file-iterator": "1.3.3", - "satooshi/php-coveralls": "dev-master" + "phpunit/phpunit": "3.7.*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, "autoload": { "classmap": [ - "hamcrest" - ], - "files": [ - "hamcrest/Hamcrest.php" + "lib" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "MIT" + ], + "authors": [ + { + "name": "Jeremy Dorn", + "email": "jeremy@jeremydorn.com", + "homepage": "http://jeremydorn.com/" + } ], - "description": "This is the PHP port of Hamcrest Matchers", + "description": "a PHP SQL highlighting library", + "homepage": "https://github.com/jdorn/sql-formatter/", "keywords": [ - "test" + "highlight", + "sql" ], - "time": "2015-05-11T14:41:42+00:00" + "time": "2014-01-12T16:20:24+00:00" }, { - "name": "mockery/mockery", - "version": "0.9.10", + "name": "josegonzalez/dotenv", + "version": "3.2.0", "source": { "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "4876fc0c7d9e5da49712554a35c94d84ed1e9ee5" + "url": "https://github.com/josegonzalez/php-dotenv.git", + "reference": "f19174d9d7213a6c20e8e5e268aa7dd042d821ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/4876fc0c7d9e5da49712554a35c94d84ed1e9ee5", - "reference": "4876fc0c7d9e5da49712554a35c94d84ed1e9ee5", + "url": "https://api.github.com/repos/josegonzalez/php-dotenv/zipball/f19174d9d7213a6c20e8e5e268aa7dd042d821ca", + "reference": "f19174d9d7213a6c20e8e5e268aa7dd042d821ca", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "~1.1", - "lib-pcre": ">=7.0", - "php": ">=5.3.2" + "m1/env": "2.*", + "php": ">=5.5.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "php-mock/php-mock-phpunit": "^1.1", + "satooshi/php-coveralls": "1.*", + "squizlabs/php_codesniffer": "2.*" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.9.x-dev" - } - }, "autoload": { "psr-0": { - "Mockery": "library/" + "josegonzalez\\Dotenv": [ + "src", + "tests" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "name": "Jose Diaz-Gonzalez", + "email": "dotenv@josegonzalez.com", + "homepage": "http://josediazgonzalez.com", + "role": "Maintainer" } ], - "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", - "homepage": "http://github.com/padraic/mockery", + "description": "dotenv file parsing for PHP", + "homepage": "https://github.com/josegonzalez/php-dotenv", "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" + "configuration", + "dotenv", + "php" ], - "time": "2018-11-13T20:50:16+00:00" + "time": "2017-09-19T15:49:58+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.7.0", + "name": "justinrainbow/json-schema", + "version": "5.2.8", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/dcb6e1006bb5fd1e392b4daa68932880f37550d4", + "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=5.3.3" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "friendsofphp/php-cs-fixer": "~2.2.20", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" }, + "bin": [ + "bin/validate-json" + ], "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2019-01-14T23:55:14+00:00" + }, + { + "name": "m1/env", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/m1/Env.git", + "reference": "294addeedf15e1149eeb96ec829f2029d2017d39" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/m1/Env/zipball/294addeedf15e1149eeb96ec829f2029d2017d39", + "reference": "294addeedf15e1149eeb96ec829f2029d2017d39", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*", + "scrutinizer/ocular": "~1.1", + "squizlabs/php_codesniffer": "^2.3" + }, + "suggest": { + "josegonzalez/dotenv": "For loading of .env", + "m1/vars": "For loading of configs" + }, + "type": "library", + "autoload": { + "psr-4": { + "M1\\Env\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Miles Croxford", + "email": "hello@milescroxford.com", + "homepage": "http://milescroxford.com", + "role": "Developer" + } + ], + "description": "Env is a lightweight library bringing .env file parser compatibility to PHP. In short - it enables you to read .env files with PHP.", + "homepage": "https://github.com/m1/Env", + "keywords": [ + ".env", + "config", + "dotenv", + "env", + "loader", + "m1", + "parser", + "support" + ], + "time": "2018-06-19T18:55:08+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" }, "files": [ "src/DeepCopy/deep_copy.php" @@ -2321,7 +2233,160 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2018-06-11T23:09:50+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.2.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "594bcae1fc0bccd3993d2f0d61a018e26ac2865a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/594bcae1fc0bccd3993d2f0d61a018e26ac2865a", + "reference": "594bcae1fc0bccd3993d2f0d61a018e26ac2865a", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5 || ^7.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2019-01-12T16:31:37+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05T18:14:27+00:00" + }, + { + "name": "phar-io/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2017-03-05T17:38:23+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2379,29 +2444,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.3.2", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0", + "php": "^7.0", "phpdocumentor/reflection-common": "^1.0.0", "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -2420,7 +2491,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-10T14:09:06+00:00" + "time": "2017-11-30T07:14:17+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -2534,40 +2605,40 @@ }, { "name": "phpunit/php-code-coverage", - "version": "4.0.8", + "version": "5.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^6.0" }, "suggest": { - "ext-xdebug": "^2.5.1" + "ext-xdebug": "^2.5.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "5.3.x-dev" } }, "autoload": { @@ -2582,7 +2653,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2593,7 +2664,7 @@ "testing", "xunit" ], - "time": "2017-04-02T07:44:40+00:00" + "time": "2018-04-06T15:36:58+00:00" }, { "name": "phpunit/php-file-iterator", @@ -2734,29 +2805,29 @@ }, { "name": "phpunit/php-token-stream", - "version": "1.4.12", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2779,20 +2850,20 @@ "keywords": [ "tokenizer" ], - "time": "2017-12-04T08:55:13+00:00" + "time": "2017-11-27T05:48:46+00:00" }, { "name": "phpunit/phpunit", - "version": "5.7.27", + "version": "6.5.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", "shasum": "" }, "require": { @@ -2801,33 +2872,35 @@ "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.4", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "^1.2.4", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.1", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "^1.0.6|^2.0.1", - "symfony/yaml": "~2.1|~3.0|~4.0" + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.9", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" }, "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" }, "require-dev": { "ext-pdo": "*" }, "suggest": { "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" + "phpunit/php-invoker": "^1.1" }, "bin": [ "phpunit" @@ -2835,7 +2908,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7.x-dev" + "dev-master": "6.5.x-dev" } }, "autoload": { @@ -2861,33 +2934,33 @@ "testing", "xunit" ], - "time": "2018-02-01T05:50:59+00:00" + "time": "2019-02-01T05:22:47+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", + "version": "5.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" }, "conflict": { - "phpunit/phpunit": "<5.4.0" + "phpunit/phpunit": "<6.0" }, "require-dev": { - "phpunit/phpunit": "^5.4" + "phpunit/phpunit": "^6.5.11" }, "suggest": { "ext-soap": "*" @@ -2895,7 +2968,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2.x-dev" + "dev-master": "5.0.x-dev" } }, "autoload": { @@ -2910,7 +2983,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2920,32 +2993,106 @@ "mock", "xunit" ], - "time": "2017-06-30T09:13:00+00:00" + "time": "2018-08-09T05:50:03+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", + "name": "psy/psysh", + "version": "v0.9.9", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "url": "https://github.com/bobthecow/psysh.git", + "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", + "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "dnoegel/php-xdg-base-dir": "0.1", + "ext-json": "*", + "ext-tokenizer": "*", + "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", + "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", + "php": ">=5.4.0", + "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", + "symfony/var-dumper": "~2.7|~3.0|~4.0" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "~2.15|~3.16", + "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", + "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." }, + "bin": [ + "bin/psysh" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-develop": "0.9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "time": "2018-10-13T15:16:03+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -2969,30 +3116,30 @@ }, { "name": "sebastian/comparator", - "version": "1.2.4", + "version": "2.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": "^7.0", + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { @@ -3023,38 +3170,38 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2018-02-01T13:46:46+00:00" }, { "name": "sebastian/diff", - "version": "1.4.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3081,32 +3228,32 @@ "keywords": [ "diff" ], - "time": "2017-05-22T07:24:03+00:00" + "time": "2017-08-03T08:09:46+00:00" }, { "name": "sebastian/environment", - "version": "2.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "phpunit/phpunit": "^6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -3131,34 +3278,34 @@ "environment", "hhvm" ], - "time": "2016-11-26T07:53:53+00:00" + "time": "2017-07-01T08:51:00+00:00" }, { "name": "sebastian/exporter", - "version": "2.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" + "php": "^7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -3198,27 +3345,27 @@ "export", "exporter" ], - "time": "2016-11-19T08:54:04+00:00" + "time": "2017-04-03T13:19:02+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.0" }, "suggest": { "ext-uopz": "*" @@ -3226,7 +3373,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3249,33 +3396,34 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2017-04-27T15:39:26+00:00" }, { "name": "sebastian/object-enumerator", - "version": "2.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", "shasum": "" }, "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -3295,32 +3443,77 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -3348,7 +3541,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" + "time": "2017-03-03T06:23:57+00:00" }, { "name": "sebastian/resource-operations", @@ -3436,41 +3629,351 @@ "time": "2016-10-03T07:35:21+00:00" }, { - "name": "symfony/yaml", - "version": "v3.4.19", + "name": "seld/jsonlint", + "version": "1.7.1", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "291e13d808bec481eab83f301f7bff3e699ef603" + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/291e13d808bec481eab83f301f7bff3e699ef603", - "reference": "291e13d808bec481eab83f301f7bff3e699ef603", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38", + "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-ctype": "~1.8" + "php": "^5.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2018-01-24T12:46:19+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", + "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phra" + ], + "time": "2015-10-13T18:44:15+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "379deb987e26c7cd103a7b387aea178baec96e48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48", + "reference": "379deb987e26c7cd103a7b387aea178baec96e48", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2018-12-19T23:57:18+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "ef71816cbb264988bb57fe6a73f610888b9aa70c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/ef71816cbb264988bb57fe6a73f610888b9aa70c", + "reference": "ef71816cbb264988bb57fe6a73f610888b9aa70c", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2019-01-16T20:35:37+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-09-21T13:07:52+00:00" + }, + { + "name": "symfony/process", + "version": "v4.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/6c05edb11fbeff9e2b324b4270ecb17911a8b7ad", + "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2019-01-24T22:05:03+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v4.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "223bda89f9be41cf7033eeaf11bc61a280489c17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/223bda89f9be41cf7033eeaf11bc61a280489c17", + "reference": "223bda89f9be41cf7033eeaf11bc61a280489c17", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5" }, "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", "symfony/console": "<3.4" }, "require-dev": { - "symfony/console": "~3.4|~4.0" + "ext-iconv": "*", + "symfony/console": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", + "twig/twig": "~1.34|~2.4" }, "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Symfony\\Component\\Yaml\\": "" + "Symfony\\Component\\VarDumper\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3482,34 +3985,186 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", + "description": "Symfony mechanism for exploring and dumping PHP variables", "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" + "keywords": [ + "debug", + "dump" + ], + "time": "2019-01-30T11:44:30+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" + }, + { + "name": "twig/twig", + "version": "v1.37.1", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "66be9366c76cbf23e82e7171d47cbfa54a057a62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/66be9366c76cbf23e82e7171d47cbfa54a057a62", + "reference": "66be9366c76cbf23e82e7171d47cbfa54a057a62", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.37-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://twig.symfony.com/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "time": "2019-01-14T14:59:29+00:00" + }, + { + "name": "umpirsky/twig-php-function", + "version": "v0.1", + "source": { + "type": "git", + "url": "https://github.com/umpirsky/twig-php-function.git", + "reference": "53b4b1eb0c5eacbd7d66c504b7d809c79b4bedbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/umpirsky/twig-php-function/zipball/53b4b1eb0c5eacbd7d66c504b7d809c79b4bedbc", + "reference": "53b4b1eb0c5eacbd7d66c504b7d809c79b4bedbc", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "twig/twig": "~1.12" + }, + "require-dev": { + "phpspec/phpspec": "~2.0", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "autoload": { + "psr-0": { + "Umpirsky\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Saša Stamenković", + "email": "umpirsky@gmail.com" + } + ], + "description": "Call (almost) any PHP function from your Twig templates.", + "time": "2016-03-12T16:36:32+00:00" }, { "name": "webmozart/assert", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "phpunit/phpunit": "^4.6", @@ -3542,16 +4197,76 @@ "check", "validate" ], - "time": "2018-01-29T19:49:41+00:00" + "time": "2018-12-25T11:19:39+00:00" + }, + { + "name": "wyrihaximus/twig-view", + "version": "4.3.8", + "source": { + "type": "git", + "url": "https://github.com/WyriHaximus/TwigView.git", + "reference": "a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WyriHaximus/TwigView/zipball/a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45", + "reference": "a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45", + "shasum": "" + }, + "require": { + "ajgl/breakpoint-twig-extension": "^0.3.0", + "aptoma/twig-markdown": "^2.0", + "asm89/twig-cache-extension": "^1.0", + "cakephp/cakephp": "^3.6", + "jasny/twig-extensions": "^1.0", + "php": "^5.6 || ^7.0", + "twig/twig": "^1.27", + "umpirsky/twig-php-function": "0.1" + }, + "require-dev": { + "cakephp/bake": "^1.5", + "cakephp/debug_kit": "^3.0", + "phake/phake": "^1.0.4", + "phpunit/phpunit": "^5.7.14", + "squizlabs/php_codesniffer": "^1.5.6", + "wyrihaximus/phpunit-class-reflection-helpers": "dev-master" + }, + "type": "cakephp-plugin", + "autoload": { + "psr-4": { + "WyriHaximus\\TwigView\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cees-Jan Kiewiet", + "email": "ceesjank@gmail.com", + "homepage": "http://wyrihaximus.net/" + } + ], + "description": "Twig powered View for CakePHP3", + "keywords": [ + "cakephp", + "cakephp3", + "twig", + "view" + ], + "time": "2018-12-17T21:08:25+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, + "stability-flags": { + "psy/psysh": 0 + }, + "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=5.6.4" + "php": ">=5.6" }, "platform-dev": [] } diff --git a/config/.env.default b/config/.env.default new file mode 100644 index 0000000..15060f7 --- /dev/null +++ b/config/.env.default @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +# Used as a default to seed config/.env which +# enables you to use environment variables to configure +# the aspects of your application that vary by +# environment. +# +# Having this file in production is considered a **SECURITY RISK** and also decreases +# the boostrap performance of your application. +# +# To use this file, first copy it into `config/.env`. Also ensure the related +# code block for loading this file is uncommented in `config/boostrap.php` +# +# In development .env files are parsed by PHP +# and set into the environment. This provides a simpler +# development workflow over standard environment variables. +export APP_NAME="__APP_NAME__" +export DEBUG="true" +export APP_ENCODING="UTF-8" +export APP_DEFAULT_LOCALE="en_US" +export APP_DEFAULT_TIMEZONE="UTC" +export SECURITY_SALT="__SALT__" + +# Uncomment these to define cache configuration via environment variables. +#export CACHE_DURATION="+2 minutes" +#export CACHE_DEFAULT_URL="file://tmp/cache/?prefix=${APP_NAME}_default&duration=${CACHE_DURATION}" +#export CACHE_CAKECORE_URL="file://tmp/cache/persistent?prefix=${APP_NAME}_cake_core&serialize=true&duration=${CACHE_DURATION}" +#export CACHE_CAKEMODEL_URL="file://tmp/cache/models?prefix=${APP_NAME}_cake_model&serialize=true&duration=${CACHE_DURATION}" + +# Uncomment these to define email transport configuration via environment variables. +#export EMAIL_TRANSPORT_DEFAULT_URL="" + +# Uncomment these to define database configuration via environment variables. +#export DATABASE_URL="mysql://my_app:secret@localhost/${APP_NAME}?encoding=utf8&timezone=UTC&cacheMetadata=true"eIdentifiers=false&persistent=false" +#export DATABASE_TEST_URL="mysql://my_app:secret@localhost/test_${APP_NAME}?encoding=utf8&timezone=UTC&cacheMetadata=true"eIdentifiers=false&persistent=false" + +# Uncomment these to define logging configuration via environment variables. +#export LOG_DEBUG_URL="file://logs/?levels[]=notice&levels[]=info&levels[]=debug&file=debug" +#export LOG_ERROR_URL="file://logs/?levels[]=warning&levels[]=error&levels[]=critical&levels[]=alert&levels[]=emergency&file=error" diff --git a/config/app.php b/config/app.php index 135e977..b7c2b81 100644 --- a/config/app.php +++ b/config/app.php @@ -1,231 +1,386 @@ filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN), + + /** + * Configure basic information about the application. + * + * - namespace - The namespace to find app classes under. + * - defaultLocale - The default locale for translation, formatting currencies and numbers, date and time. + * - encoding - The encoding used for HTML + database connections. + * - base - The base directory the app resides in. If false this + * will be auto detected. + * - dir - Name of app directory. + * - webroot - The webroot directory. + * - wwwRoot - The file path to webroot. + * - baseUrl - To configure CakePHP to *not* use mod_rewrite and to + * use CakePHP pretty URLs, remove these .htaccess + * files: + * /.htaccess + * /webroot/.htaccess + * And uncomment the baseUrl key below. + * - fullBaseUrl - A base URL to use for absolute links. When set to false (default) + * CakePHP generates required value based on `HTTP_HOST` environment variable. + * However, you can define it manually to optimize performance or if you + * are concerned about people manipulating the `Host` header. + * - imageBaseUrl - Web path to the public images directory under webroot. + * - cssBaseUrl - Web path to the public css directory under webroot. + * - jsBaseUrl - Web path to the public js directory under webroot. + * - paths - Configure paths for non class based resources. Supports the + * `plugins`, `templates`, `locales` subkeys, which allow the definition of + * paths for plugins, view templates and locale files respectively. + */ + 'App' => [ + 'namespace' => 'App', + 'encoding' => env('APP_ENCODING', 'UTF-8'), + 'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'), + 'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'UTC'), + 'base' => false, + 'dir' => 'src', + 'webroot' => 'webroot', + 'wwwRoot' => WWW_ROOT, + //'baseUrl' => env('SCRIPT_NAME'), + 'fullBaseUrl' => false, + 'imageBaseUrl' => 'img/', + 'cssBaseUrl' => 'css/', + 'jsBaseUrl' => 'js/', + 'paths' => [ + 'plugins' => [ROOT . DS . 'plugins' . DS], + 'templates' => [APP . 'Template' . DS], + 'locales' => [APP . 'Locale' . DS], + ], + ], + + /** + * Security and encryption configuration + * + * - salt - A random string used in security hashing methods. + * The salt value is also used as the encryption key. + * You should treat it as extremely sensitive data. + */ + 'Security' => [ + 'salt' => env('SECURITY_SALT', '__SALT__'), + ], - /* - |-------------------------------------------------------------------------- - | Application Name - |-------------------------------------------------------------------------- - | - | This value is the name of your application. This value is used when the - | framework needs to place the application's name in a notification or - | any other location as required by the application or its packages. - */ - - 'name' => env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services your application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - /* - |-------------------------------------------------------------------------- - | Application Timezone - |-------------------------------------------------------------------------- - | - | Here you may specify the default timezone for your application, which - | will be used by the PHP date and date-time functions. We have gone - | ahead and set this to a sensible default for you out of the box. - | - */ - - 'timezone' => 'UTC', - - /* - |-------------------------------------------------------------------------- - | Application Locale Configuration - |-------------------------------------------------------------------------- - | - | The application locale determines the default locale that will be used - | by the translation service provider. You are free to set this value - | to any of the locales which will be supported by the application. - | - */ - - 'locale' => 'en', - - /* - |-------------------------------------------------------------------------- - | Application Fallback Locale - |-------------------------------------------------------------------------- - | - | The fallback locale determines the locale to use when the current one - | is not available. You may change the value to correspond to any of - | the language folders that are provided through your application. - | - */ - - 'fallback_locale' => 'en', - - /* - |-------------------------------------------------------------------------- - | Encryption Key - |-------------------------------------------------------------------------- - | - | This key is used by the Illuminate encrypter service and should be set - | to a random, 32 character string, otherwise these encrypted strings - | will not be safe. Please do this before deploying an application! - | - */ - - 'key' => env('APP_KEY'), - - 'cipher' => 'AES-256-CBC', - - /* - |-------------------------------------------------------------------------- - | Logging Configuration - |-------------------------------------------------------------------------- - | - | Here you may configure the log settings for your application. Out of - | the box, Laravel uses the Monolog PHP logging library. This gives - | you a variety of powerful log handlers / formatters to utilize. - | - | Available Settings: "single", "daily", "syslog", "errorlog" - | - */ - - 'log' => env('APP_LOG', 'single'), - - 'log_level' => env('APP_LOG_LEVEL', 'debug'), - - /* - |-------------------------------------------------------------------------- - | Autoloaded Service Providers - |-------------------------------------------------------------------------- - | - | The service providers listed here will be automatically loaded on the - | request to your application. Feel free to add your own services to - | this array to grant expanded functionality to your applications. - | - */ - - 'providers' => [ - - /* - * Laravel Framework Service Providers... + /** + * Apply timestamps with the last modified time to static assets (js, css, images). + * Will append a querystring parameter containing the time the file was modified. + * This is useful for busting browser caches. + * + * Set to true to apply timestamps when debug is true. Set to 'force' to always + * enable timestamping regardless of debug value. + */ + 'Asset' => [ + //'timestamp' => true, + // 'cacheTime' => '+1 year' + ], + + /** + * Configure the cache adapters. + */ + 'Cache' => [ + 'default' => [ + 'className' => 'Cake\Cache\Engine\FileEngine', + 'path' => CACHE, + 'url' => env('CACHE_DEFAULT_URL', null), + ], + + /** + * Configure the cache used for general framework caching. + * Translation cache files are stored with this configuration. + * Duration will be set to '+2 minutes' in bootstrap.php when debug = true + * If you set 'className' => 'Null' core cache will be disabled. */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * Package Service Providers... + '_cake_core_' => [ + 'className' => 'Cake\Cache\Engine\FileEngine', + 'prefix' => 'myapp_cake_core_', + 'path' => CACHE . 'persistent/', + 'serialize' => true, + 'duration' => '+1 years', + 'url' => env('CACHE_CAKECORE_URL', null), + ], + + /** + * Configure the cache for model and datasource caches. This cache + * configuration is used to store schema descriptions, and table listings + * in connections. + * Duration will be set to '+2 minutes' in bootstrap.php when debug = true */ - Laravel\Tinker\TinkerServiceProvider::class, - - /* - * Application Service Providers... + '_cake_model_' => [ + 'className' => 'Cake\Cache\Engine\FileEngine', + 'prefix' => 'myapp_cake_model_', + 'path' => CACHE . 'models/', + 'serialize' => true, + 'duration' => '+1 years', + 'url' => env('CACHE_CAKEMODEL_URL', null), + ], + + /** + * Configure the cache for routes. The cached routes collection is built the + * first time the routes are processed via `config/routes.php`. + * Duration will be set to '+2 seconds' in bootstrap.php when debug = true */ - App\Providers\AppServiceProvider::class, - App\Providers\AuthServiceProvider::class, - // App\Providers\BroadcastServiceProvider::class, - App\Providers\EventServiceProvider::class, - App\Providers\RouteServiceProvider::class, + '_cake_routes_' => [ + 'className' => 'Cake\Cache\Engine\FileEngine', + 'prefix' => 'myapp_cake_routes_', + 'path' => CACHE, + 'serialize' => true, + 'duration' => '+1 years', + 'url' => env('CACHE_CAKEROUTES_URL', null), + ], + ], + /** + * Configure the Error and Exception handlers used by your application. + * + * By default errors are displayed using Debugger, when debug is true and logged + * by Cake\Log\Log when debug is false. + * + * In CLI environments exceptions will be printed to stderr with a backtrace. + * In web environments an HTML page will be displayed for the exception. + * With debug true, framework errors like Missing Controller will be displayed. + * When debug is false, framework errors will be coerced into generic HTTP errors. + * + * Options: + * + * - `errorLevel` - int - The level of errors you are interested in capturing. + * - `trace` - boolean - Whether or not backtraces should be included in + * logged errors/exceptions. + * - `log` - boolean - Whether or not you want exceptions logged. + * - `exceptionRenderer` - string - The class responsible for rendering + * uncaught exceptions. If you choose a custom class you should place + * the file for that class in src/Error. This class needs to implement a + * render method. + * - `skipLog` - array - List of exceptions to skip for logging. Exceptions that + * extend one of the listed exceptions will also be skipped for logging. + * E.g.: + * `'skipLog' => ['Cake\Http\Exception\NotFoundException', 'Cake\Http\Exception\UnauthorizedException']` + * - `extraFatalErrorMemory` - int - The number of megabytes to increase + * the memory limit by when a fatal error is encountered. This allows + * breathing room to complete logging or error handling. + */ + 'Error' => [ + 'errorLevel' => E_ALL, + 'exceptionRenderer' => 'Cake\Error\ExceptionRenderer', + 'skipLog' => [], + 'log' => true, + 'trace' => true, ], - /* - |-------------------------------------------------------------------------- - | Class Aliases - |-------------------------------------------------------------------------- - | - | This array of class aliases will be registered when this application - | is started. However, feel free to register as many as you wish as - | the aliases are "lazy" loaded so they don't hinder performance. - | - */ - - 'aliases' => [ - - 'App' => Illuminate\Support\Facades\App::class, - 'Artisan' => Illuminate\Support\Facades\Artisan::class, - 'Auth' => Illuminate\Support\Facades\Auth::class, - 'Blade' => Illuminate\Support\Facades\Blade::class, - 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, - 'Bus' => Illuminate\Support\Facades\Bus::class, - 'Cache' => Illuminate\Support\Facades\Cache::class, - 'Config' => Illuminate\Support\Facades\Config::class, - 'Cookie' => Illuminate\Support\Facades\Cookie::class, - 'Crypt' => Illuminate\Support\Facades\Crypt::class, - 'DB' => Illuminate\Support\Facades\DB::class, - 'Eloquent' => Illuminate\Database\Eloquent\Model::class, - 'Event' => Illuminate\Support\Facades\Event::class, - 'File' => Illuminate\Support\Facades\File::class, - 'Gate' => Illuminate\Support\Facades\Gate::class, - 'Hash' => Illuminate\Support\Facades\Hash::class, - 'Lang' => Illuminate\Support\Facades\Lang::class, - 'Log' => Illuminate\Support\Facades\Log::class, - 'Mail' => Illuminate\Support\Facades\Mail::class, - 'Notification' => Illuminate\Support\Facades\Notification::class, - 'Password' => Illuminate\Support\Facades\Password::class, - 'Queue' => Illuminate\Support\Facades\Queue::class, - 'Redirect' => Illuminate\Support\Facades\Redirect::class, - 'Redis' => Illuminate\Support\Facades\Redis::class, - 'Request' => Illuminate\Support\Facades\Request::class, - 'Response' => Illuminate\Support\Facades\Response::class, - 'Route' => Illuminate\Support\Facades\Route::class, - 'Schema' => Illuminate\Support\Facades\Schema::class, - 'Session' => Illuminate\Support\Facades\Session::class, - 'Storage' => Illuminate\Support\Facades\Storage::class, - 'URL' => Illuminate\Support\Facades\URL::class, - 'Validator' => Illuminate\Support\Facades\Validator::class, - 'View' => Illuminate\Support\Facades\View::class, + /** + * Email configuration. + * + * By defining transports separately from delivery profiles you can easily + * re-use transport configuration across multiple profiles. + * + * You can specify multiple configurations for production, development and + * testing. + * + * Each transport needs a `className`. Valid options are as follows: + * + * Mail - Send using PHP mail function + * Smtp - Send using SMTP + * Debug - Do not send the email, just return the result + * + * You can add custom transports (or override existing transports) by adding the + * appropriate file to src/Mailer/Transport. Transports should be named + * 'YourTransport.php', where 'Your' is the name of the transport. + */ + 'EmailTransport' => [ + 'default' => [ + 'className' => 'Cake\Mailer\Transport\MailTransport', + /* + * The following keys are used in SMTP transports: + */ + 'host' => 'localhost', + 'port' => 25, + 'timeout' => 30, + 'username' => null, + 'password' => null, + 'client' => null, + 'tls' => null, + 'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), + ], + ], + + /** + * Email delivery profiles + * + * Delivery profiles allow you to predefine various properties about email + * messages from your application and give the settings a name. This saves + * duplication across your application and makes maintenance and development + * easier. Each profile accepts a number of keys. See `Cake\Mailer\Email` + * for more information. + */ + 'Email' => [ + 'default' => [ + 'transport' => 'default', + 'from' => 'you@localhost', + //'charset' => 'utf-8', + //'headerCharset' => 'utf-8', + ], + ], + /** + * Connection information used by the ORM to connect + * to your application's datastores. + * + * ### Notes + * - Drivers include Mysql Postgres Sqlite Sqlserver + * See vendor\cakephp\cakephp\src\Database\Driver for complete list + * - Do not use periods in database name - it may lead to error. + * See https://github.com/cakephp/cakephp/issues/6471 for details. + * - 'encoding' is recommended to be set to full UTF-8 4-Byte support. + * E.g set it to 'utf8mb4' in MariaDB and MySQL and 'utf8' for any + * other RDBMS. + */ + 'Datasources' => [ + 'default' => [ + 'className' => 'Cake\Database\Connection', + 'driver' => 'Cake\Database\Driver\Mysql', + 'persistent' => false, + 'host' => 'localhost', + /* + * CakePHP will use the default DB port based on the driver selected + * MySQL on MAMP uses port 8889, MAMP users will want to uncomment + * the following line and set the port accordingly + */ + //'port' => 'non_standard_port_number', + 'username' => 'my_app', + 'password' => 'secret', + 'database' => 'my_app', + /* + * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6). + */ + //'encoding' => 'utf8mb4', + 'timezone' => 'UTC', + 'flags' => [], + 'cacheMetadata' => true, + 'log' => false, + + /** + * Set identifier quoting to true if you are using reserved words or + * special characters in your table or column names. Enabling this + * setting will result in queries built using the Query Builder having + * identifiers quoted when creating SQL. It should be noted that this + * decreases performance because each query needs to be traversed and + * manipulated before being executed. + */ + 'quoteIdentifiers' => false, + + /** + * During development, if using MySQL < 5.6, uncommenting the + * following line could boost the speed at which schema metadata is + * fetched from the database. It can also be set directly with the + * mysql configuration directive 'innodb_stats_on_metadata = 0' + * which is the recommended value in production environments + */ + //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], + + 'url' => env('DATABASE_URL', null), + ], + + /** + * The test connection is used during the test suite. + */ + 'test' => [ + 'className' => 'Cake\Database\Connection', + 'driver' => 'Cake\Database\Driver\Mysql', + 'persistent' => false, + 'host' => 'localhost', + //'port' => 'non_standard_port_number', + 'username' => 'my_app', + 'password' => 'secret', + 'database' => 'test_myapp', + //'encoding' => 'utf8mb4', + 'timezone' => 'UTC', + 'cacheMetadata' => true, + 'quoteIdentifiers' => false, + 'log' => false, + //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], + 'url' => env('DATABASE_TEST_URL', null), + ], ], + /** + * Configures logging options + */ + 'Log' => [ + 'debug' => [ + 'className' => 'Cake\Log\Engine\FileLog', + 'path' => LOGS, + 'file' => 'debug', + 'url' => env('LOG_DEBUG_URL', null), + 'scopes' => false, + 'levels' => ['notice', 'info', 'debug'], + ], + 'error' => [ + 'className' => 'Cake\Log\Engine\FileLog', + 'path' => LOGS, + 'file' => 'error', + 'url' => env('LOG_ERROR_URL', null), + 'scopes' => false, + 'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'], + ], + // To enable this dedicated query log, you need set your datasource's log flag to true + 'queries' => [ + 'className' => 'Cake\Log\Engine\FileLog', + 'path' => LOGS, + 'file' => 'queries', + 'url' => env('LOG_QUERIES_URL', null), + 'scopes' => ['queriesLog'], + ], + ], + + /** + * Session configuration. + * + * Contains an array of settings to use for session configuration. The + * `defaults` key is used to define a default preset to use for sessions, any + * settings declared here will override the settings of the default config. + * + * ## Options + * + * - `cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'. Avoid using `.` in cookie names, + * as PHP will drop sessions from cookies with `.` in the name. + * - `cookiePath` - The url path for which session cookie is set. Maps to the + * `session.cookie_path` php.ini config. Defaults to base path of app. + * - `timeout` - The time in minutes the session should be valid for. + * Pass 0 to disable checking timeout. + * Please note that php.ini's session.gc_maxlifetime must be equal to or greater + * than the largest Session['timeout'] in all served websites for it to have the + * desired effect. + * - `defaults` - The default configuration set to use as a basis for your session. + * There are four built-in options: php, cake, cache, database. + * - `handler` - Can be used to enable a custom session handler. Expects an + * array with at least the `engine` key, being the name of the Session engine + * class to use for managing the session. CakePHP bundles the `CacheSession` + * and `DatabaseSession` engines. + * - `ini` - An associative array of additional ini values to set. + * + * The built-in `defaults` options are: + * + * - 'php' - Uses settings defined in your php.ini. + * - 'cake' - Saves session files in CakePHP's /tmp directory. + * - 'database' - Uses CakePHP's database sessions. + * - 'cache' - Use the Cache class to save sessions. + * + * To define a custom session handler, save it at src/Network/Session/.php. + * Make sure the class implements PHP's `SessionHandlerInterface` and set + * Session.handler to + * + * To use database sessions, load the SQL file located at config/schema/sessions.sql + */ + 'Session' => [ + 'defaults' => 'php', + ], ]; diff --git a/config/auth.php b/config/auth.php deleted file mode 100644 index 7817501..0000000 --- a/config/auth.php +++ /dev/null @@ -1,102 +0,0 @@ - [ - 'guard' => 'web', - 'passwords' => 'users', - ], - - /* - |-------------------------------------------------------------------------- - | Authentication Guards - |-------------------------------------------------------------------------- - | - | Next, you may define every authentication guard for your application. - | Of course, a great default configuration has been defined for you - | here which uses session storage and the Eloquent user provider. - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | Supported: "session", "token" - | - */ - - 'guards' => [ - 'web' => [ - 'driver' => 'session', - 'provider' => 'users', - ], - - 'api' => [ - 'driver' => 'token', - 'provider' => 'users', - ], - ], - - /* - |-------------------------------------------------------------------------- - | User Providers - |-------------------------------------------------------------------------- - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | If you have multiple user tables or models you may configure multiple - | sources which represent each model / table. These sources may then - | be assigned to any extra authentication guards you have defined. - | - | Supported: "database", "eloquent" - | - */ - - 'providers' => [ - 'users' => [ - 'driver' => 'eloquent', - 'model' => App\User::class, - ], - - // 'users' => [ - // 'driver' => 'database', - // 'table' => 'users', - // ], - ], - - /* - |-------------------------------------------------------------------------- - | Resetting Passwords - |-------------------------------------------------------------------------- - | - | You may specify multiple password reset configurations if you have more - | than one user table or model in the application and you want to have - | separate password reset settings based on the specific user types. - | - | The expire time is the number of minutes that the reset token should be - | considered valid. This security feature keeps tokens short-lived so - | they have less time to be guessed. You may change this as needed. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - 'expire' => 60, - ], - ], - -]; diff --git a/config/bootstrap.php b/config/bootstrap.php new file mode 100644 index 0000000..1c266a4 --- /dev/null +++ b/config/bootstrap.php @@ -0,0 +1,203 @@ +parse() +// ->putenv() +// ->toEnv() +// ->toServer(); +// } + +/* + * Read configuration file and inject configuration into various + * CakePHP classes. + * + * By default there is only one configuration file. It is often a good + * idea to create multiple configuration files, and separate the configuration + * that changes from configuration that does not. This makes deployment simpler. + */ +try { + Configure::config('default', new PhpConfig()); + Configure::load('app', 'default', false); +} catch (\Exception $e) { + exit($e->getMessage() . "\n"); +} + +/* + * Load an environment local configuration file. + * You can use a file like app_local.php to provide local overrides to your + * shared configuration. + */ +//Configure::load('app_local', 'default'); + +/* + * When debug = true the metadata cache should only last + * for a short time. + */ +if (Configure::read('debug')) { + Configure::write('Cache._cake_model_.duration', '+2 minutes'); + Configure::write('Cache._cake_core_.duration', '+2 minutes'); + // disable router cache during development + Configure::write('Cache._cake_routes_.duration', '+2 seconds'); +} + +/* + * Set the default server timezone. Using UTC makes time calculations / conversions easier. + * Check http://php.net/manual/en/timezones.php for list of valid timezone strings. + */ +date_default_timezone_set(Configure::read('App.defaultTimezone')); + +/* + * Configure the mbstring extension to use the correct encoding. + */ +mb_internal_encoding(Configure::read('App.encoding')); + +/* + * Set the default locale. This controls how dates, number and currency is + * formatted and sets the default language to use for translations. + */ +ini_set('intl.default_locale', Configure::read('App.defaultLocale')); + +/* + * Register application error and exception handlers. + */ +$isCli = PHP_SAPI === 'cli'; +if ($isCli) { + (new ConsoleErrorHandler(Configure::read('Error')))->register(); +} else { + (new ErrorHandler(Configure::read('Error')))->register(); +} + +/* + * Include the CLI bootstrap overrides. + */ +if ($isCli) { + require __DIR__ . '/bootstrap_cli.php'; +} + +/* + * Set the full base URL. + * This URL is used as the base of all absolute links. + * + * If you define fullBaseUrl in your config file you can remove this. + */ +if (!Configure::read('App.fullBaseUrl')) { + $s = null; + if (env('HTTPS')) { + $s = 's'; + } + + $httpHost = env('HTTP_HOST'); + if (isset($httpHost)) { + Configure::write('App.fullBaseUrl', 'http' . $s . '://' . $httpHost); + } + unset($httpHost, $s); +} + +Cache::setConfig(Configure::consume('Cache')); +ConnectionManager::setConfig(Configure::consume('Datasources')); +TransportFactory::setConfig(Configure::consume('EmailTransport')); +Email::setConfig(Configure::consume('Email')); +Log::setConfig(Configure::consume('Log')); +Security::setSalt(Configure::consume('Security.salt')); + +/* + * The default crypto extension in 3.0 is OpenSSL. + * If you are migrating from 2.x uncomment this code to + * use a more compatible Mcrypt based implementation + */ +//Security::engine(new \Cake\Utility\Crypto\Mcrypt()); + +/* + * Setup detectors for mobile and tablet. + */ +ServerRequest::addDetector('mobile', function ($request) { + $detector = new \Detection\MobileDetect(); + + return $detector->isMobile(); +}); +ServerRequest::addDetector('tablet', function ($request) { + $detector = new \Detection\MobileDetect(); + + return $detector->isTablet(); +}); + +/* + * Enable immutable time objects in the ORM. + * + * You can enable default locale format parsing by adding calls + * to `useLocaleParser()`. This enables the automatic conversion of + * locale specific date formats. For details see + * @link https://book.cakephp.org/3.0/en/core-libraries/internationalization-and-localization.html#parsing-localized-datetime-data + */ +Type::build('time') + ->useImmutable(); +Type::build('date') + ->useImmutable(); +Type::build('datetime') + ->useImmutable(); +Type::build('timestamp') + ->useImmutable(); + +/* + * Custom Inflector rules, can be set to correctly pluralize or singularize + * table, model, controller names or whatever other string is passed to the + * inflection functions. + */ +//Inflector::rules('plural', ['/^(inflect)or$/i' => '\1ables']); +//Inflector::rules('irregular', ['red' => 'redlings']); +//Inflector::rules('uninflected', ['dontinflectme']); +//Inflector::rules('transliteration', ['/å/' => 'aa']); diff --git a/config/bootstrap_cli.php b/config/bootstrap_cli.php new file mode 100644 index 0000000..d3679d7 --- /dev/null +++ b/config/bootstrap_cli.php @@ -0,0 +1,28 @@ + env('BROADCAST_DRIVER', 'null'), - - /* - |-------------------------------------------------------------------------- - | Broadcast Connections - |-------------------------------------------------------------------------- - | - | Here you may define all of the broadcast connections that will be used - | to broadcast events to other systems or over websockets. Samples of - | each available type of connection are provided inside this array. - | - */ - - 'connections' => [ - - 'pusher' => [ - 'driver' => 'pusher', - 'key' => env('PUSHER_APP_KEY'), - 'secret' => env('PUSHER_APP_SECRET'), - 'app_id' => env('PUSHER_APP_ID'), - 'options' => [ - // - ], - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - ], - - 'log' => [ - 'driver' => 'log', - ], - - 'null' => [ - 'driver' => 'null', - ], - - ], - -]; diff --git a/config/cache.php b/config/cache.php deleted file mode 100644 index e87f032..0000000 --- a/config/cache.php +++ /dev/null @@ -1,91 +0,0 @@ - env('CACHE_DRIVER', 'file'), - - /* - |-------------------------------------------------------------------------- - | Cache Stores - |-------------------------------------------------------------------------- - | - | Here you may define all of the cache "stores" for your application as - | well as their drivers. You may even define multiple stores for the - | same cache driver to group types of items stored in your caches. - | - */ - - 'stores' => [ - - 'apc' => [ - 'driver' => 'apc', - ], - - 'array' => [ - 'driver' => 'array', - ], - - 'database' => [ - 'driver' => 'database', - 'table' => 'cache', - 'connection' => null, - ], - - 'file' => [ - 'driver' => 'file', - 'path' => storage_path('framework/cache/data'), - ], - - 'memcached' => [ - 'driver' => 'memcached', - 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), - 'sasl' => [ - env('MEMCACHED_USERNAME'), - env('MEMCACHED_PASSWORD'), - ], - 'options' => [ - // Memcached::OPT_CONNECT_TIMEOUT => 2000, - ], - 'servers' => [ - [ - 'host' => env('MEMCACHED_HOST', '127.0.0.1'), - 'port' => env('MEMCACHED_PORT', 11211), - 'weight' => 100, - ], - ], - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Cache Key Prefix - |-------------------------------------------------------------------------- - | - | When utilizing a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => 'laravel', - -]; diff --git a/config/database.php b/config/database.php deleted file mode 100644 index cab5d06..0000000 --- a/config/database.php +++ /dev/null @@ -1,120 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'strict' => true, - 'engine' => null, - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'schema' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Migration Repository Table - |-------------------------------------------------------------------------- - | - | This table keeps track of all the migrations that have already run for - | your application. Using this information, we can determine which of - | the migrations on disk haven't actually been run in the database. - | - */ - - 'migrations' => 'migrations', - - /* - |-------------------------------------------------------------------------- - | Redis Databases - |-------------------------------------------------------------------------- - | - | Redis is an open source, fast, and advanced key-value store that also - | provides a richer set of commands than a typical key-value systems - | such as APC or Memcached. Laravel makes it easy to dig right in. - | - */ - - 'redis' => [ - - 'client' => 'predis', - - 'default' => [ - 'host' => env('REDIS_HOST', '127.0.0.1'), - 'password' => env('REDIS_PASSWORD', null), - 'port' => env('REDIS_PORT', 6379), - 'database' => 0, - ], - - ], - -]; diff --git a/config/filesystems.php b/config/filesystems.php deleted file mode 100644 index 4544f60..0000000 --- a/config/filesystems.php +++ /dev/null @@ -1,68 +0,0 @@ - env('FILESYSTEM_DRIVER', 'local'), - - /* - |-------------------------------------------------------------------------- - | Default Cloud Filesystem Disk - |-------------------------------------------------------------------------- - | - | Many applications store files both locally and in the cloud. For this - | reason, you may specify a default "cloud" driver here. This driver - | will be bound as the Cloud disk implementation in the container. - | - */ - - 'cloud' => env('FILESYSTEM_CLOUD', 's3'), - - /* - |-------------------------------------------------------------------------- - | Filesystem Disks - |-------------------------------------------------------------------------- - | - | Here you may configure as many filesystem "disks" as you wish, and you - | may even configure multiple disks of the same driver. Defaults have - | been setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "s3", "rackspace" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - 's3' => [ - 'driver' => 's3', - 'key' => env('AWS_KEY'), - 'secret' => env('AWS_SECRET'), - 'region' => env('AWS_REGION'), - 'bucket' => env('AWS_BUCKET'), - ], - - ], - -]; diff --git a/config/mail.php b/config/mail.php deleted file mode 100644 index bb92224..0000000 --- a/config/mail.php +++ /dev/null @@ -1,123 +0,0 @@ - env('MAIL_DRIVER', 'smtp'), - - /* - |-------------------------------------------------------------------------- - | SMTP Host Address - |-------------------------------------------------------------------------- - | - | Here you may provide the host address of the SMTP server used by your - | applications. A default option is provided that is compatible with - | the Mailgun mail service which will provide reliable deliveries. - | - */ - - 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), - - /* - |-------------------------------------------------------------------------- - | SMTP Host Port - |-------------------------------------------------------------------------- - | - | This is the SMTP port used by your application to deliver e-mails to - | users of the application. Like the host we have set this value to - | stay compatible with the Mailgun e-mail application by default. - | - */ - - 'port' => env('MAIL_PORT', 587), - - /* - |-------------------------------------------------------------------------- - | Global "From" Address - |-------------------------------------------------------------------------- - | - | You may wish for all e-mails sent by your application to be sent from - | the same address. Here, you may specify a name and address that is - | used globally for all e-mails that are sent by your application. - | - */ - - 'from' => [ - 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), - 'name' => env('MAIL_FROM_NAME', 'Example'), - ], - - /* - |-------------------------------------------------------------------------- - | E-Mail Encryption Protocol - |-------------------------------------------------------------------------- - | - | Here you may specify the encryption protocol that should be used when - | the application send e-mail messages. A sensible default using the - | transport layer security protocol should provide great security. - | - */ - - 'encryption' => env('MAIL_ENCRYPTION', 'tls'), - - /* - |-------------------------------------------------------------------------- - | SMTP Server Username - |-------------------------------------------------------------------------- - | - | If your SMTP server requires a username for authentication, you should - | set it here. This will get used to authenticate with your server on - | connection. You may also set the "password" value below this one. - | - */ - - 'username' => env('MAIL_USERNAME'), - - 'password' => env('MAIL_PASSWORD'), - - /* - |-------------------------------------------------------------------------- - | Sendmail System Path - |-------------------------------------------------------------------------- - | - | When using the "sendmail" driver to send e-mails, we will need to know - | the path to where Sendmail lives on this server. A default path has - | been provided here, which will work well on most of your systems. - | - */ - - 'sendmail' => '/usr/sbin/sendmail -bs', - - /* - |-------------------------------------------------------------------------- - | Markdown Mail Settings - |-------------------------------------------------------------------------- - | - | If you are using Markdown based email rendering, you may configure your - | theme and component paths here, allowing you to customize the design - | of the emails. Or, you may simply stick with the Laravel defaults! - | - */ - - 'markdown' => [ - 'theme' => 'default', - - 'paths' => [ - resource_path('views/vendor/mail'), - ], - ], - -]; diff --git a/config/paths.php b/config/paths.php new file mode 100644 index 0000000..1c81215 --- /dev/null +++ b/config/paths.php @@ -0,0 +1,89 @@ + env('QUEUE_DRIVER', 'sync'), - - /* - |-------------------------------------------------------------------------- - | Queue Connections - |-------------------------------------------------------------------------- - | - | Here you may configure the connection information for each server that - | is used by your application. A default configuration has been added - | for each back-end shipped with Laravel. You are free to add more. - | - */ - - 'connections' => [ - - 'sync' => [ - 'driver' => 'sync', - ], - - 'database' => [ - 'driver' => 'database', - 'table' => 'jobs', - 'queue' => 'default', - 'retry_after' => 90, - ], - - 'beanstalkd' => [ - 'driver' => 'beanstalkd', - 'host' => 'localhost', - 'queue' => 'default', - 'retry_after' => 90, - ], - - 'sqs' => [ - 'driver' => 'sqs', - 'key' => 'your-public-key', - 'secret' => 'your-secret-key', - 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id', - 'queue' => 'your-queue-name', - 'region' => 'us-east-1', - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - 'queue' => 'default', - 'retry_after' => 90, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Failed Queue Jobs - |-------------------------------------------------------------------------- - | - | These options configure the behavior of failed queue job logging so you - | can control which database and table are used to store the jobs that - | have failed. You may change them to any database / table you wish. - | - */ - - 'failed' => [ - 'database' => env('DB_CONNECTION', 'mysql'), - 'table' => 'failed_jobs', - ], - -]; diff --git a/config/requirements.php b/config/requirements.php new file mode 100644 index 0000000..d5b180f --- /dev/null +++ b/config/requirements.php @@ -0,0 +1,39 @@ +registerMiddleware('csrf', new CsrfProtectionMiddleware([ + 'httpOnly' => true + + ])); + + /** + * Apply a middleware to the current route scope. + * Requires middleware to be registered via `Application::routes()` with `registerMiddleware()` + */ + $routes->applyMiddleware('csrf'); + /** + * view router + */ + + $routes->connect('/signup/*', ['controller' => 'Home', 'action' => 'registrationView']); + $routes->connect('/loginscreen/*', ['controller' => 'Home', 'action' => 'loginScreen']); + $routes->connect('/minimal/*', ['controller' => 'Home', 'action' => 'minimal']); + $routes->connect('/', ['controller' => 'Home', 'action' => 'minimal']); + $routes->connect('/profileview/*', ['controller' => 'Profile', 'action' => 'profileView']); + $routes->connect('/forgot/*', ['controller' => 'Home', 'action' => 'forgotPasswordView']); + $routes->connect('/changepasswordview/*', ['controller' => 'Profile', 'action' => 'changePasswordView']); + $routes->connect('/accountView/*', ['controller' => 'Profile', 'action' => ' accountView']); + $routes->connect('/setpasswordview/*', ['controller' => 'Profile', 'action' => ' setPasswordView']); + $routes->connect('/accountLinkingView/*', ['controller' => 'Profile', 'action' => 'accountLinkingView']); + $routes->connect('/customObjectView/*', ['controller' => 'Profile', 'action' => 'customObjectView']); + $routes->connect('/resetMultifactorView/*', ['controller' => 'Profile', 'action' => 'resetMultifactorView']); + $routes->connect('/roleView/*', ['controller' => 'Profile', 'action' => 'roleView']); + + + /** + * Here, we are connecting '/' (base path) to a controller called 'Pages', + * its action called 'display', and we pass a param to select the view file + * to use (in this case, src/Template/Pages/home.ctp)... + */ + $routes->connect('/registration/*', ['controller' => 'Home', 'action' => 'registration']); + $routes->connect('/login/*', ['controller' => 'Home', 'action' => 'login']); + $routes->connect('/profile/*', ['controller' => 'Profile', 'action' => 'profile']); + $routes->connect('/forgotpassword/*', ['controller' => 'Home', 'action' => 'forgotPassword']); + $routes->connect('/resetpassword/*', ['controller' => 'Home', 'action' => 'resetPassword']); + + /** + * ...and connect the rest of 'Pages' controller's URLs. + */ + $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']); + + /** + * Connect catchall routes for all controllers. + * + * Using the argument `DashedRoute`, the `fallbacks` method is a shortcut for + * + * ``` + * $routes->connect('/:controller', ['action' => 'index'], ['routeClass' => 'DashedRoute']); + * $routes->connect('/:controller/:action/*', [], ['routeClass' => 'DashedRoute']); + * ``` + * + * Any route class can be used with this method, such as: + * - DashedRoute + * - InflectedRoute + * - Route + * - Or your own route class + * + * You can remove these routes once you've connected the + * routes you want in your application. + */ + $routes->fallbacks(DashedRoute::class); +}); + +/** + * If you need a different set of middleware or none at all, + * open new scope and define routes there. + * + * ``` + * Router::scope('/api', function (RouteBuilder $routes) { + * // No $routes->applyMiddleware() here. + * // Connect API actions here. + * }); + * ``` + */ diff --git a/config/schema/i18n.sql b/config/schema/i18n.sql new file mode 100644 index 0000000..e59d1e6 --- /dev/null +++ b/config/schema/i18n.sql @@ -0,0 +1,18 @@ +# Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) +# +# Licensed under The MIT License +# For full copyright and license information, please see the LICENSE.txt +# Redistributions of files must retain the above copyright notice. +# MIT License (https://opensource.org/licenses/mit-license.php) + +CREATE TABLE i18n ( + id int NOT NULL auto_increment, + locale varchar(6) NOT NULL, + model varchar(255) NOT NULL, + foreign_key int(10) NOT NULL, + field varchar(255) NOT NULL, + content text, + PRIMARY KEY (id), + UNIQUE INDEX I18N_LOCALE_FIELD(locale, model, foreign_key, field), + INDEX I18N_FIELD(model, foreign_key, field) +); diff --git a/config/schema/sessions.sql b/config/schema/sessions.sql new file mode 100644 index 0000000..1aa0a0f --- /dev/null +++ b/config/schema/sessions.sql @@ -0,0 +1,15 @@ +# Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) +# +# Licensed under The MIT License +# For full copyright and license information, please see the LICENSE.txt +# Redistributions of files must retain the above copyright notice. +# MIT License (https://opensource.org/licenses/mit-license.php) + +CREATE TABLE `sessions` ( + `id` char(40) CHARACTER SET ascii COLLATE ascii_bin NOT NULL, + `created` datetime DEFAULT CURRENT_TIMESTAMP, -- optional, requires MySQL 5.6.5+ + `modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- optional, requires MySQL 5.6.5+ + `data` blob DEFAULT NULL, -- for PostgreSQL use bytea instead of blob + `expires` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/config/services.php b/config/services.php deleted file mode 100644 index 4460f0e..0000000 --- a/config/services.php +++ /dev/null @@ -1,38 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - ], - - 'ses' => [ - 'key' => env('SES_KEY'), - 'secret' => env('SES_SECRET'), - 'region' => 'us-east-1', - ], - - 'sparkpost' => [ - 'secret' => env('SPARKPOST_SECRET'), - ], - - 'stripe' => [ - 'model' => App\User::class, - 'key' => env('STRIPE_KEY'), - 'secret' => env('STRIPE_SECRET'), - ], - -]; diff --git a/config/session.php b/config/session.php deleted file mode 100644 index e2779ad..0000000 --- a/config/session.php +++ /dev/null @@ -1,179 +0,0 @@ - env('SESSION_DRIVER', 'file'), - - /* - |-------------------------------------------------------------------------- - | Session Lifetime - |-------------------------------------------------------------------------- - | - | Here you may specify the number of minutes that you wish the session - | to be allowed to remain idle before it expires. If you want them - | to immediately expire on the browser closing, set that option. - | - */ - - 'lifetime' => 120, - - 'expire_on_close' => false, - - /* - |-------------------------------------------------------------------------- - | Session Encryption - |-------------------------------------------------------------------------- - | - | This option allows you to easily specify that all of your session data - | should be encrypted before it is stored. All encryption will be run - | automatically by Laravel and you can use the Session like normal. - | - */ - - 'encrypt' => false, - - /* - |-------------------------------------------------------------------------- - | Session File Location - |-------------------------------------------------------------------------- - | - | When using the native session driver, we need a location where session - | files may be stored. A default has been set for you but a different - | location may be specified. This is only needed for file sessions. - | - */ - - 'files' => storage_path('framework/sessions'), - - /* - |-------------------------------------------------------------------------- - | Session Database Connection - |-------------------------------------------------------------------------- - | - | When using the "database" or "redis" session drivers, you may specify a - | connection that should be used to manage these sessions. This should - | correspond to a connection in your database configuration options. - | - */ - - 'connection' => null, - - /* - |-------------------------------------------------------------------------- - | Session Database Table - |-------------------------------------------------------------------------- - | - | When using the "database" session driver, you may specify the table we - | should use to manage the sessions. Of course, a sensible default is - | provided for you; however, you are free to change this as needed. - | - */ - - 'table' => 'sessions', - - /* - |-------------------------------------------------------------------------- - | Session Cache Store - |-------------------------------------------------------------------------- - | - | When using the "apc" or "memcached" session drivers, you may specify a - | cache store that should be used for these sessions. This value must - | correspond with one of the application's configured cache stores. - | - */ - - 'store' => null, - - /* - |-------------------------------------------------------------------------- - | Session Sweeping Lottery - |-------------------------------------------------------------------------- - | - | Some session drivers must manually sweep their storage location to get - | rid of old sessions from storage. Here are the chances that it will - | happen on a given request. By default, the odds are 2 out of 100. - | - */ - - 'lottery' => [2, 100], - - /* - |-------------------------------------------------------------------------- - | Session Cookie Name - |-------------------------------------------------------------------------- - | - | Here you may change the name of the cookie used to identify a session - | instance by ID. The name specified here will get used every time a - | new session cookie is created by the framework for every driver. - | - */ - - 'cookie' => 'laravel_session', - - /* - |-------------------------------------------------------------------------- - | Session Cookie Path - |-------------------------------------------------------------------------- - | - | The session cookie path determines the path for which the cookie will - | be regarded as available. Typically, this will be the root path of - | your application but you are free to change this when necessary. - | - */ - - 'path' => '/', - - /* - |-------------------------------------------------------------------------- - | Session Cookie Domain - |-------------------------------------------------------------------------- - | - | Here you may change the domain of the cookie used to identify a session - | in your application. This will determine which domains the cookie is - | available to in your application. A sensible default has been set. - | - */ - - 'domain' => env('SESSION_DOMAIN', null), - - /* - |-------------------------------------------------------------------------- - | HTTPS Only Cookies - |-------------------------------------------------------------------------- - | - | By setting this option to true, session cookies will only be sent back - | to the server if the browser has a HTTPS connection. This will keep - | the cookie from being sent to you if it can not be done securely. - | - */ - - 'secure' => env('SESSION_SECURE_COOKIE', false), - - /* - |-------------------------------------------------------------------------- - | HTTP Access Only - |-------------------------------------------------------------------------- - | - | Setting this value to true will prevent JavaScript from accessing the - | value of the cookie and the cookie will only be accessible through - | the HTTP protocol. You are free to modify this option if needed. - | - */ - - 'http_only' => true, - -]; diff --git a/config/view.php b/config/view.php deleted file mode 100644 index 2acfd9c..0000000 --- a/config/view.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - resource_path('views'), - ], - - /* - |-------------------------------------------------------------------------- - | Compiled View Path - |-------------------------------------------------------------------------- - | - | This option determines where all the compiled Blade templates will be - | stored for your application. Typically, this is within the storage - | directory. However, as usual, you are free to change this value. - | - */ - - 'compiled' => realpath(storage_path('framework/views')), - -]; diff --git a/database/.gitignore b/database/.gitignore deleted file mode 100644 index 9b1dffd..0000000 --- a/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php deleted file mode 100644 index 7926c79..0000000 --- a/database/factories/ModelFactory.php +++ /dev/null @@ -1,24 +0,0 @@ -define(App\User::class, function (Faker\Generator $faker) { - static $password; - - return [ - 'name' => $faker->name, - 'email' => $faker->unique()->safeEmail, - 'password' => $password ?: $password = bcrypt('secret'), - 'remember_token' => str_random(10), - ]; -}); diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index 689cbee..0000000 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,35 +0,0 @@ -increments('id'); - $table->string('name'); - $table->string('email')->unique(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -} diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0d5cb84..0000000 --- a/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php deleted file mode 100644 index e119db6..0000000 --- a/database/seeds/DatabaseSeeder.php +++ /dev/null @@ -1,16 +0,0 @@ -call(UsersTableSeeder::class); - } -} diff --git a/demo-php-framework (1).zip b/demo-php-framework (1).zip index 904723acfecfdbe5c969dc01fe7b57e5ca96259f..4a7390778268d466b8d35ead2022038a18aff53c 100644 GIT binary patch delta 382861 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

L2o;q?fVH0j;&>= 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%0DE9A{0PP8dWQEJG-ys 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

ZozW@7y81)7OQYw16FkG>Cq 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

Nr};t&Ow=Xfm+v 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

U z9A#RnT76jm4Hq?ZG{nxjn<)-Y6-Wv#=r~kYyuII6JJ=;P#dg_)6Ezy=E~4|}Gg@RU z;53>o)#&vFU##FOa{&}oJzS&D%hsCv9L-ENNNCaZ4>%=SB72wT@-g?3E|jQGh7pQ# z{A}`2ElIQ15Y085a2hoQ9EaRRHCxGc+|o4-3{kg78yj{x^$aw{t3p267^rJU;`O`BnOJ&h ziJMcHs7Vk4C(>e`LdhW0HBG&s(Pp=oQt%7G)>`NqtyA2h$XE~}%`42qb|tE?xx@Yt z!r018UE3hiU6oJef*Fq1sp!~mq)1LLR4iSmaAA!kdHn75`l4N!>kBS}US))MfWGeY z&)(LmQO+%)DmMyFoTgGeQpf$(WrV~7JJkX#_{n$@QVUWo76FtAxZiR=N!h{I=L!V| zs6b7X9a(tOB`yCxWb)i-zKy?RBZ1_+@@%Jn^vz&lO(gkMQA{B=)t5XM z1xC~3oG|tRI}x6=VoL5&1aMGFZ~qCsB!upRmC9z}c=fZo%ayma&u;(w8+7LTAcIEYg}b4#h+7xGN@j06W7uW zkyNZKd*b2y+??XM}|wo4|4`kBGxB zeDI{T4T9=+-&IY(j!i{eT9sx#kRjY@R!3CQSKv^Il!v_n8;Ut0NYnRsn3|Dd6& zgs|dbJ>l{6p_(`z)orE?-7{7;CTo>67VHhM-D@8YR67OlgwbB?O}T15{eYX+Y3Rid&3#su|ZB%%*9u^#08@>HlDPW zNf0s|9m)!SDjip3l6T#Mc8VYo&Y=-CDVgW5R*)}zD+GIo6e%$>Q=(8pGX`l^k4iRy z(=heMs_qYd9S@vJboop1m46Dg^Hx+<6>}p%lvd^?wb|g?LU=%mxL>v!>5nDnm6IApFU+SpwI&H!FhiJ!*5IzgB zkUXJ}zqI<@j5bh_IL(RT<)V2y;8X|l_|qX5PUW5Pz8uKs!yW;_*Pc)%7EiNl| zRcUk10=HBa7*ZkUeT#=rx<&nDqAB`TmIN;>*O-h&#Q!QhFWsxs}PacklxIhzTPGqd}P-S zA9R;LK0)@o#EyV}LGXLRtBoNP#t4nOPnZvg6zU~@AI_!XPmd|@t`@FIo8iT8xoq=j z*Ap@*&NdoBJ;1DEix#Yir$#3AWnPDHcusfwCa9*{LB!Mbrzd58Gi=i$5rnWU;Eo}$ z-0qbzN{VDju3m&NxW-Ph8}p~JX%~6GqeJR9r(83Lm&ihNHUiS-5Og{T?K9#CVvQAR zZL*ZG2`!(lgaeWlMs_uE-rCxgWHc>|!jh54x(R@)C>o-9>aHry9bt#_Zc% zQPdqY`0Ct7cX;5-w{%-o%o~*>s)oX`IPvw138R(TpdtwCDIkycbf7^{?n#Av`%Ux# zN~Fgccn)=m;ba`=KfhR+?BMNL(d;TmiP?IX(*j935d^ZbXKanQjdQZQoJD_@^+Dr~ zJuC>o69PlJ?-}3;in@26tsG8Q;07We+QEqah?xHNzGmEFZ9Xy6vq%4#pM$8I>No|@ zG#ynY<^F=|5X!15!UA4*qDGTUk|ioVce9(&`8zk_R(rP%DyXBvFG9`b_-et8qpaPQ z&jH|c#Hk}~B1r=se>N wuNwcgT+!hjH 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

Q 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

1$h|?5ls9TrCMuG| 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 g{PhYYJ8=tDmO}+L32@#8|41_ - - - - ./tests/Feature - - - - ./tests/Unit - - - - - ./app - - - - - - - - - diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..ba971b6 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,41 @@ + + + + + + + + + + + tests/TestCase/ + + + + + + + + + + + + + + + + + src/ + plugins/*/src/ + + src/Console/Installer.php + + + + diff --git a/public/favicon.ico b/plugins/empty similarity index 100% rename from public/favicon.ico rename to plugins/empty diff --git a/public/.htaccess b/public/.htaccess deleted file mode 100644 index 903f639..0000000 --- a/public/.htaccess +++ /dev/null @@ -1,20 +0,0 @@ - - - Options -MultiViews - - - RewriteEngine On - - # Redirect Trailing Slashes If Not A Folder... - RewriteCond %{REQUEST_FILENAME} !-d - RewriteRule ^(.*)/$ /$1 [L,R=301] - - # Handle Front Controller... - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^ index.php [L] - - # Handle Authorization Header - RewriteCond %{HTTP:Authorization} . - RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] - diff --git a/public/index.php b/public/index.php deleted file mode 100644 index 1e1d775..0000000 --- a/public/index.php +++ /dev/null @@ -1,58 +0,0 @@ - - */ - -/* -|-------------------------------------------------------------------------- -| Register The Auto Loader -|-------------------------------------------------------------------------- -| -| Composer provides a convenient, automatically generated class loader for -| our application. We just need to utilize it! We'll simply require it -| into the script here so that we don't have to worry about manual -| loading any of our classes later on. It feels great to relax. -| -*/ - -require __DIR__.'/../bootstrap/autoload.php'; - -/* -|-------------------------------------------------------------------------- -| Turn On The Lights -|-------------------------------------------------------------------------- -| -| We need to illuminate PHP development, so let us turn on the lights. -| This bootstraps the framework and gets it ready for use, then it -| will load up this application so that we can run it and send -| the responses back to the browser and delight our users. -| -*/ - -$app = require_once __DIR__.'/../bootstrap/app.php'; - -/* -|-------------------------------------------------------------------------- -| Run The Application -|-------------------------------------------------------------------------- -| -| Once we have the application, we can handle the incoming request -| through the kernel, and send the associated response back to -| the client's browser allowing them to enjoy the creative -| and wonderful application we have prepared for them. -| -*/ - -$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); - -$response = $kernel->handle( - $request = Illuminate\Http\Request::capture() -); - -$response->send(); - -$kernel->terminate($request, $response); diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/public/web.config b/public/web.config deleted file mode 100644 index 624c176..0000000 --- a/public/web.config +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js deleted file mode 100644 index c1620c1..0000000 --- a/resources/assets/js/app.js +++ /dev/null @@ -1,22 +0,0 @@ - -/** - * First we will load all of this project's JavaScript dependencies which - * includes Vue and other libraries. It is a great starting point when - * building robust, powerful web applications using Vue and Laravel. - */ - -require('./bootstrap'); - -window.Vue = require('vue'); - -/** - * Next, we will create a fresh Vue application instance and attach it to - * the page. Then, you may begin adding components to this application - * or customize the JavaScript scaffolding to fit your unique needs. - */ - -Vue.component('example', require('./components/Example.vue')); - -const app = new Vue({ - el: '#app' -}); diff --git a/resources/assets/js/bootstrap.js b/resources/assets/js/bootstrap.js deleted file mode 100644 index 8e0f04e..0000000 --- a/resources/assets/js/bootstrap.js +++ /dev/null @@ -1,53 +0,0 @@ - -window._ = require('lodash'); - -/** - * We'll load jQuery and the Bootstrap jQuery plugin which provides support - * for JavaScript based Bootstrap features such as modals and tabs. This - * code may be modified to fit the specific needs of your application. - */ - -try { - window.$ = window.jQuery = require('jquery'); - - require('bootstrap-sass'); -} catch (e) {} - -/** - * We'll load the axios HTTP library which allows us to easily issue requests - * to our Laravel back-end. This library automatically handles sending the - * CSRF token as a header based on the value of the "XSRF" token cookie. - */ - -window.axios = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * Next we will register the CSRF Token as a common header with Axios so that - * all outgoing HTTP requests automatically have it attached. This is just - * a simple convenience so we don't have to attach every token manually. - */ - -let token = document.head.querySelector('meta[name="csrf-token"]'); - -if (token) { - window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; -} else { - console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'); -} - -/** - * Echo exposes an expressive API for subscribing to channels and listening - * for events that are broadcast by Laravel. Echo and event broadcasting - * allows your team to easily build robust real-time web applications. - */ - -// import Echo from 'laravel-echo' - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: 'your-pusher-key' -// }); diff --git a/resources/assets/js/components/Example.vue b/resources/assets/js/components/Example.vue deleted file mode 100644 index 601e61c..0000000 --- a/resources/assets/js/components/Example.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/resources/assets/sass/_variables.scss b/resources/assets/sass/_variables.scss deleted file mode 100644 index 53202ac..0000000 --- a/resources/assets/sass/_variables.scss +++ /dev/null @@ -1,38 +0,0 @@ - -// Body -$body-bg: #f5f8fa; - -// Borders -$laravel-border-color: darken($body-bg, 10%); -$list-group-border: $laravel-border-color; -$navbar-default-border: $laravel-border-color; -$panel-default-border: $laravel-border-color; -$panel-inner-border: $laravel-border-color; - -// Brands -$brand-primary: #3097D1; -$brand-info: #8eb4cb; -$brand-success: #2ab27b; -$brand-warning: #cbb956; -$brand-danger: #bf5329; - -// Typography -$icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/"; -$font-family-sans-serif: "Raleway", sans-serif; -$font-size-base: 14px; -$line-height-base: 1.6; -$text-color: #636b6f; - -// Navbar -$navbar-default-bg: #fff; - -// Buttons -$btn-default-color: $text-color; - -// Inputs -$input-border: lighten($text-color, 40%); -$input-border-focus: lighten($brand-primary, 25%); -$input-color-placeholder: lighten($text-color, 30%); - -// Panels -$panel-default-heading-bg: #fff; diff --git a/resources/assets/sass/app.scss b/resources/assets/sass/app.scss deleted file mode 100644 index 63633fc..0000000 --- a/resources/assets/sass/app.scss +++ /dev/null @@ -1,9 +0,0 @@ - -// Fonts -@import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600"); - -// Variables -@import "variables"; - -// Bootstrap -@import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap"; diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php deleted file mode 100644 index e5506df..0000000 --- a/resources/lang/en/auth.php +++ /dev/null @@ -1,19 +0,0 @@ - 'These credentials do not match our records.', - 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', - -]; diff --git a/resources/lang/en/pagination.php b/resources/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/resources/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php deleted file mode 100644 index e5544d2..0000000 --- a/resources/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - 'Passwords must be at least six characters and match the confirmation.', - 'reset' => 'Your password has been reset!', - 'sent' => 'We have e-mailed your password reset link!', - 'token' => 'This password reset token is invalid.', - 'user' => "We can't find a user with that e-mail address.", - -]; diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php deleted file mode 100644 index edc036d..0000000 --- a/resources/lang/en/validation.php +++ /dev/null @@ -1,121 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/views/README.md b/resources/views/README.md deleted file mode 100644 index f1c1ede..0000000 --- a/resources/views/README.md +++ /dev/null @@ -1,32 +0,0 @@ - -LoginRadius -========== - -![Home Image](http://docs.lrcontent.com/resources/github/banner-1544x500.png) - ------------------------------------------------ -LoginRadius PHP wrapper provides access to LoginRadius. - -LoginRadius is a unified **Customer Identity Management** API platform that combines 30 major social platforms into a single simplified and maintenance-free API. With LoginRadius' API, websites and mobile apps can implement capture user profile data, enable social login, enable social sharing, add single sign-on and many more. - -LoginRadius helps businesses boost user engagement on their web/mobile platform, manage online identities, utilize social media for marketing, capture accurate consumer data and get unique social insight into their customer base. - -Please visit https://docs.loginradius.com/api/v2/deployment/sdk-libraries/php-library for more information. - -PHP Library --------------- - -This document contains information and examples regarding the LoginRadius PHP SDK. It provides guidance for working with social authentication, capture user profile data, enable social login, enable social sharing, single sign-on, user profile data and sending messages with a variety of social networks such as Facebook, Google, Twitter, Yahoo, LinkedIn, and more. - -# LoginRadius - -A demo PHP web application using the PHP SDK. - -## Configuration - -1. Download the demo, src/loginradiusSDK from php sdk repo or clone the whole repo. -2. Upload these on server and wrapped in one directory. -3. Set your LoginRadius credentials on the client and server side: - * Server side: `demo/ajax_handler/config.php` - * Client side: `demo/assets/js/options.js` -4. Demo will appear on `http://localhost/test/demo` diff --git a/resources/views/index.html b/resources/views/index.html deleted file mode 100644 index b702fbc..0000000 --- a/resources/views/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - diff --git a/resources/views/layouts/profile/home.blade.php b/resources/views/layouts/profile/home.blade.php deleted file mode 100644 index c8c27d3..0000000 --- a/resources/views/layouts/profile/home.blade.php +++ /dev/null @@ -1,43 +0,0 @@ - - - profile - - - - - - - - - - - - - - - - @yield('content') - - \ No newline at end of file diff --git a/resources/views/test.blade.php b/resources/views/test.blade.php deleted file mode 100644 index 11df0f1..0000000 --- a/resources/views/test.blade.php +++ /dev/null @@ -1,6 +0,0 @@ -@extends('layouts.app') - -@section('content') -hi there - -@endsection \ No newline at end of file diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php deleted file mode 100644 index 606e59e..0000000 --- a/resources/views/welcome.blade.php +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - Laravel - - - - - - - - -
- @if (Route::has('login')) - - @endif - -
-
- Laravel -
- - -
-
- - diff --git a/resources/views/welcome_message.php b/resources/views/welcome_message.php deleted file mode 100644 index f511563..0000000 --- a/resources/views/welcome_message.php +++ /dev/null @@ -1,89 +0,0 @@ - - - - - Welcome to CodeIgniter - - - - - -
-

Welcome to CodeIgniter!

- -
-

The page you are looking at is being generated dynamically by CodeIgniter.

- -

If you would like to edit this page you'll find it located at:

- application/views/welcome_message.php - -

The corresponding controller for this page is found at:

- application/controllers/Welcome.php - -

If you are exploring CodeIgniter for the very first time, you should start by reading the User Guide.

-
- - -
- - - \ No newline at end of file diff --git a/routes/api.php b/routes/api.php deleted file mode 100644 index c641ca5..0000000 --- a/routes/api.php +++ /dev/null @@ -1,18 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/routes/channels.php b/routes/channels.php deleted file mode 100644 index f16a20b..0000000 --- a/routes/channels.php +++ /dev/null @@ -1,16 +0,0 @@ -id === (int) $id; -}); diff --git a/routes/console.php b/routes/console.php deleted file mode 100644 index 75dd0cd..0000000 --- a/routes/console.php +++ /dev/null @@ -1,18 +0,0 @@ -comment(Inspiring::quote()); -})->describe('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php deleted file mode 100644 index 8b7f0e8..0000000 --- a/routes/web.php +++ /dev/null @@ -1,57 +0,0 @@ - 'minimal', 'uses' => 'HomeController@index']); - -Route::get('/login', ['as' => 'login', 'uses' => 'HomeController@loginscreen']); -Route::get('/profile', ['as' => 'profileview', 'uses' => 'HomeController@profile']); -Route::get('/register', ['as' => 'signup', 'uses' => 'HomeController@signup']); - -Route::get('/forgotpassword', ['as' => 'forgot', 'uses' => 'HomeController@forgot']); -Route::get('/changepassword', ['as' => 'changepassword', 'uses' => 'HomeController@changePassword']); -Route::get('/setpassword', ['as' => 'setpassword', 'uses' => 'HomeController@setPassword']); -Route::get('/account', ['as' => 'account', 'uses' => 'HomeController@account']); - -Route::get('/customobjects', ['as' => 'customobjects', 'uses' => 'HomeController@customObjects']); -Route::get('/roles', ['as' => 'roles', 'uses' => 'HomeController@roles']); -Route::get('/multifactor', ['as' => 'multifactor', 'uses' => 'HomeController@multifactor']); -Route::get('/accountlinking', ['as' => 'accountlinking', 'uses' => 'HomeController@accountlinking']); -/** - * route for controller - */ -Route::post('/loginByEmail', 'HomeController@loginByEmail'); -Route::any('/profile', 'Profile@Profile'); -Route::any('/forgot', 'HomeController@forgot'); -Route::any('/minimal', 'HomeController@minimal'); -Route::any('/signup', 'HomeController@signup'); - -/** - * default route - */ -Route::any('/{default?}', 'HomeController@index'); - - - - - diff --git a/server.php b/server.php deleted file mode 100644 index 5fb6379..0000000 --- a/server.php +++ /dev/null @@ -1,21 +0,0 @@ - - */ - -$uri = urldecode( - parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) -); - -// This file allows us to emulate Apache's "mod_rewrite" functionality from the -// built-in PHP web server. This provides a convenient way to test a Laravel -// application without having installed a "real" web server software here. -if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { - return false; -} - -require_once __DIR__.'/public/index.php'; diff --git a/src/Application.php b/src/Application.php new file mode 100644 index 0000000..49a0bec --- /dev/null +++ b/src/Application.php @@ -0,0 +1,85 @@ +addPlugin('Bake'); + } catch (MissingPluginException $e) { + // Do not halt if the plugin is missing + } + + $this->addPlugin('Migrations'); + } + + /* + * Only try to load DebugKit in development mode + * Debug Kit should not be installed on a production system + */ + if (Configure::read('debug')) { + $this->addPlugin(\DebugKit\Plugin::class); + } + } + + /** + * Setup the middleware queue your application will use. + * + * @param \Cake\Http\MiddlewareQueue $middlewareQueue The middleware queue to setup. + * @return \Cake\Http\MiddlewareQueue The updated middleware queue. + */ + public function middleware($middlewareQueue) + { + $middlewareQueue + // Catch any exceptions in the lower layers, + // and make an error page/response + ->add(new ErrorHandlerMiddleware(null, Configure::read('Error'))) + + // Handle plugin/theme assets like CakePHP normally does. + ->add(new AssetMiddleware([ + 'cacheTime' => Configure::read('Asset.cacheTime') + ])) + + // Add routing middleware. + // Routes collection cache enabled by default, to disable route caching + // pass null as cacheConfig, example: `new RoutingMiddleware($this)` + // you might want to disable this cache in case your routing is extremely simple + ->add(new RoutingMiddleware($this, '_cake_routes_')); + + return $middlewareQueue; + } +} diff --git a/src/Console/Installer.php b/src/Console/Installer.php new file mode 100644 index 0000000..3bcef47 --- /dev/null +++ b/src/Console/Installer.php @@ -0,0 +1,246 @@ +getIO(); + + $rootDir = dirname(dirname(__DIR__)); + + static::createAppConfig($rootDir, $io); + static::createWritableDirectories($rootDir, $io); + + // ask if the permissions should be changed + if ($io->isInteractive()) { + $validator = function ($arg) { + if (in_array($arg, ['Y', 'y', 'N', 'n'])) { + return $arg; + } + throw new Exception('This is not a valid answer. Please choose Y or n.'); + }; + $setFolderPermissions = $io->askAndValidate( + 'Set Folder Permissions ? (Default to Y) [Y,n]? ', + $validator, + 10, + 'Y' + ); + + if (in_array($setFolderPermissions, ['Y', 'y'])) { + static::setFolderPermissions($rootDir, $io); + } + } else { + static::setFolderPermissions($rootDir, $io); + } + + static::setSecuritySalt($rootDir, $io); + + $class = 'Cake\Codeception\Console\Installer'; + if (class_exists($class)) { + $class::customizeCodeceptionBinary($event); + } + } + + /** + * Create the config/app.php file if it does not exist. + * + * @param string $dir The application's root directory. + * @param \Composer\IO\IOInterface $io IO interface to write to console. + * @return void + */ + public static function createAppConfig($dir, $io) + { + $appConfig = $dir . '/config/app.php'; + $defaultConfig = $dir . '/config/app.default.php'; + if (!file_exists($appConfig)) { + copy($defaultConfig, $appConfig); + $io->write('Created `config/app.php` file'); + } + } + + /** + * Create the `logs` and `tmp` directories. + * + * @param string $dir The application's root directory. + * @param \Composer\IO\IOInterface $io IO interface to write to console. + * @return void + */ + public static function createWritableDirectories($dir, $io) + { + foreach (static::WRITABLE_DIRS as $path) { + $path = $dir . '/' . $path; + if (!file_exists($path)) { + mkdir($path); + $io->write('Created `' . $path . '` directory'); + } + } + } + + /** + * Set globally writable permissions on the "tmp" and "logs" directory. + * + * This is not the most secure default, but it gets people up and running quickly. + * + * @param string $dir The application's root directory. + * @param \Composer\IO\IOInterface $io IO interface to write to console. + * @return void + */ + public static function setFolderPermissions($dir, $io) + { + // Change the permissions on a path and output the results. + $changePerms = function ($path) use ($io) { + $currentPerms = fileperms($path) & 0777; + $worldWritable = $currentPerms | 0007; + if ($worldWritable == $currentPerms) { + return; + } + + $res = chmod($path, $worldWritable); + if ($res) { + $io->write('Permissions set on ' . $path); + } else { + $io->write('Failed to set permissions on ' . $path); + } + }; + + $walker = function ($dir) use (&$walker, $changePerms) { + $files = array_diff(scandir($dir), ['.', '..']); + foreach ($files as $file) { + $path = $dir . '/' . $file; + + if (!is_dir($path)) { + continue; + } + + $changePerms($path); + $walker($path); + } + }; + + $walker($dir . '/tmp'); + $changePerms($dir . '/tmp'); + $changePerms($dir . '/logs'); + } + + /** + * Set the security.salt value in the application's config file. + * + * @param string $dir The application's root directory. + * @param \Composer\IO\IOInterface $io IO interface to write to console. + * @return void + */ + public static function setSecuritySalt($dir, $io) + { + $newKey = hash('sha256', Security::randomBytes(64)); + static::setSecuritySaltInFile($dir, $io, $newKey, 'app.php'); + } + + /** + * Set the security.salt value in a given file + * + * @param string $dir The application's root directory. + * @param \Composer\IO\IOInterface $io IO interface to write to console. + * @param string $newKey key to set in the file + * @param string $file A path to a file relative to the application's root + * @return void + */ + public static function setSecuritySaltInFile($dir, $io, $newKey, $file) + { + $config = $dir . '/config/' . $file; + $content = file_get_contents($config); + + $content = str_replace('__SALT__', $newKey, $content, $count); + + if ($count == 0) { + $io->write('No Security.salt placeholder to replace.'); + + return; + } + + $result = file_put_contents($config, $content); + if ($result) { + $io->write('Updated Security.salt value in config/' . $file); + + return; + } + $io->write('Unable to update Security.salt value.'); + } + + /** + * Set the APP_NAME value in a given file + * + * @param string $dir The application's root directory. + * @param \Composer\IO\IOInterface $io IO interface to write to console. + * @param string $appName app name to set in the file + * @param string $file A path to a file relative to the application's root + * @return void + */ + public static function setAppNameInFile($dir, $io, $appName, $file) + { + $config = $dir . '/config/' . $file; + $content = file_get_contents($config); + $content = str_replace('__APP_NAME__', $appName, $content, $count); + + if ($count == 0) { + $io->write('No __APP_NAME__ placeholder to replace.'); + + return; + } + + $result = file_put_contents($config, $content); + if ($result) { + $io->write('Updated __APP_NAME__ value in config/' . $file); + + return; + } + $io->write('Unable to update __APP_NAME__ value.'); + } +} diff --git a/src/Controller/AppController.php b/src/Controller/AppController.php new file mode 100644 index 0000000..db1fcbb --- /dev/null +++ b/src/Controller/AppController.php @@ -0,0 +1,61 @@ +loadComponent('Security');` + * + * @return void + */ + public function initialize() + { + parent::initialize(); + + // INSERT API KEY AND SECRET + define('API_KEY', ''); // Pass API Key + define('API_SECRET', ''); // Pass API Secret Key + define('API_REQUEST_SIGNING', ''); // Pass boolean true/false for enable/disable + define('AUTH_FLOW', ''); // Pass optional/disabled, if email verification flow optional or disabled, no need to mention if required flow + + $this->loadComponent('RequestHandler', [ + 'enableBeforeRedirect' => false, + ]); + $this->loadComponent('Flash'); + + /* + * Enable the following component for recommended CakePHP security settings. + * see https://book.cakephp.org/3.0/en/controllers/components/security.html + */ + //$this->loadComponent('Security'); + } +} diff --git a/src/Controller/Component/empty b/src/Controller/Component/empty new file mode 100644 index 0000000..e69de29 diff --git a/src/Controller/ErrorController.php b/src/Controller/ErrorController.php new file mode 100644 index 0000000..43bd2fb --- /dev/null +++ b/src/Controller/ErrorController.php @@ -0,0 +1,70 @@ +loadComponent('RequestHandler', [ + 'enableBeforeRedirect' => false, + ]); + } + + /** + * beforeFilter callback. + * + * @param \Cake\Event\Event $event Event. + * @return \Cake\Http\Response|null|void + */ + public function beforeFilter(Event $event) + { + } + + /** + * beforeRender callback. + * + * @param \Cake\Event\Event $event Event. + * @return \Cake\Http\Response|null|void + */ + public function beforeRender(Event $event) + { + parent::beforeRender($event); + + $this->viewBuilder()->setTemplatePath('Error'); + } + + /** + * afterFilter callback. + * + * @param \Cake\Event\Event $event Event. + * @return \Cake\Http\Response|null|void + */ + public function afterFilter(Event $event) + { + } +} diff --git a/app/Http/Controllers/HomeController.php b/src/Controller/HomeController.php similarity index 66% rename from app/Http/Controllers/HomeController.php rename to src/Controller/HomeController.php index 75380ae..3a7f631 100644 --- a/app/Http/Controllers/HomeController.php +++ b/src/Controller/HomeController.php @@ -1,100 +1,44 @@ input('action'); - if(method_exists($this,$action)) - $this->$action($request); - else - return view('signup'); - } - /** - *handle login operation - * call to following function for login operation - *loginByEmail() - *mfaLogin() - *mfaValidate() - *pwLessLogin() - *pwLessLinkVerify() - */ - public function minimal(Request $request) { - - $action=$request->input('action'); - if(method_exists($this,$action)) - $this->$action($request); - else - return view('index'); - - } - /** - * function for login by email id +class HomeController extends AppController{ + public function initialize() + { + parent::initialize(); + $this->viewBuilder()->setLayout('minimallayout'); + + } + public function minimal(){} + public function loginScreen(){} + public function registrationView(){} + public function forgotPasswordView(){} + /** + * manage all login action + */ + public function login() { + $this->autoRender=false; + $action=$this->request->data('action'); + if(method_exists($this,$action)) + { + $this->$action(); + + } +} + /** + * function for login by email */ - public function loginByEmail($request) { - - $email = $request->input('email'); - $password = $request->input('password'); +public function loginByEmail() +{ + $this->autoRender = false; + $email = $this->request->data('email'); + $password = $this->request->data('password'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($email)) { $response['message'] = 'The Email Id field is required.'; @@ -117,15 +61,19 @@ public function loginByEmail($request) { $response['message'] = $e->error_response->Description; } } + echo json_encode($response); - } - /** + exit; +} + + /** * function for multifactor authentication */ - public function mfaLogin($request) { - $email = $request->input('email'); - $password = $request->input('password'); + public function mfaLogin() { + + $email = $this->request->data('email'); + $password = $this->request->data('password'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($email)) { $response['message'] = 'The Email Id field is required.'; @@ -148,14 +96,16 @@ public function mfaLogin($request) { } } echo json_encode($response); + exit; } /** * function for multifactor validation */ - public function mfaValidate($request) { - $secondFactorAuthenticationToken = $request->input('secondFactorAuthenticationToken'); - $googleAuthCode = $request->input('googleAuthCode'); + public function mfaValidate() { + + $secondFactorAuthenticationToken = $this->request->data('secondFactorAuthenticationToken'); + $googleAuthCode = $this->request->data('googleAuthCode'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($secondFactorAuthenticationToken)) { $response['message'] = 'second factor auth token is required'; @@ -179,14 +129,16 @@ public function mfaValidate($request) { } } echo json_encode($response); + exit; } /** * function for password less login */ - public function pwLessLogin($request) { - $email = $request->input('email'); + public function pwLessLogin() { + + $email = $this->request->data('email'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($email)) { $response['message'] = 'The Email Id field is required.'; @@ -194,7 +146,7 @@ public function pwLessLogin($request) { else { $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); try { - $result = $authenticationObj->passwordLessLoginByEmail($email, $request->input('verificationurl')); + $result = $authenticationObj->passwordLessLoginByEmail($email, $this->request->data('verificationurl')); if ((isset($result->IsPosted) && $result->IsPosted)) { $response['message'] = "One time login link has been sent to your provided email id, check email for further instruction."; $response['status'] = 'success'; @@ -206,13 +158,15 @@ public function pwLessLogin($request) { } } echo json_encode($response); + exit; } /** * function for password less link verify */ - public function pwLessLinkVerify($request) { - $token =$request->input('token'); + public function pwLessLinkVerify() { + + $token =$this->request->data('token'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($token)) { $response['message'] = 'Token is required'; @@ -233,12 +187,12 @@ public function pwLessLinkVerify($request) { } } echo json_encode($response); + exit; } - - function emailVerify($request) { + function emailVerify() { - - $vtoken = $request->input('vtoken'); + $this->autoRender=false; + $vtoken = $this->request->data('vtoken'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($vtoken)) { $response['message'] = 'Verification token is required'; @@ -258,15 +212,13 @@ function emailVerify($request) { } } echo json_encode($response); + exit; } - /** - * function for registration - */ - - public function registration($request) { + public function registration() { - $email=$request->input('email'); - $password=$request->input('password'); + $this->autoRender=false; + $email=$this->request->data('email'); + $password=$this->request->data('password'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($email)) { @@ -281,10 +233,10 @@ public function registration($request) { try { $payload = array('Email' => array(array('Type' => 'Primary', 'Value' => $email)), 'password' => $password); - $result = $authenticationObj->registerByEmail($payload, $request->input('verificationurl')); + $result = $authenticationObj->registerByEmail($payload, $this->request->data('verificationurl')); if ((isset($result->EmailVerified) && $result->EmailVerified) || AUTH_FLOW == 'optional' || AUTH_FLOW == 'disabled') { $response['result'] = $result; - $response['message'] = "You have successfully registered."; + $response['message'] = "You have successsfully registered."; $response['status'] = 'success'; } else { @@ -300,5 +252,62 @@ public function registration($request) { } echo json_encode($response); } - + + + + public function forgotPassword() { + + $this->autoRender=false; + $email =$this->request->data('email'); + if (empty($email)) { + $response['message'] = 'The Email Id field is required.'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $authenticationObj->forgotPassword($email, $this->request->data('resetPasswordUrl')); + if ((isset($result->IsPosted) && $result->IsPosted)) { + $response['message'] = "We'll email you an instruction on how to reset your password"; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + public function resetPassword(){ + + $this->autoRender=false; + $token = $this->request->data('resettoken'); + $password = $this->request->data('password'); + $response = array('status' => 'error', 'message' => 'an error occoured'); + if (empty($token)) { + $response['message'] = 'Reset token is required'; + } + elseif (empty($password)) { + $response['message'] = 'The Password field is required.'; + } + else { + $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); + try { + $result = $authenticationObj->resetPassword($token, $password); + if ((isset($result->IsPosted) && $result->IsPosted)) { + $response['message'] = "Password has been reset successfully."; + $response['status'] = 'success'; + } + } + catch (LoginRadiusException $e) { + $response['message'] = $e->error_response->Description; + $response['status'] = "error"; + } + } + echo json_encode($response); + } + } + + +?> \ No newline at end of file diff --git a/src/Controller/PagesController.php b/src/Controller/PagesController.php new file mode 100644 index 0000000..d023661 --- /dev/null +++ b/src/Controller/PagesController.php @@ -0,0 +1,69 @@ +redirect('/'); + } + if (in_array('..', $path, true) || in_array('.', $path, true)) { + throw new ForbiddenException(); + } + $page = $subpage = null; + + if (!empty($path[0])) { + $page = $path[0]; + } + if (!empty($path[1])) { + $subpage = $path[1]; + } + $this->set(compact('page', 'subpage')); + + try { + $this->render(implode('/', $path)); + } catch (MissingTemplateException $exception) { + if (Configure::read('debug')) { + throw $exception; + } + throw new NotFoundException(); + } + } +} diff --git a/app/Http/Controllers/Profile.php b/src/Controller/ProfileController.php similarity index 72% rename from app/Http/Controllers/Profile.php rename to src/Controller/ProfileController.php index 7fef80d..2f9508f 100644 --- a/app/Http/Controllers/Profile.php +++ b/src/Controller/ProfileController.php @@ -1,11 +1,8 @@ input('action'); + + parent::initialize(); + $this->viewBuilder()->setLayout('profilelayout'); + + } + + + public function profileView(){} + public function changePasswordView(){} + public function setPasswordView(){} + public function accountView(){} + public function accountLinkingView(){} + public function customObjectView(){} + public function resetMultifactorView(){} + public function roleView(){} + /** + * manage all profile action] + */ + public function profile(){ + $this->autoRender=false; + $action=$this->request->data('action'); if(method_exists($this,$action)) - $this->$action($request); - else - return view('profile'); + { + $this->$action(); + + } } - /** - * function to fetch profile info by uid - */ - public function getProfileByUid($request) { - $uid = $request->input('uid'); + + public function getProfileByUid(){ + $this->autoRender=false; + $uid = $this->request->data('uid'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($uid)) { $response['message'] = 'uid is required field'; @@ -43,6 +55,7 @@ public function getProfileByUid($request) { $accountObj = new AccountAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); try { $result = $accountObj->getProfileByUid($uid); + if ((isset($result->Uid) && $result->Uid != '')) { $response['data'] = $result; @@ -56,14 +69,13 @@ public function getProfileByUid($request) { } } echo json_encode($response); + exit; } - /** - * function to fetch info of profile - */ - public function getProfile($request) { - - $token= $request->input('token'); + + public function getProfile() { + $this->autoRender=false; + $token= $this->request->data('token'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($token)) { $response['message'] = 'Token is required'; @@ -71,33 +83,34 @@ public function getProfile($request) { else { $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); try { - $result = $authenticationObj->getProfile($token); - if ((isset($result->EmailVerified) && $result->EmailVerified) || AUTH_FLOW == 'optional' || AUTH_FLOW == 'disabled') { + $result = $authenticationObj->getProfile($token); + $response['data'] = $result; $response['message'] = "Profile fetched"; $response['status'] = 'success'; - } - else { - $response['message'] = "Email is not verified."; - $response['status'] = 'error'; - } + } - catch (LoginRadiusException $e) { + catch (LoginRadiusException $e) { $response['message'] = $e->error_response->Description; $response['status'] = "error"; } } + echo json_encode($response); + exit; } - /** + + + +/** * function to change password */ - public function changePassword($request) { - $token =$request->input('token'); - $oldpassword =$request->input('oldpassword'); - $newpassword =$request->input('newpassword'); + public function changePassword() { + $token =$this->request->data('token'); + $oldpassword =$this->request->data('oldpassword'); + $newpassword =$this->request->data('newpassword'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($oldpassword)) { $response['message'] = 'Old password is required'; @@ -121,12 +134,15 @@ public function changePassword($request) { } echo json_encode($response); } + + + /** * function to set account password */ - public function setPassword($request) { - $uid = $request->input('uid'); - $newpassword =$request->input('newpassword'); + public function setPassword() { + $uid = $this->request->data('uid'); + $newpassword =$this->request->data('newpassword'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($newpassword)) { $response['message'] = 'New password field is required'; @@ -147,74 +163,17 @@ public function setPassword($request) { } echo json_encode($response); } - - /** - * function to handle forgot password - */ - public function forgotPassword($request) { - $email =$request->input('email'); - if (empty($email)) { - $response['message'] = 'The Email Id field is required.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->forgotPassword($email, $request->input('resetPasswordUrl')); - if ((isset($result->IsPosted) && $result->IsPosted)) { - $response['message'] = "We'll email you an instruction on how to reset your password"; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - echo json_encode($response); - } - /** - * function to reset password - */ - public function resetPassword($request){ - $token = $request->input('resettoken'); - $password = $request->input('password'); - $response = array('status' => 'error', 'message' => 'an error occoured'); - if (empty($token)) { - $response['message'] = 'Reset token is required'; - } - elseif (empty($password)) { - $response['message'] = 'The Password field is required.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->resetPassword($token, $password); - if ((isset($result->IsPosted) && $result->IsPosted)) { - $response['message'] = "Password has been reset successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - echo json_encode($response); - } - /** - * function to update account - */ - public function updateAccount($request) { - $firstname =$request->input('firstname'); - $lastname =$request->input('lastname'); - $about = $request->input('about'); + public function updateAccount() { + $firstname =$this->request->data('firstname'); + $lastname =$this->request->data('lastname'); + $about = $this->request->data('about'); $response = array('status' => 'error', 'message' => 'an error occoured'); $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json')); try { $payload = array('FirstName' => $firstname, 'LastName' => $lastname, 'About' => $about); - $result = $authenticationObj->updateProfile($request->input('token'), $payload); + $result = $authenticationObj->updateProfile($this->request->data('token'), $payload); if (isset($result->IsPosted) && $result->IsPosted) { $response['message'] = "Profile has been updated successfully."; @@ -231,9 +190,9 @@ public function updateAccount($request) { /** * function to create custom pbject */ - public function createCustomObjects($request) { - $token=$request->input('token'); - $objectName = $request->input('objectName'); + public function createCustomObjects() { + $token=$this->request->data('token'); + $objectName = $this->request->data('objectName'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($objectName)) { $response['message'] = 'Object name is required.'; @@ -243,7 +202,7 @@ public function createCustomObjects($request) { try { - $result = $customObj->createCustomObject($token, $objectName, $request->input('payload')); + $result = $customObj->createCustomObject($token, $objectName, $this->request->data('payload')); if (isset($result->Uid) && $result->Uid != '') { @@ -264,9 +223,9 @@ public function createCustomObjects($request) { *function to get custom object */ - public function getCustomObjects($request) { - $token=$request->input('token'); - $objectName = $request->input('objectName'); + public function getCustomObjects() { + $token=$this->request->data('token'); + $objectName = $this->request->data('objectName'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($objectName)) { $response['message'] = 'Object name is required.'; @@ -295,10 +254,10 @@ public function getCustomObjects($request) { */ - public function updateCustomObjects($request) { - $token=$request->input('token'); - $objectName = $request->input('objectName'); - $objectRecordId = $request->input('objectRecordId'); + public function updateCustomObjects() { + $token=$this->request->data('token'); + $objectName = $this->request->data('objectName'); + $objectRecordId = $this->request->data('objectRecordId'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($objectName)) { $response['message'] = 'Object name is required'; @@ -309,7 +268,7 @@ public function updateCustomObjects($request) { else { $customObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); try { - $result = $customObj->updateCustomObjectData($token, $objectName, $objectRecordId, 'replace', $request->input('payload')); + $result = $customObj->updateCustomObjectData($token, $objectName, $objectRecordId, 'replace', $this->request->data('payload')); if (isset($result->Uid) && $result->Uid != '') { $response['message'] = "Custom object updated successfully."; @@ -327,10 +286,10 @@ public function updateCustomObjects($request) { *function to delete custom object */ - public function deleteCustomObjects($request) { - $token=$request->input('token'); - $objectName = $request->input('objectName'); - $objectRecordId =$request->input('objectRecordId'); + public function deleteCustomObjects() { + $token=$this->request->data('token'); + $objectName = $this->request->data('objectName'); + $objectRecordId =$this->request->data('objectRecordId'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($objectName)) { $response['message'] = 'Object name is required'; @@ -357,10 +316,10 @@ public function deleteCustomObjects($request) { /** * function to reset multi factor authentication */ - public function resetMultifactor($request) { + public function resetMultifactor() { $accountObj = new AccountAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); try { - $result = $accountObj->mfaResetGoogleAuthenticatorByUid($request->input('uid'), true); + $result = $accountObj->mfaResetGoogleAuthenticatorByUid($this->request->data('uid'), true); if (isset($result->IsDeleted) && $result->IsDeleted) { $response['message'] = "Reset successfully."; $response['status'] = 'success'; @@ -381,8 +340,8 @@ public function resetMultifactor($request) { *function to create Role */ - public function handleCreateRole($request) { - $roles = $request->input('roles'); + public function handleCreateRole() { + $roles = $this->request->data('roles'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($roles)) { $response['message'] = 'Roles field is required'; @@ -408,8 +367,8 @@ public function handleCreateRole($request) { */ - function handleDeleteRole($request) { - $roles = $request->input('roles'); + function handleDeleteRole() { + $roles = $this->request->data('roles'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($roles)) { $response['message'] = 'Roles field is required'; @@ -435,9 +394,9 @@ function handleDeleteRole($request) { *function to assign user role */ - public function handleAssignUserRole($request) { - $uid = $request->input('uid'); - $roles = $request->input('roles'); + public function handleAssignUserRole() { + $uid = $this->request->data('uid'); + $roles = $this->request->data('roles'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($roles)) { $response['message'] = 'Roles field is required'; @@ -458,12 +417,13 @@ public function handleAssignUserRole($request) { } echo json_encode($response); } - /** + + /** *function to fetch all role */ - public function getAllRoles($request) { + public function getAllRoles() { $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); try { $result = $roleObj->get(); @@ -482,15 +442,12 @@ public function getAllRoles($request) { } echo json_encode($response); } - /** - *function to fetch user role - - */ - - public function getUserRoles($request) { + + + public function getUserRoles() { $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); try { - $result = $roleObj->getAccountRolesByUid($request->input('uid')); + $result = $roleObj->getAccountRolesByUid($this->request->data('uid')); if (isset($result->Roles) && $result->Roles != '') { $response['data'] = $result; $response['status'] = 'success'; @@ -509,4 +466,4 @@ public function getUserRoles($request) { -} +} \ No newline at end of file diff --git a/src/Model/Behavior/empty b/src/Model/Behavior/empty new file mode 100644 index 0000000..e69de29 diff --git a/src/Model/Entity/empty b/src/Model/Entity/empty new file mode 100644 index 0000000..e69de29 diff --git a/src/Model/Table/empty b/src/Model/Table/empty new file mode 100644 index 0000000..e69de29 diff --git a/src/Shell/ConsoleShell.php b/src/Shell/ConsoleShell.php new file mode 100644 index 0000000..f7bfe8e --- /dev/null +++ b/src/Shell/ConsoleShell.php @@ -0,0 +1,81 @@ +err('Unable to load Psy\Shell.'); + $this->err(''); + $this->err('Make sure you have installed psysh as a dependency,'); + $this->err('and that Psy\Shell is registered in your autoloader.'); + $this->err(''); + $this->err('If you are using composer run'); + $this->err(''); + $this->err('$ php composer.phar require --dev psy/psysh'); + $this->err(''); + + return self::CODE_ERROR; + } + + $this->out("You can exit with `CTRL-C` or `exit`"); + $this->out(''); + + Log::drop('debug'); + Log::drop('error'); + $this->_io->setLoggers(false); + restore_error_handler(); + restore_exception_handler(); + + $psy = new PsyShell(); + $psy->run(); + } + + /** + * Display help for this console. + * + * @return \Cake\Console\ConsoleOptionParser + */ + public function getOptionParser() + { + $parser = new ConsoleOptionParser('console'); + $parser->setDescription( + 'This shell provides a REPL that you can use to interact with ' . + 'your application in a command line designed to run PHP code. ' . + 'You can use it to run adhoc queries with your models, or ' . + 'explore the features of CakePHP and your application.' . + "\n\n" . + 'You will need to have psysh installed for this Shell to work.' + ); + + return $parser; + } +} diff --git a/src/Template/Cell/empty b/src/Template/Cell/empty new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/Template/Cell/empty @@ -0,0 +1 @@ + diff --git a/src/Template/Element/Flash/default.ctp b/src/Template/Element/Flash/default.ctp new file mode 100644 index 0000000..736b27d --- /dev/null +++ b/src/Template/Element/Flash/default.ctp @@ -0,0 +1,10 @@ + +
diff --git a/src/Template/Element/Flash/error.ctp b/src/Template/Element/Flash/error.ctp new file mode 100644 index 0000000..e7c4af1 --- /dev/null +++ b/src/Template/Element/Flash/error.ctp @@ -0,0 +1,6 @@ + +
diff --git a/src/Template/Element/Flash/success.ctp b/src/Template/Element/Flash/success.ctp new file mode 100644 index 0000000..becd5a1 --- /dev/null +++ b/src/Template/Element/Flash/success.ctp @@ -0,0 +1,6 @@ + +
diff --git a/src/Template/Email/html/default.ctp b/src/Template/Email/html/default.ctp new file mode 100644 index 0000000..ac3daa7 --- /dev/null +++ b/src/Template/Email/html/default.ctp @@ -0,0 +1,20 @@ + ' . $line . "

\n"; +endforeach; diff --git a/src/Template/Email/text/default.ctp b/src/Template/Email/text/default.ctp new file mode 100644 index 0000000..862cd9f --- /dev/null +++ b/src/Template/Email/text/default.ctp @@ -0,0 +1,16 @@ +layout = 'error'; + +if (Configure::read('debug')) : + $this->layout = 'dev_error'; + + $this->assign('title', $message); + $this->assign('templateName', 'error400.ctp'); + + $this->start('file'); +?> +queryString)) : ?> +

+ SQL Query: + queryString) ?> +

+ +params)) : ?> + SQL Query Params: + params) ?> + +element('auto_table_warning') ?> +end(); +endif; +?> +

+

+ : + '{$url}'") ?> +

diff --git a/src/Template/Error/error500.ctp b/src/Template/Error/error500.ctp new file mode 100644 index 0000000..3328cc5 --- /dev/null +++ b/src/Template/Error/error500.ctp @@ -0,0 +1,43 @@ +layout = 'error'; + +if (Configure::read('debug')) : + $this->layout = 'dev_error'; + + $this->assign('title', $message); + $this->assign('templateName', 'error500.ctp'); + + $this->start('file'); +?> +queryString)) : ?> +

+ SQL Query: + queryString) ?> +

+ +params)) : ?> + SQL Query Params: + params) ?> + + + Error in: + getFile()), $error->getLine()) ?> + +element('auto_table_warning'); + + if (extension_loaded('xdebug')) : + xdebug_print_function_stack(); + endif; + + $this->end(); +endif; +?> +

+

+ : + +

diff --git a/resources/views/changepassword.blade.php b/src/Template/Home/change_password_view.ctp similarity index 84% rename from resources/views/changepassword.blade.php rename to src/Template/Home/change_password_view.ctp index 55e5fe9..5a73ad7 100644 --- a/resources/views/changepassword.blade.php +++ b/src/Template/Home/change_password_view.ctp @@ -1,6 +1,4 @@ -@extends('layouts.profile.home') - @section('content') -
+
@@ -12,5 +10,4 @@ - - @endsection \ No newline at end of file + \ No newline at end of file diff --git a/resources/views/forgot.blade.php b/src/Template/Home/forgot_password_view.ctp similarity index 90% rename from resources/views/forgot.blade.php rename to src/Template/Home/forgot_password_view.ctp index 042a16b..3b27aa5 100644 --- a/resources/views/forgot.blade.php +++ b/src/Template/Home/forgot_password_view.ctp @@ -1,6 +1,4 @@ -@extends('layouts.home') -@section('content') -
+
@@ -19,5 +17,4 @@ - - @endsection \ No newline at end of file + \ No newline at end of file diff --git a/resources/views/loginscreen.blade.php b/src/Template/Home/login_screen.ctp similarity index 98% rename from resources/views/loginscreen.blade.php rename to src/Template/Home/login_screen.ctp index d93400f..a066c4c 100644 --- a/resources/views/loginscreen.blade.php +++ b/src/Template/Home/login_screen.ctp @@ -1,6 +1,4 @@ - @extends('layouts.home') - @section('content')
@@ -14,8 +12,9 @@ //language: "French", singlepagestyle: false, redirecturl: { - afterlogin: domainName + "/login", - afterreset: domainName + "/login", + + afterlogin: "profileview", + afterreset: "minimal", }, socialsquarestyle: false, @@ -206,4 +205,3 @@ }) - @endsection \ No newline at end of file diff --git a/resources/views/index.blade.php b/src/Template/Home/minimal.ctp similarity index 98% rename from resources/views/index.blade.php rename to src/Template/Home/minimal.ctp index f78abb2..0746a6f 100644 --- a/resources/views/index.blade.php +++ b/src/Template/Home/minimal.ctp @@ -1,8 +1,5 @@ -@extends('layouts.home') -@section('content') -
@@ -50,5 +47,5 @@
-@endsection + diff --git a/resources/views/signup.blade.php b/src/Template/Home/registration_view.ctp similarity index 93% rename from resources/views/signup.blade.php rename to src/Template/Home/registration_view.ctp index d472ac8..dacd6b7 100644 --- a/resources/views/signup.blade.php +++ b/src/Template/Home/registration_view.ctp @@ -1,5 +1,4 @@ -@extends('layouts.home') - @section('content') +
@@ -14,4 +13,3 @@
- @endsection \ No newline at end of file diff --git a/src/Template/Layout/Email/html/default.ctp b/src/Template/Layout/Email/html/default.ctp new file mode 100644 index 0000000..3ff87ff --- /dev/null +++ b/src/Template/Layout/Email/html/default.ctp @@ -0,0 +1,24 @@ + + + + + <?= $this->fetch('title') ?> + + + fetch('content') ?> + + diff --git a/src/Template/Layout/Email/text/default.ctp b/src/Template/Layout/Email/text/default.ctp new file mode 100644 index 0000000..29b439c --- /dev/null +++ b/src/Template/Layout/Email/text/default.ctp @@ -0,0 +1,16 @@ +fetch('content'); diff --git a/src/Template/Layout/ajax.ctp b/src/Template/Layout/ajax.ctp new file mode 100644 index 0000000..29b439c --- /dev/null +++ b/src/Template/Layout/ajax.ctp @@ -0,0 +1,16 @@ +fetch('content'); diff --git a/src/Template/Layout/default.ctp b/src/Template/Layout/default.ctp new file mode 100644 index 0000000..caf014e --- /dev/null +++ b/src/Template/Layout/default.ctp @@ -0,0 +1,57 @@ + + + + + Html->charset() ?> + + + <?= $cakeDescription ?>: + <?= $this->fetch('title') ?> + + Html->meta('icon') ?> + + Html->css('base.css') ?> + Html->css('style.css') ?> + + fetch('meta') ?> + fetch('css') ?> + fetch('script') ?> + + + + Flash->render() ?> +
+ fetch('content') ?> +
+
+
+ + diff --git a/src/Template/Layout/error.ctp b/src/Template/Layout/error.ctp new file mode 100644 index 0000000..7367c1b --- /dev/null +++ b/src/Template/Layout/error.ctp @@ -0,0 +1,47 @@ + + + + + Html->charset() ?> + + <?= $this->fetch('title') ?> + + Html->meta('icon') ?> + + Html->css('base.css') ?> + Html->css('style.css') ?> + + fetch('meta') ?> + fetch('css') ?> + fetch('script') ?> + + +
+ +
+ Flash->render() ?> + + fetch('content') ?> +
+ +
+ + diff --git a/resources/views/layouts/home.blade.php b/src/Template/Layout/minimallayout.ctp similarity index 53% rename from resources/views/layouts/home.blade.php rename to src/Template/Layout/minimallayout.ctp index 8767fde..5e33f56 100644 --- a/resources/views/layouts/home.blade.php +++ b/src/Template/Layout/minimallayout.ctp @@ -3,15 +3,16 @@ Login - - - - - - - - + Html->css('stylelr.css') ?> + Html->script('jquery.min.js') ?> + Html->script('options.js') ?> + Html->script('index.js') ?> + Html->script('sociallogin.js') ?> + Html->script('emailverification.js') ?> + Html->script('LoginRadiusLoginScreen.1.0.0.js') ?> + + @@ -19,20 +20,20 @@
- @yield('content') - + + fetch('content') ?> + \ No newline at end of file diff --git a/src/Template/Layout/profilelayout.ctp b/src/Template/Layout/profilelayout.ctp new file mode 100644 index 0000000..2de075a --- /dev/null +++ b/src/Template/Layout/profilelayout.ctp @@ -0,0 +1,48 @@ + + + + + + profile + + + Html->css('stylelr.css') ?> + + Html->script('jquery.min.js') ?> + Html->script('logout.js') ?> + + Html->script('options.js') ?> + Html->script('profile.js') ?> + Html->script('account.js') ?> + Html->script('accountlinking.js') ?> + + + + + + fetch('content') ?> + + + \ No newline at end of file diff --git a/src/Template/Layout/rss/default.ctp b/src/Template/Layout/rss/default.ctp new file mode 100644 index 0000000..8269be2 --- /dev/null +++ b/src/Template/Layout/rss/default.ctp @@ -0,0 +1,11 @@ +fetch('title'); +endif; + +echo $this->Rss->document( + $this->Rss->channel([], $channel, $this->fetch('content')) +); diff --git a/src/Template/Pages/home.ctp b/src/Template/Pages/home.ctp new file mode 100644 index 0000000..37f2a50 --- /dev/null +++ b/src/Template/Pages/home.ctp @@ -0,0 +1,276 @@ +layout = false; + +if (!Configure::read('debug')) : + throw new NotFoundException( + 'Please replace src/Template/Pages/home.ctp with your own version or re-enable debug mode.' + ); +endif; + +$cakeDescription = 'CakePHP: the rapid development PHP framework'; +?> + + + + Html->charset() ?> + + + <?= $cakeDescription ?> + + + Html->meta('icon') ?> + Html->css('base.css') ?> + Html->css('style.css') ?> + Html->css('home.css') ?> + + + + +
+
Html->image('cake.logo.svg') ?>
+
+

Welcome to CakePHP Red Velvet. Build fast. Grow solid.

+
+
+ +
+
+
+

Please be aware that this page will not be shown if you turn off debug mode unless you replace src/Template/Pages/home.ctp with your own version.

+
+
+ +
+ +
+
+ +
+
+

Environment

+
    + =')) : ?> +
  • Your version of PHP is 5.6.0 or higher (detected ).
  • + +
  • Your version of PHP is too low. You need PHP 5.6.0 or higher to use CakePHP (detected ).
  • + + + +
  • Your version of PHP has the mbstring extension loaded.
  • + +
  • Your version of PHP does NOT have the mbstring extension loaded.
  • + + + +
  • Your version of PHP has the openssl extension loaded.
  • + +
  • Your version of PHP has the mcrypt extension loaded.
  • + +
  • Your version of PHP does NOT have the openssl or mcrypt extension loaded.
  • + + + +
  • Your version of PHP has the intl extension loaded.
  • + +
  • Your version of PHP does NOT have the intl extension loaded.
  • + +
+
+
+

Filesystem

+
    + +
  • Your tmp directory is writable.
  • + +
  • Your tmp directory is NOT writable.
  • + + + +
  • Your logs directory is writable.
  • + +
  • Your logs directory is NOT writable.
  • + + + + +
  • The Engine is being used for core caching. To change the config edit config/app.php
  • + +
  • Your cache is NOT working. Please check the settings in config/app.php
  • + +
+
+
+
+ +
+
+

Database

+ connect(); + } catch (Exception $connectionError) { + $connected = false; + $errorMsg = $connectionError->getMessage(); + if (method_exists($connectionError, 'getAttributes')) : + $attributes = $connectionError->getAttributes(); + if (isset($errorMsg['message'])) : + $errorMsg .= '
' . $attributes['message']; + endif; + endif; + } + ?> +
    + +
  • CakePHP is able to connect to the database.
  • + +
  • CakePHP is NOT able to connect to the database.
  • + +
+
+
+

DebugKit

+
    + +
  • DebugKit is loaded.
  • + +
  • DebugKit is NOT loaded. You need to either install pdo_sqlite, or define the "debug_kit" connection name.
  • + +
+
+
+
+ +
+
+

Editing this Page

+
    +
  • To change the content of this page, edit: src/Template/Pages/home.ctp.
  • +
  • You can also add some CSS styles for your pages at: webroot/css/.
  • +
+
+
+

Getting Started

+ +
+
+ +
+
+

More about Cake

+

+ CakePHP is a rapid development framework for PHP which uses commonly known design patterns like Front Controller and MVC.
+ Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility. +

+
+
+
+ +
+
+ P +

Help and Bug Reports

+ +
+
+ r +

Docs and Downloads

+ +
+
+ s +

Training and Certification

+ +
+
+ + + diff --git a/resources/views/accountlinking.blade.php b/src/Template/profile/account_linking_view.ctp similarity index 91% rename from resources/views/accountlinking.blade.php rename to src/Template/profile/account_linking_view.ctp index 668ab05..9e3d958 100644 --- a/resources/views/accountlinking.blade.php +++ b/src/Template/profile/account_linking_view.ctp @@ -1,6 +1,4 @@ -@extends('layouts.profile.home') - @section('content') -
+
@@ -26,5 +24,4 @@
-
- @endsection \ No newline at end of file +
\ No newline at end of file diff --git a/resources/views/account.blade.php b/src/Template/profile/account_view.ctp similarity index 78% rename from resources/views/account.blade.php rename to src/Template/profile/account_view.ctp index 83931e9..034f038 100644 --- a/resources/views/account.blade.php +++ b/src/Template/profile/account_view.ctp @@ -1,8 +1,5 @@ -@extends('layouts.profile.home') -@section('content') -
-
-
+
+
@@ -13,5 +10,4 @@ - -@endsection \ No newline at end of file + \ No newline at end of file diff --git a/src/Template/profile/change_password_view.ctp b/src/Template/profile/change_password_view.ctp new file mode 100644 index 0000000..498cf38 --- /dev/null +++ b/src/Template/profile/change_password_view.ctp @@ -0,0 +1,13 @@ +
+
+
+
First Name:
Last Name:
+ + +
Old Password:
New Password:
+
+ + +
+
+
\ No newline at end of file diff --git a/resources/views/customobjects.blade.php b/src/Template/profile/custom_object_view.ctp similarity index 95% rename from resources/views/customobjects.blade.php rename to src/Template/profile/custom_object_view.ctp index 0596a52..7aa6f95 100644 --- a/resources/views/customobjects.blade.php +++ b/src/Template/profile/custom_object_view.ctp @@ -1,6 +1,4 @@ -@extends('layouts.profile.home') - @section('content') -
+
@@ -45,5 +43,4 @@
- - @endsection \ No newline at end of file + \ No newline at end of file diff --git a/resources/views/profile.blade.php b/src/Template/profile/profile_view.ctp similarity index 90% rename from resources/views/profile.blade.php rename to src/Template/profile/profile_view.ctp index 08ecf17..6246bbe 100644 --- a/resources/views/profile.blade.php +++ b/src/Template/profile/profile_view.ctp @@ -1,10 +1,9 @@ -@extends('layouts.profile.home') -@section('content') +
- + Html->image('user-blank.png')?>
Hello,
@@ -24,4 +23,3 @@
- @endsection \ No newline at end of file diff --git a/resources/views/multifactor.blade.php b/src/Template/profile/reset_multifactor_view.ctp similarity index 76% rename from resources/views/multifactor.blade.php rename to src/Template/profile/reset_multifactor_view.ctp index 1a8ac81..4c5bece 100644 --- a/resources/views/multifactor.blade.php +++ b/src/Template/profile/reset_multifactor_view.ctp @@ -1,6 +1,4 @@ -@extends('layouts.profile.home') -@section('content') -
+
Reset Google Authenticator configurations
@@ -9,5 +7,4 @@
-
- @endsection \ No newline at end of file +
\ No newline at end of file diff --git a/resources/views/roles.blade.php b/src/Template/profile/role_view.ctp similarity index 95% rename from resources/views/roles.blade.php rename to src/Template/profile/role_view.ctp index cd064fb..994f8cd 100644 --- a/resources/views/roles.blade.php +++ b/src/Template/profile/role_view.ctp @@ -1,5 +1,3 @@ -@extends('layouts.profile.home') -@section('content')
@@ -34,5 +32,4 @@





- - @endsection \ No newline at end of file + \ No newline at end of file diff --git a/resources/views/setpassword.blade.php b/src/Template/profile/set_password_view.ctp similarity index 76% rename from resources/views/setpassword.blade.php rename to src/Template/profile/set_password_view.ctp index 4caa776..ab30059 100644 --- a/resources/views/setpassword.blade.php +++ b/src/Template/profile/set_password_view.ctp @@ -1,6 +1,4 @@ -@extends('layouts.profile.home') - @section('content') -
+
Password:
@@ -9,7 +7,4 @@
-
- - @endsection - \ No newline at end of file +
\ No newline at end of file diff --git a/src/View/AjaxView.php b/src/View/AjaxView.php new file mode 100644 index 0000000..3cb7869 --- /dev/null +++ b/src/View/AjaxView.php @@ -0,0 +1,49 @@ +response = $this->response->withType('ajax'); + } +} diff --git a/src/View/AppView.php b/src/View/AppView.php new file mode 100644 index 0000000..7b92ebf --- /dev/null +++ b/src/View/AppView.php @@ -0,0 +1,40 @@ +loadHelper('Html');` + * + * @return void + */ + public function initialize() + { + } +} diff --git a/src/View/Cell/empty b/src/View/Cell/empty new file mode 100644 index 0000000..e69de29 diff --git a/src/View/Helper/empty b/src/View/Helper/empty new file mode 100644 index 0000000..e69de29 diff --git a/storage/app/.gitignore b/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore deleted file mode 100644 index b02b700..0000000 --- a/storage/framework/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -config.php -routes.php -schedule-* -compiled.php -services.json -events.scanned.php -routes.scanned.php -down diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/storage/framework/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php deleted file mode 100644 index 486dc27..0000000 --- a/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,23 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/tests/Fixture/empty b/tests/Fixture/empty new file mode 100644 index 0000000..e69de29 diff --git a/tests/TestCase.php b/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -bootstrap(); + $plugins = $app->getPlugins(); + + $this->assertCount(3, $plugins); + $this->assertSame('Bake', $plugins->get('Bake')->getName()); + $this->assertSame('Migrations', $plugins->get('Migrations')->getName()); + $this->assertSame('DebugKit', $plugins->get('DebugKit')->getName()); + } + + /** + * testBootstrapPluginWitoutHalt + * + * @return void + */ + public function testBootstrapPluginWitoutHalt() + { + $this->expectException(InvalidArgumentException::class); + + $app = $this->getMockBuilder(Application::class) + ->setConstructorArgs([dirname(dirname(__DIR__)) . '/config']) + ->setMethods(['addPlugin']) + ->getMock(); + + $app->method('addPlugin') + ->will($this->throwException(new InvalidArgumentException('test exception.'))); + + $app->bootstrap(); + } + + /** + * testMiddleware + * + * @return void + */ + public function testMiddleware() + { + $app = new Application(dirname(dirname(__DIR__)) . '/config'); + $middleware = new MiddlewareQueue(); + + $middleware = $app->middleware($middleware); + + $this->assertInstanceOf(ErrorHandlerMiddleware::class, $middleware->get(0)); + $this->assertInstanceOf(AssetMiddleware::class, $middleware->get(1)); + $this->assertInstanceOf(RoutingMiddleware::class, $middleware->get(2)); + } +} diff --git a/tests/TestCase/Controller/Component/empty b/tests/TestCase/Controller/Component/empty new file mode 100644 index 0000000..e69de29 diff --git a/tests/TestCase/Controller/PagesControllerTest.php b/tests/TestCase/Controller/PagesControllerTest.php new file mode 100644 index 0000000..11b8b1d --- /dev/null +++ b/tests/TestCase/Controller/PagesControllerTest.php @@ -0,0 +1,97 @@ +get('/'); + $this->assertResponseOk(); + $this->get('/'); + $this->assertResponseOk(); + } + + /** + * testDisplay method + * + * @return void + */ + public function testDisplay() + { + $this->get('/pages/home'); + $this->assertResponseOk(); + $this->assertResponseContains('CakePHP'); + $this->assertResponseContains(''); + } + + /** + * Test that missing template renders 404 page in production + * + * @return void + */ + public function testMissingTemplate() + { + Configure::write('debug', false); + $this->get('/pages/not_existing'); + + $this->assertResponseError(); + $this->assertResponseContains('Error'); + } + + /** + * Test that missing template in debug mode renders missing_template error page + * + * @return void + */ + public function testMissingTemplateInDebug() + { + Configure::write('debug', true); + $this->get('/pages/not_existing'); + + $this->assertResponseFailure(); + $this->assertResponseContains('Missing Template'); + $this->assertResponseContains('Stacktrace'); + $this->assertResponseContains('not_existing.ctp'); + } + + /** + * Test directory traversal protection + * + * @return void + */ + public function testDirectoryTraversalProtection() + { + $this->get('/pages/../Layout/ajax'); + $this->assertResponseCode(403); + $this->assertResponseContains('Forbidden'); + } +} diff --git a/tests/TestCase/Model/Behavior/empty b/tests/TestCase/Model/Behavior/empty new file mode 100644 index 0000000..e69de29 diff --git a/tests/TestCase/View/Helper/empty b/tests/TestCase/View/Helper/empty new file mode 100644 index 0000000..e69de29 diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php deleted file mode 100644 index 5663bb4..0000000 --- a/tests/Unit/ExampleTest.php +++ /dev/null @@ -1,20 +0,0 @@ -assertTrue(true); - } -} diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..0ca191e --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,12 @@ + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/webroot/css/base.css b/webroot/css/base.css new file mode 100644 index 0000000..458cd94 --- /dev/null +++ b/webroot/css/base.css @@ -0,0 +1,455 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +/** + * Foundation for Sites by ZURB + * Version 5 + */ + +/* + * Copyright (c) 2013-2014 ZURB, inc. +* MIT License +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +meta.foundation-version{font-family:"{{ VERSION }}"}meta.foundation-mq-small{font-family:"/only screen/";width:0}meta.foundation-mq-small-only{font-family:"/only screen and (max-width: 40em)/";width:0}meta.foundation-mq-medium{font-family:"/only screen and (min-width:40.0625em)/";width:40.0625em}meta.foundation-mq-medium-only{font-family:"/only screen and (min-width:40.0625em) and (max-width:64em)/";width:40.0625em}meta.foundation-mq-large{font-family:"/only screen and (min-width:64.0625em)/";width:64.0625em}meta.foundation-mq-large-only{font-family:"/only screen and (min-width:64.0625em) and (max-width:90em)/";width:64.0625em}meta.foundation-mq-xlarge{font-family:"/only screen and (min-width:90.0625em)/";width:90.0625em}meta.foundation-mq-xlarge-only{font-family:"/only screen and (min-width:90.0625em) and (max-width:120em)/";width:90.0625em}meta.foundation-mq-xxlarge{font-family:"/only screen and (min-width:120.0625em)/";width:120.0625em}meta.foundation-data-attribute-namespace{font-family:false}html,body{height:100%}html{box-sizing:border-box}*,*:before,*:after{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}html,body{font-size:100%}body{background:#fff;color:#222;cursor:auto;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:normal;line-height:1.5;margin:0;padding:0;position:relative}a:hover{cursor:pointer}img{max-width:100%;height:auto}img{-ms-interpolation-mode:bicubic}#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object,.mqa-display img,.mqa-display embed,.mqa-display object{max-width:none !important}.left{float:left !important}.right{float:right !important}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.hide{display:none}.invisible{visibility:hidden}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px}select{width:100%}.row{margin:0 auto;max-width:62.5rem;width:100%}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row.collapse .row{margin-left:0;margin-right:0}.row .row{margin:0 -0.9375rem;max-width:none;width:auto}.row .row:before,.row .row:after{content:" ";display:table}.row .row:after{clear:both}.row .row.collapse{margin:0;max-width:none;width:auto}.row .row.collapse:before,.row .row.collapse:after{content:" ";display:table}.row .row.collapse:after{clear:both}.column,.columns{padding-left:0.9375rem;padding-right:0.9375rem;width:100%;float:left}.column+.column:last-child,.columns+.column:last-child,.column+.columns:last-child,.columns+.columns:last-child{float:right}.column+.column.end,.columns+.column.end,.column+.columns.end,.columns+.columns.end{float:left}@media only screen{.small-push-0{position:relative;left:0;right:auto}.small-pull-0{position:relative;right:0;left:auto}.small-push-1{position:relative;left:8.33333%;right:auto}.small-pull-1{position:relative;right:8.33333%;left:auto}.small-push-2{position:relative;left:16.66667%;right:auto}.small-pull-2{position:relative;right:16.66667%;left:auto}.small-push-3{position:relative;left:25%;right:auto}.small-pull-3{position:relative;right:25%;left:auto}.small-push-4{position:relative;left:33.33333%;right:auto}.small-pull-4{position:relative;right:33.33333%;left:auto}.small-push-5{position:relative;left:41.66667%;right:auto}.small-pull-5{position:relative;right:41.66667%;left:auto}.small-push-6{position:relative;left:50%;right:auto}.small-pull-6{position:relative;right:50%;left:auto}.small-push-7{position:relative;left:58.33333%;right:auto}.small-pull-7{position:relative;right:58.33333%;left:auto}.small-push-8{position:relative;left:66.66667%;right:auto}.small-pull-8{position:relative;right:66.66667%;left:auto}.small-push-9{position:relative;left:75%;right:auto}.small-pull-9{position:relative;right:75%;left:auto}.small-push-10{position:relative;left:83.33333%;right:auto}.small-pull-10{position:relative;right:83.33333%;left:auto}.small-push-11{position:relative;left:91.66667%;right:auto}.small-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.small-1{width:8.33333%}.small-2{width:16.66667%}.small-3{width:25%}.small-4{width:33.33333%}.small-5{width:41.66667%}.small-6{width:50%}.small-7{width:58.33333%}.small-8{width:66.66667%}.small-9{width:75%}.small-10{width:83.33333%}.small-11{width:91.66667%}.small-12{width:100%}.small-offset-0{margin-left:0 !important}.small-offset-1{margin-left:8.33333% !important}.small-offset-2{margin-left:16.66667% !important}.small-offset-3{margin-left:25% !important}.small-offset-4{margin-left:33.33333% !important}.small-offset-5{margin-left:41.66667% !important}.small-offset-6{margin-left:50% !important}.small-offset-7{margin-left:58.33333% !important}.small-offset-8{margin-left:66.66667% !important}.small-offset-9{margin-left:75% !important}.small-offset-10{margin-left:83.33333% !important}.small-offset-11{margin-left:91.66667% !important}.small-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.small-centered,.columns.small-centered{margin-left:auto;margin-right:auto;float:none}.column.small-uncentered,.columns.small-uncentered{float:left;margin-left:0;margin-right:0}.column.small-centered:last-child,.columns.small-centered:last-child{float:none}.column.small-uncentered:last-child,.columns.small-uncentered:last-child{float:left}.column.small-uncentered.opposite,.columns.small-uncentered.opposite{float:right}.row.small-collapse>.column,.row.small-collapse>.columns{padding-left:0;padding-right:0}.row.small-collapse .row{margin-left:0;margin-right:0}.row.small-uncollapse>.column,.row.small-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}}@media only screen and (min-width: 40.0625em){.medium-push-0{position:relative;left:0;right:auto}.medium-pull-0{position:relative;right:0;left:auto}.medium-push-1{position:relative;left:8.33333%;right:auto}.medium-pull-1{position:relative;right:8.33333%;left:auto}.medium-push-2{position:relative;left:16.66667%;right:auto}.medium-pull-2{position:relative;right:16.66667%;left:auto}.medium-push-3{position:relative;left:25%;right:auto}.medium-pull-3{position:relative;right:25%;left:auto}.medium-push-4{position:relative;left:33.33333%;right:auto}.medium-pull-4{position:relative;right:33.33333%;left:auto}.medium-push-5{position:relative;left:41.66667%;right:auto}.medium-pull-5{position:relative;right:41.66667%;left:auto}.medium-push-6{position:relative;left:50%;right:auto}.medium-pull-6{position:relative;right:50%;left:auto}.medium-push-7{position:relative;left:58.33333%;right:auto}.medium-pull-7{position:relative;right:58.33333%;left:auto}.medium-push-8{position:relative;left:66.66667%;right:auto}.medium-pull-8{position:relative;right:66.66667%;left:auto}.medium-push-9{position:relative;left:75%;right:auto}.medium-pull-9{position:relative;right:75%;left:auto}.medium-push-10{position:relative;left:83.33333%;right:auto}.medium-pull-10{position:relative;right:83.33333%;left:auto}.medium-push-11{position:relative;left:91.66667%;right:auto}.medium-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.medium-1{width:8.33333%}.medium-2{width:16.66667%}.medium-3{width:25%}.medium-4{width:33.33333%}.medium-5{width:41.66667%}.medium-6{width:50%}.medium-7{width:58.33333%}.medium-8{width:66.66667%}.medium-9{width:75%}.medium-10{width:83.33333%}.medium-11{width:91.66667%}.medium-12{width:100%}.medium-offset-0{margin-left:0 !important}.medium-offset-1{margin-left:8.33333% !important}.medium-offset-2{margin-left:16.66667% !important}.medium-offset-3{margin-left:25% !important}.medium-offset-4{margin-left:33.33333% !important}.medium-offset-5{margin-left:41.66667% !important}.medium-offset-6{margin-left:50% !important}.medium-offset-7{margin-left:58.33333% !important}.medium-offset-8{margin-left:66.66667% !important}.medium-offset-9{margin-left:75% !important}.medium-offset-10{margin-left:83.33333% !important}.medium-offset-11{margin-left:91.66667% !important}.medium-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.medium-centered,.columns.medium-centered{margin-left:auto;margin-right:auto;float:none}.column.medium-uncentered,.columns.medium-uncentered{float:left;margin-left:0;margin-right:0}.column.medium-centered:last-child,.columns.medium-centered:last-child{float:none}.column.medium-uncentered:last-child,.columns.medium-uncentered:last-child{float:left}.column.medium-uncentered.opposite,.columns.medium-uncentered.opposite{float:right}.row.medium-collapse>.column,.row.medium-collapse>.columns{padding-left:0;padding-right:0}.row.medium-collapse .row{margin-left:0;margin-right:0}.row.medium-uncollapse>.column,.row.medium-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}.push-0{position:relative;left:0;right:auto}.pull-0{position:relative;right:0;left:auto}.push-1{position:relative;left:8.33333%;right:auto}.pull-1{position:relative;right:8.33333%;left:auto}.push-2{position:relative;left:16.66667%;right:auto}.pull-2{position:relative;right:16.66667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.33333%;right:auto}.pull-4{position:relative;right:33.33333%;left:auto}.push-5{position:relative;left:41.66667%;right:auto}.pull-5{position:relative;right:41.66667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.33333%;right:auto}.pull-7{position:relative;right:58.33333%;left:auto}.push-8{position:relative;left:66.66667%;right:auto}.pull-8{position:relative;right:66.66667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.33333%;right:auto}.pull-10{position:relative;right:83.33333%;left:auto}.push-11{position:relative;left:91.66667%;right:auto}.pull-11{position:relative;right:91.66667%;left:auto}}@media only screen and (min-width: 64.0625em){.large-push-0{position:relative;left:0;right:auto}.large-pull-0{position:relative;right:0;left:auto}.large-push-1{position:relative;left:8.33333%;right:auto}.large-pull-1{position:relative;right:8.33333%;left:auto}.large-push-2{position:relative;left:16.66667%;right:auto}.large-pull-2{position:relative;right:16.66667%;left:auto}.large-push-3{position:relative;left:25%;right:auto}.large-pull-3{position:relative;right:25%;left:auto}.large-push-4{position:relative;left:33.33333%;right:auto}.large-pull-4{position:relative;right:33.33333%;left:auto}.large-push-5{position:relative;left:41.66667%;right:auto}.large-pull-5{position:relative;right:41.66667%;left:auto}.large-push-6{position:relative;left:50%;right:auto}.large-pull-6{position:relative;right:50%;left:auto}.large-push-7{position:relative;left:58.33333%;right:auto}.large-pull-7{position:relative;right:58.33333%;left:auto}.large-push-8{position:relative;left:66.66667%;right:auto}.large-pull-8{position:relative;right:66.66667%;left:auto}.large-push-9{position:relative;left:75%;right:auto}.large-pull-9{position:relative;right:75%;left:auto}.large-push-10{position:relative;left:83.33333%;right:auto}.large-pull-10{position:relative;right:83.33333%;left:auto}.large-push-11{position:relative;left:91.66667%;right:auto}.large-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.large-1{width:8.33333%}.large-2{width:16.66667%}.large-3{width:25%}.large-4{width:33.33333%}.large-5{width:41.66667%}.large-6{width:50%}.large-7{width:58.33333%}.large-8{width:66.66667%}.large-9{width:75%}.large-10{width:83.33333%}.large-11{width:91.66667%}.large-12{width:100%}.large-offset-0{margin-left:0 !important}.large-offset-1{margin-left:8.33333% !important}.large-offset-2{margin-left:16.66667% !important}.large-offset-3{margin-left:25% !important}.large-offset-4{margin-left:33.33333% !important}.large-offset-5{margin-left:41.66667% !important}.large-offset-6{margin-left:50% !important}.large-offset-7{margin-left:58.33333% !important}.large-offset-8{margin-left:66.66667% !important}.large-offset-9{margin-left:75% !important}.large-offset-10{margin-left:83.33333% !important}.large-offset-11{margin-left:91.66667% !important}.large-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.large-centered,.columns.large-centered{margin-left:auto;margin-right:auto;float:none}.column.large-uncentered,.columns.large-uncentered{float:left;margin-left:0;margin-right:0}.column.large-centered:last-child,.columns.large-centered:last-child{float:none}.column.large-uncentered:last-child,.columns.large-uncentered:last-child{float:left}.column.large-uncentered.opposite,.columns.large-uncentered.opposite{float:right}.row.large-collapse>.column,.row.large-collapse>.columns{padding-left:0;padding-right:0}.row.large-collapse .row{margin-left:0;margin-right:0}.row.large-uncollapse>.column,.row.large-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}.push-0{position:relative;left:0;right:auto}.pull-0{position:relative;right:0;left:auto}.push-1{position:relative;left:8.33333%;right:auto}.pull-1{position:relative;right:8.33333%;left:auto}.push-2{position:relative;left:16.66667%;right:auto}.pull-2{position:relative;right:16.66667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.33333%;right:auto}.pull-4{position:relative;right:33.33333%;left:auto}.push-5{position:relative;left:41.66667%;right:auto}.pull-5{position:relative;right:41.66667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.33333%;right:auto}.pull-7{position:relative;right:58.33333%;left:auto}.push-8{position:relative;left:66.66667%;right:auto}.pull-8{position:relative;right:66.66667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.33333%;right:auto}.pull-10{position:relative;right:83.33333%;left:auto}.push-11{position:relative;left:91.66667%;right:auto}.pull-11{position:relative;right:91.66667%;left:auto}}button,.button{-webkit-appearance:none;-moz-appearance:none;border-radius:0;border-style:solid;border-width:0;cursor:pointer;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;line-height:normal;margin:0 0 1.25rem;position:relative;text-align:center;text-decoration:none;display:inline-block;padding:1rem 2rem 1.0625rem 2rem;font-size:1rem;background-color:#008CBA;border-color:#007095;color:#fff;transition:background-color 300ms ease-out}button:hover,button:focus,.button:hover,.button:focus{background-color:#007095}button:hover,button:focus,.button:hover,.button:focus{color:#fff}button.secondary,.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{background-color:#b9b9b9}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{color:#333}button.success,.button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{background-color:#368a55}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{color:#fff}button.alert,.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{background-color:#cf2a0e}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{color:#fff}button.warning,.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}button.warning:hover,button.warning:focus,.button.warning:hover,.button.warning:focus{background-color:#cf6e0e}button.warning:hover,button.warning:focus,.button.warning:hover,.button.warning:focus{color:#fff}button.info,.button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333}button.info:hover,button.info:focus,.button.info:hover,.button.info:focus{background-color:#61b6d9}button.info:hover,button.info:focus,.button.info:hover,.button.info:focus{color:#fff}button.large,.button.large{padding:1.125rem 2.25rem 1.1875rem 2.25rem;font-size:1.25rem}button.small,.button.small{padding:0.875rem 1.75rem 0.9375rem 1.75rem;font-size:0.8125rem}button.tiny,.button.tiny{padding:0.625rem 1.25rem 0.6875rem 1.25rem;font-size:0.6875rem}button.expand,.button.expand{padding-left:0;padding-right:0;width:100%}button.left-align,.button.left-align{text-align:left;text-indent:0.75rem}button.right-align,.button.right-align{text-align:right;padding-right:0.75rem}button.radius,.button.radius{border-radius:3px}button.round,.button.round{border-radius:1000px}button.disabled,button[disabled],.button.disabled,.button[disabled]{background-color:#008CBA;border-color:#007095;color:#fff;box-shadow:none;cursor:default;opacity:0.7}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#007095}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{color:#fff}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#008CBA}button.disabled.secondary,button[disabled].secondary,.button.disabled.secondary,.button[disabled].secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333;box-shadow:none;cursor:default;opacity:0.7}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#b9b9b9}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{color:#333}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#e7e7e7}button.disabled.success,button[disabled].success,.button.disabled.success,.button[disabled].success{background-color:#43AC6A;border-color:#368a55;color:#fff;box-shadow:none;cursor:default;opacity:0.7}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#368a55}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{color:#fff}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#43AC6A}button.disabled.alert,button[disabled].alert,.button.disabled.alert,.button[disabled].alert{background-color:#f04124;border-color:#cf2a0e;color:#fff;box-shadow:none;cursor:default;opacity:0.7}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#cf2a0e}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{color:#fff}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#f04124}button.disabled.warning,button[disabled].warning,.button.disabled.warning,.button[disabled].warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff;box-shadow:none;cursor:default;opacity:0.7}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#cf6e0e}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{color:#fff}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#f08a24}button.disabled.info,button[disabled].info,.button.disabled.info,.button[disabled].info{background-color:#a0d3e8;border-color:#61b6d9;color:#333;box-shadow:none;cursor:default;opacity:0.7}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{background-color:#61b6d9}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{color:#fff}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{background-color:#a0d3e8}button::-moz-focus-inner{border:0;padding:0}@media only screen and (min-width: 40.0625em){button,.button{display:inline-block}}form{margin:0 0 1rem}form .row .row{margin:0 -0.5rem}form .row .row .column,form .row .row .columns{padding:0 0.5rem}form .row .row.collapse{margin:0}form .row .row.collapse .column,form .row .row.collapse .columns{padding:0}form .row .row.collapse input{-webkit-border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-bottom-right-radius:0;border-top-right-radius:0}form .row input.column,form .row input.columns,form .row textarea.column,form .row textarea.columns{padding-left:0.5rem}label{color:#4d4d4d;cursor:pointer;display:block;font-size:0.875rem;font-weight:normal;line-height:1.5;margin-bottom:0}label.right{float:none !important;text-align:right}label.inline{margin:0 0 1rem 0;padding:0.5625rem 0}label small{text-transform:capitalize;color:#676767}.prefix,.postfix{border-style:solid;border-width:1px;display:block;font-size:0.875rem;height:2.3125rem;line-height:2.3125rem;overflow:visible;padding-bottom:0;padding-top:0;position:relative;text-align:center;width:100%;z-index:2}.postfix.button{border-color:true}.prefix.button{border:none;padding-left:0;padding-right:0;padding-bottom:0;padding-top:0;text-align:center}.prefix.button.radius{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.postfix.button.radius{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.prefix.button.round{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.postfix.button.round{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}span.prefix,label.prefix{background:#f2f2f2;border-right:none;color:#333;border-color:#ccc}span.postfix,label.postfix{background:#f2f2f2;color:#333;border-color:#ccc}input[type="text"],input[type="password"],input[type="date"],input[type="datetime"],input[type="datetime-local"],input[type="month"],input[type="week"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="time"],input[type="url"],input[type="color"],textarea{-webkit-appearance:none;-moz-appearance:none;border-radius:0;background-color:#fff;border-style:solid;border-width:1px;border-color:#ccc;box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);color:rgba(0,0,0,0.75);display:block;font-family:inherit;font-size:0.875rem;height:2.3125rem;margin:0 0 1rem 0;padding:0.5rem;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color 0.15s linear,background 0.15s linear;-moz-transition:border-color 0.15s linear,background 0.15s linear;-ms-transition:border-color 0.15s linear,background 0.15s linear;-o-transition:border-color 0.15s linear,background 0.15s linear;transition:border-color 0.15s linear,background 0.15s linear}input[type="text"]:focus,input[type="password"]:focus,input[type="date"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="month"]:focus,input[type="week"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="time"]:focus,input[type="url"]:focus,input[type="color"]:focus,textarea:focus{background:#fafafa;border-color:#999;outline:none}input[type="text"]:disabled,input[type="password"]:disabled,input[type="date"]:disabled,input[type="datetime"]:disabled,input[type="datetime-local"]:disabled,input[type="month"]:disabled,input[type="week"]:disabled,input[type="email"]:disabled,input[type="number"]:disabled,input[type="search"]:disabled,input[type="tel"]:disabled,input[type="time"]:disabled,input[type="url"]:disabled,input[type="color"]:disabled,textarea:disabled{background-color:#ddd;cursor:default}input[type="text"][disabled],input[type="text"][readonly],fieldset[disabled] input[type="text"],input[type="password"][disabled],input[type="password"][readonly],fieldset[disabled] input[type="password"],input[type="date"][disabled],input[type="date"][readonly],fieldset[disabled] input[type="date"],input[type="datetime"][disabled],input[type="datetime"][readonly],fieldset[disabled] input[type="datetime"],input[type="datetime-local"][disabled],input[type="datetime-local"][readonly],fieldset[disabled] input[type="datetime-local"],input[type="month"][disabled],input[type="month"][readonly],fieldset[disabled] input[type="month"],input[type="week"][disabled],input[type="week"][readonly],fieldset[disabled] input[type="week"],input[type="email"][disabled],input[type="email"][readonly],fieldset[disabled] input[type="email"],input[type="number"][disabled],input[type="number"][readonly],fieldset[disabled] input[type="number"],input[type="search"][disabled],input[type="search"][readonly],fieldset[disabled] input[type="search"],input[type="tel"][disabled],input[type="tel"][readonly],fieldset[disabled] input[type="tel"],input[type="time"][disabled],input[type="time"][readonly],fieldset[disabled] input[type="time"],input[type="url"][disabled],input[type="url"][readonly],fieldset[disabled] input[type="url"],input[type="color"][disabled],input[type="color"][readonly],fieldset[disabled] input[type="color"],textarea[disabled],textarea[readonly],fieldset[disabled] textarea{background-color:#ddd;cursor:default}input[type="text"].radius,input[type="password"].radius,input[type="date"].radius,input[type="datetime"].radius,input[type="datetime-local"].radius,input[type="month"].radius,input[type="week"].radius,input[type="email"].radius,input[type="number"].radius,input[type="search"].radius,input[type="tel"].radius,input[type="time"].radius,input[type="url"].radius,input[type="color"].radius,textarea.radius{border-radius:3px}form .row .prefix-radius.row.collapse input,form .row .prefix-radius.row.collapse textarea,form .row .prefix-radius.row.collapse select,form .row .prefix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}form .row .prefix-radius.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}form .row .postfix-radius.row.collapse input,form .row .postfix-radius.row.collapse textarea,form .row .postfix-radius.row.collapse select,form .row .postfix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}form .row .postfix-radius.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}form .row .prefix-round.row.collapse input,form .row .prefix-round.row.collapse textarea,form .row .prefix-round.row.collapse select,form .row .prefix-round.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}form .row .prefix-round.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}form .row .postfix-round.row.collapse input,form .row .postfix-round.row.collapse textarea,form .row .postfix-round.row.collapse select,form .row .postfix-round.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}form .row .postfix-round.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}input[type="submit"]{-webkit-appearance:none;-moz-appearance:none;border-radius:0}textarea[rows]{height:auto}textarea{max-width:100%}::-webkit-input-placeholder{color:#ccc}:-moz-placeholder{color:#ccc}::-moz-placeholder{color:#ccc}:-ms-input-placeholder{color:#ccc}select{-webkit-appearance:none !important;-moz-appearance:none !important;background-color:#FAFAFA;border-radius:0;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+);background-position:100% center;background-repeat:no-repeat;border-style:solid;border-width:1px;border-color:#ccc;color:rgba(0,0,0,0.75);font-family:inherit;font-size:0.875rem;line-height:normal;padding:0.5rem;border-radius:0;height:2.3125rem}select::-ms-expand{display:none}select.radius{border-radius:3px}select:hover{background-color:#f3f3f3;border-color:#999}select:disabled{background-color:#ddd;cursor:default}select[multiple]{height:auto}input[type="file"],input[type="checkbox"],input[type="radio"],select{margin:0 0 1rem 0}input[type="checkbox"]+label,input[type="radio"]+label{display:inline-block;margin-left:0.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}input[type="file"]{width:100%}fieldset{border:1px solid #ddd;margin:1.125rem 0;padding:1.25rem}fieldset legend{background:#fff;font-weight:bold;margin-left:-0.1875rem;margin:0;padding:0 0.1875rem}[data-abide] .error small.error,[data-abide] .error span.error,[data-abide] span.error,[data-abide] small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#fff}[data-abide] span.error,[data-abide] small.error{display:none}span.error,small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#fff}.error input,.error textarea,.error select{margin-bottom:0}.error input[type="checkbox"],.error input[type="radio"]{margin-bottom:1rem}.error label,.error label.error{color:#f04124}.error small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#fff}.error>label>small{background:transparent;color:#676767;display:inline;font-size:60%;font-style:normal;margin:0;padding:0;text-transform:capitalize}.error span.error-message{display:block}input.error,textarea.error,select.error{margin-bottom:0}label.error{color:#f04124}meta.foundation-mq-topbar{font-family:"/only screen and (min-width:40.0625em)/";width:40.0625em}.contain-to-grid{width:100%;background:#333}.contain-to-grid .top-bar{margin-bottom:0}.fixed{position:fixed;top:0;width:100%;z-index:99;left:0}.fixed.expanded:not(.top-bar){height:auto;max-height:100%;overflow-y:auto;width:100%}.fixed.expanded:not(.top-bar) .title-area{position:fixed;width:100%;z-index:99}.fixed.expanded:not(.top-bar) .top-bar-section{margin-top:2.8125rem;z-index:98}.top-bar{background:#333;height:2.8125rem;line-height:2.8125rem;margin-bottom:0;overflow:hidden;position:relative}.top-bar ul{list-style:none;margin-bottom:0}.top-bar .row{max-width:none}.top-bar form,.top-bar input,.top-bar select{margin-bottom:0}.top-bar input,.top-bar select{font-size:0.75rem;height:1.75rem;padding-bottom:.35rem;padding-top:.35rem}.top-bar .button,.top-bar button{font-size:0.75rem;margin-bottom:0;padding-bottom:0.4125rem;padding-top:0.4125rem}@media only screen and (max-width: 40em){.top-bar .button,.top-bar button{position:relative;top:-1px}}.top-bar .title-area{margin:0;position:relative}.top-bar .name{font-size:16px;height:2.8125rem;margin:0}.top-bar .name h1,.top-bar .name h2,.top-bar .name h3,.top-bar .name h4,.top-bar .name p,.top-bar .name span{font-size:1.0625rem;line-height:2.8125rem;margin:0}.top-bar .name h1 a,.top-bar .name h2 a,.top-bar .name h3 a,.top-bar .name h4 a,.top-bar .name p a,.top-bar .name span a{color:#fff;display:block;font-weight:normal;padding:0 0.9375rem;width:75%}.top-bar .toggle-topbar{position:absolute;right:0;top:0}.top-bar .toggle-topbar a{color:#fff;display:block;font-size:0.8125rem;font-weight:bold;height:2.8125rem;line-height:2.8125rem;padding:0 0.9375rem;position:relative;text-transform:uppercase}.top-bar .toggle-topbar.menu-icon{margin-top:-16px;top:50%}.top-bar .toggle-topbar.menu-icon a{color:#fff;height:34px;line-height:33px;padding:0 2.5rem 0 0.9375rem;position:relative}.top-bar .toggle-topbar.menu-icon a span::after{content:"";display:block;height:0;position:absolute;margin-top:-8px;top:50%;right:0.9375rem;box-shadow:0 0 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff;width:16px}.top-bar .toggle-topbar.menu-icon a span:hover:after{box-shadow:0 0 0 1px "",0 7px 0 1px "",0 14px 0 1px ""}.top-bar.expanded{background:transparent;height:auto}.top-bar.expanded .title-area{background:#333}.top-bar.expanded .toggle-topbar a{color:#888}.top-bar.expanded .toggle-topbar a span::after{box-shadow:0 0 0 1px #888,0 7px 0 1px #888,0 14px 0 1px #888}@media screen and (-webkit-min-device-pixel-ratio: 0){.top-bar.expanded .top-bar-section .has-dropdown.moved>.dropdown,.top-bar.expanded .top-bar-section .dropdown{clip:initial}.top-bar.expanded .top-bar-section .has-dropdown:not(.moved)>ul{padding:0}}.top-bar-section{left:0;position:relative;width:auto;transition:left 300ms ease-out}.top-bar-section ul{display:block;font-size:16px;height:auto;margin:0;padding:0;width:100%}.top-bar-section .divider,.top-bar-section [role="separator"]{border-top:solid 1px #1a1a1a;clear:both;height:1px;width:100%}.top-bar-section ul li{background:#333}.top-bar-section ul li>a{color:#fff;display:block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:0.8125rem;font-weight:normal;padding-left:0.9375rem;padding:12px 0 12px 0.9375rem;text-transform:none;width:100%}.top-bar-section ul li>a.button{font-size:0.8125rem;padding-left:0.9375rem;padding-right:0.9375rem;background-color:#008CBA;border-color:#007095;color:#fff}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{background-color:#007095}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{color:#fff}.top-bar-section ul li>a.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{color:#333}.top-bar-section ul li>a.button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{background-color:#368a55}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{color:#fff}.top-bar-section ul li>a.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{color:#fff}.top-bar-section ul li>a.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}.top-bar-section ul li>a.button.warning:hover,.top-bar-section ul li>a.button.warning:focus{background-color:#cf6e0e}.top-bar-section ul li>a.button.warning:hover,.top-bar-section ul li>a.button.warning:focus{color:#fff}.top-bar-section ul li>a.button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333}.top-bar-section ul li>a.button.info:hover,.top-bar-section ul li>a.button.info:focus{background-color:#61b6d9}.top-bar-section ul li>a.button.info:hover,.top-bar-section ul li>a.button.info:focus{color:#fff}.top-bar-section ul li>button{font-size:0.8125rem;padding-left:0.9375rem;padding-right:0.9375rem;background-color:#008CBA;border-color:#007095;color:#fff}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{background-color:#007095}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{color:#fff}.top-bar-section ul li>button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{color:#333}.top-bar-section ul li>button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{background-color:#368a55}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{color:#fff}.top-bar-section ul li>button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{color:#fff}.top-bar-section ul li>button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}.top-bar-section ul li>button.warning:hover,.top-bar-section ul li>button.warning:focus{background-color:#cf6e0e}.top-bar-section ul li>button.warning:hover,.top-bar-section ul li>button.warning:focus{color:#fff}.top-bar-section ul li>button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333}.top-bar-section ul li>button.info:hover,.top-bar-section ul li>button.info:focus{background-color:#61b6d9}.top-bar-section ul li>button.info:hover,.top-bar-section ul li>button.info:focus{color:#fff}.top-bar-section ul li:hover:not(.has-form)>a{background-color:#555;color:#fff;background:#222}.top-bar-section ul li.active>a{background:#008CBA;color:#fff}.top-bar-section ul li.active>a:hover{background:#0078a0;color:#fff}.top-bar-section .has-form{padding:0.9375rem}.top-bar-section .has-dropdown{position:relative}.top-bar-section .has-dropdown>a:after{border:inset 5px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent rgba(255,255,255,0.4);border-left-style:solid;margin-right:0.9375rem;margin-top:-4.5px;position:absolute;top:50%;right:0}.top-bar-section .has-dropdown.moved{position:static}.top-bar-section .has-dropdown.moved>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important;width:100%}.top-bar-section .has-dropdown.moved>a:after{display:none}.top-bar-section .dropdown{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px;display:block;padding:0;position:absolute;top:0;z-index:99;left:100%}.top-bar-section .dropdown li{height:auto;width:100%}.top-bar-section .dropdown li a{font-weight:normal;padding:8px 0.9375rem}.top-bar-section .dropdown li a.parent-link{font-weight:normal}.top-bar-section .dropdown li.title h5,.top-bar-section .dropdown li.parent-link{margin-bottom:0;margin-top:0;font-size:1.125rem}.top-bar-section .dropdown li.title h5 a,.top-bar-section .dropdown li.parent-link a{color:#fff;display:block}.top-bar-section .dropdown li.title h5 a:hover,.top-bar-section .dropdown li.parent-link a:hover{background:none}.top-bar-section .dropdown li.has-form{padding:8px 0.9375rem}.top-bar-section .dropdown li .button,.top-bar-section .dropdown li button{top:auto}.top-bar-section .dropdown label{color:#777;font-size:0.625rem;font-weight:bold;margin-bottom:0;padding:8px 0.9375rem 2px;text-transform:uppercase}.js-generated{display:block}@media only screen and (min-width: 40.0625em){.top-bar{background:#333;overflow:visible}.top-bar:before,.top-bar:after{content:" ";display:table}.top-bar:after{clear:both}.top-bar .toggle-topbar{display:none}.top-bar .title-area{float:left}.top-bar .name h1 a,.top-bar .name h2 a,.top-bar .name h3 a,.top-bar .name h4 a,.top-bar .name h5 a,.top-bar .name h6 a{width:auto}.top-bar input,.top-bar select,.top-bar .button,.top-bar button{font-size:0.875rem;height:1.75rem;position:relative;top:0.53125rem}.top-bar.expanded{background:#333}.contain-to-grid .top-bar{margin-bottom:0;margin:0 auto;max-width:62.5rem}.top-bar-section{transition:none 0 0;left:0 !important}.top-bar-section ul{display:inline;height:auto !important;width:auto}.top-bar-section ul li{float:left}.top-bar-section ul li .js-generated{display:none}.top-bar-section li.hover>a:not(.button){background-color:#555;background:#222;color:#fff}.top-bar-section li:not(.has-form) a:not(.button){background:#333;line-height:2.8125rem;padding:0 0.9375rem}.top-bar-section li:not(.has-form) a:not(.button):hover{background-color:#555;background:#222}.top-bar-section li.active:not(.has-form) a:not(.button){background:#008CBA;color:#fff;line-height:2.8125rem;padding:0 0.9375rem}.top-bar-section li.active:not(.has-form) a:not(.button):hover{background:#0078a0;color:#fff}.top-bar-section .has-dropdown>a{padding-right:2.1875rem !important}.top-bar-section .has-dropdown>a:after{border:inset 5px;content:"";display:block;height:0;width:0;border-color:rgba(255,255,255,0.4) transparent transparent transparent;border-top-style:solid;margin-top:-2.5px;top:1.40625rem}.top-bar-section .has-dropdown.moved{position:relative}.top-bar-section .has-dropdown.moved>.dropdown{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px;display:block}.top-bar-section .has-dropdown.hover>.dropdown,.top-bar-section .has-dropdown.not-click:hover>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.top-bar-section .has-dropdown>a:focus+.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.top-bar-section .has-dropdown .dropdown li.has-dropdown>a:after{border:none;content:"\00bb";top:0.1875rem;right:5px}.top-bar-section .dropdown{left:0;background:transparent;min-width:100%;top:auto}.top-bar-section .dropdown li a{background:#333;color:#fff;line-height:2.8125rem;padding:12px 0.9375rem;white-space:nowrap}.top-bar-section .dropdown li:not(.has-form):not(.active)>a:not(.button){background:#333;color:#fff}.top-bar-section .dropdown li:not(.has-form):not(.active):hover>a:not(.button){background-color:#555;color:#fff;background:#222}.top-bar-section .dropdown li label{background:#333;white-space:nowrap}.top-bar-section .dropdown li .dropdown{left:100%;top:0}.top-bar-section>ul>.divider,.top-bar-section>ul>[role="separator"]{border-right:solid 1px #4e4e4e;border-bottom:none;border-top:none;clear:none;height:2.8125rem;width:0}.top-bar-section .has-form{background:#333;height:2.8125rem;padding:0 0.9375rem}.top-bar-section .right li .dropdown{left:auto;right:0}.top-bar-section .right li .dropdown li .dropdown{right:100%}.top-bar-section .left li .dropdown{right:auto;left:0}.top-bar-section .left li .dropdown li .dropdown{left:100%}.no-js .top-bar-section ul li:hover>a{background-color:#555;background:#222;color:#fff}.no-js .top-bar-section ul li:active>a{background:#008CBA;color:#fff}.no-js .top-bar-section .has-dropdown:hover>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.no-js .top-bar-section .has-dropdown>a:focus+.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}}.breadcrumbs{border-style:solid;border-width:1px;display:block;list-style:none;margin-left:0;overflow:hidden;padding:0.5625rem 0.875rem 0.5625rem;background-color:#f4f4f4;border-color:#dcdcdc;border-radius:3px}.breadcrumbs>*{color:#008CBA;float:left;font-size:0.6875rem;line-height:0.6875rem;margin:0;text-transform:uppercase}.breadcrumbs>*:hover a,.breadcrumbs>*:focus a{text-decoration:underline}.breadcrumbs>* a{color:#008CBA}.breadcrumbs>*.current{color:#333;cursor:default}.breadcrumbs>*.current a{color:#333;cursor:default}.breadcrumbs>*.current:hover,.breadcrumbs>*.current:hover a,.breadcrumbs>*.current:focus,.breadcrumbs>*.current:focus a{text-decoration:none}.breadcrumbs>*.unavailable{color:#999}.breadcrumbs>*.unavailable a{color:#999}.breadcrumbs>*.unavailable:hover,.breadcrumbs>*.unavailable:hover a,.breadcrumbs>*.unavailable:focus,.breadcrumbs>*.unavailable a:focus{color:#999;cursor:not-allowed;text-decoration:none}.breadcrumbs>*:before{color:#aaa;content:"/";margin:0 0.75rem;position:relative;top:1px}.breadcrumbs>*:first-child:before{content:" ";margin:0}[aria-label="breadcrumbs"] [aria-hidden="true"]:after{content:"/"}.alert-box{border-style:solid;border-width:1px;display:block;font-size:0.8125rem;font-weight:normal;margin-bottom:1.25rem;padding:0.875rem 1.5rem 0.875rem 0.875rem;position:relative;transition:opacity 300ms ease-out;background-color:#008CBA;border-color:#0078a0;color:#fff}.alert-box .close{right:0.25rem;background:inherit;color:#333;font-size:1.375rem;line-height:.9;margin-top:-0.6875rem;opacity:0.3;padding:0 6px 4px;position:absolute;top:50%}.alert-box .close:hover,.alert-box .close:focus{opacity:0.5}.alert-box.radius{border-radius:3px}.alert-box.round{border-radius:1000px}.alert-box.success{background-color:#43AC6A;border-color:#3a945b;color:#fff}.alert-box.alert{background-color:#f04124;border-color:#de2d0f;color:#fff}.alert-box.secondary{background-color:#e7e7e7;border-color:#c7c7c7;color:#4f4f4f}.alert-box.warning{background-color:#f08a24;border-color:#de770f;color:#fff}.alert-box.info{background-color:#a0d3e8;border-color:#74bfdd;color:#4f4f4f}.alert-box.alert-close{opacity:0}.inline-list{list-style:none;margin-left:-1.375rem;margin-right:0;margin:0 auto 1.0625rem auto;overflow:hidden;padding:0}.inline-list>li{display:block;float:left;list-style:none;margin-left:1.375rem}.inline-list>li>*{display:block}.button-group{list-style:none;margin:0;left:0}.button-group:before,.button-group:after{content:" ";display:table}.button-group:after{clear:both}.button-group.even-2 li{display:inline-block;margin:0 -2px;width:50%}.button-group.even-2 li>button,.button-group.even-2 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-2 li:first-child button,.button-group.even-2 li:first-child .button{border-left:0}.button-group.even-2 li button,.button-group.even-2 li .button{width:100%}.button-group.even-3 li{display:inline-block;margin:0 -2px;width:33.33333%}.button-group.even-3 li>button,.button-group.even-3 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-3 li:first-child button,.button-group.even-3 li:first-child .button{border-left:0}.button-group.even-3 li button,.button-group.even-3 li .button{width:100%}.button-group.even-4 li{display:inline-block;margin:0 -2px;width:25%}.button-group.even-4 li>button,.button-group.even-4 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-4 li:first-child button,.button-group.even-4 li:first-child .button{border-left:0}.button-group.even-4 li button,.button-group.even-4 li .button{width:100%}.button-group.even-5 li{display:inline-block;margin:0 -2px;width:20%}.button-group.even-5 li>button,.button-group.even-5 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-5 li:first-child button,.button-group.even-5 li:first-child .button{border-left:0}.button-group.even-5 li button,.button-group.even-5 li .button{width:100%}.button-group.even-6 li{display:inline-block;margin:0 -2px;width:16.66667%}.button-group.even-6 li>button,.button-group.even-6 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-6 li:first-child button,.button-group.even-6 li:first-child .button{border-left:0}.button-group.even-6 li button,.button-group.even-6 li .button{width:100%}.button-group.even-7 li{display:inline-block;margin:0 -2px;width:14.28571%}.button-group.even-7 li>button,.button-group.even-7 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-7 li:first-child button,.button-group.even-7 li:first-child .button{border-left:0}.button-group.even-7 li button,.button-group.even-7 li .button{width:100%}.button-group.even-8 li{display:inline-block;margin:0 -2px;width:12.5%}.button-group.even-8 li>button,.button-group.even-8 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-8 li:first-child button,.button-group.even-8 li:first-child .button{border-left:0}.button-group.even-8 li button,.button-group.even-8 li .button{width:100%}.button-group>li{display:inline-block;margin:0 -2px}.button-group>li>button,.button-group>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group>li:first-child button,.button-group>li:first-child .button{border-left:0}.button-group.stack>li{display:block;margin:0;float:none}.button-group.stack>li>button,.button-group.stack>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack>li:first-child button,.button-group.stack>li:first-child .button{border-left:0}.button-group.stack>li>button,.button-group.stack>li .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.stack>li>button{width:100%}.button-group.stack>li:first-child button,.button-group.stack>li:first-child .button{border-top:0}.button-group.stack-for-small>li{display:inline-block;margin:0 -2px}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-left:0}@media only screen and (max-width: 40em){.button-group.stack-for-small>li{display:block;margin:0}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-left:0}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.stack-for-small>li>button{width:100%}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-top:0}}.button-group.radius>*{display:inline-block;margin:0 -2px}.button-group.radius>*>button,.button-group.radius>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius>*:first-child button,.button-group.radius>*:first-child .button{border-left:0}.button-group.radius>*,.button-group.radius>*>a,.button-group.radius>*>button,.button-group.radius>*>.button{border-radius:0}.button-group.radius>*:first-child,.button-group.radius>*:first-child>a,.button-group.radius>*:first-child>button,.button-group.radius>*:first-child>.button{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.button-group.radius>*:last-child,.button-group.radius>*:last-child>a,.button-group.radius>*:last-child>button,.button-group.radius>*:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.button-group.radius.stack>*{display:block;margin:0}.button-group.radius.stack>*>button,.button-group.radius.stack>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack>*:first-child button,.button-group.radius.stack>*:first-child .button{border-left:0}.button-group.radius.stack>*>button,.button-group.radius.stack>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.radius.stack>*>button{width:100%}.button-group.radius.stack>*:first-child button,.button-group.radius.stack>*:first-child .button{border-top:0}.button-group.radius.stack>*,.button-group.radius.stack>*>a,.button-group.radius.stack>*>button,.button-group.radius.stack>*>.button{border-radius:0}.button-group.radius.stack>*:first-child,.button-group.radius.stack>*:first-child>a,.button-group.radius.stack>*:first-child>button,.button-group.radius.stack>*:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.button-group.radius.stack>*:last-child,.button-group.radius.stack>*:last-child>a,.button-group.radius.stack>*:last-child>button,.button-group.radius.stack>*:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}@media only screen and (min-width: 40.0625em){.button-group.radius.stack-for-small>*{display:inline-block;margin:0 -2px}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-left:0}.button-group.radius.stack-for-small>*,.button-group.radius.stack-for-small>*>a,.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>*>.button{border-radius:0}.button-group.radius.stack-for-small>*:first-child,.button-group.radius.stack-for-small>*:first-child>a,.button-group.radius.stack-for-small>*:first-child>button,.button-group.radius.stack-for-small>*:first-child>.button{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.button-group.radius.stack-for-small>*:last-child,.button-group.radius.stack-for-small>*:last-child>a,.button-group.radius.stack-for-small>*:last-child>button,.button-group.radius.stack-for-small>*:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}}@media only screen and (max-width: 40em){.button-group.radius.stack-for-small>*{display:block;margin:0}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-left:0}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.radius.stack-for-small>*>button{width:100%}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-top:0}.button-group.radius.stack-for-small>*,.button-group.radius.stack-for-small>*>a,.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>*>.button{border-radius:0}.button-group.radius.stack-for-small>*:first-child,.button-group.radius.stack-for-small>*:first-child>a,.button-group.radius.stack-for-small>*:first-child>button,.button-group.radius.stack-for-small>*:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.button-group.radius.stack-for-small>*:last-child,.button-group.radius.stack-for-small>*:last-child>a,.button-group.radius.stack-for-small>*:last-child>button,.button-group.radius.stack-for-small>*:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}}.button-group.round>*{display:inline-block;margin:0 -2px}.button-group.round>*>button,.button-group.round>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round>*:first-child button,.button-group.round>*:first-child .button{border-left:0}.button-group.round>*,.button-group.round>*>a,.button-group.round>*>button,.button-group.round>*>.button{border-radius:0}.button-group.round>*:first-child,.button-group.round>*:first-child>a,.button-group.round>*:first-child>button,.button-group.round>*:first-child>.button{-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.button-group.round>*:last-child,.button-group.round>*:last-child>a,.button-group.round>*:last-child>button,.button-group.round>*:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}.button-group.round.stack>*{display:block;margin:0}.button-group.round.stack>*>button,.button-group.round.stack>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack>*:first-child button,.button-group.round.stack>*:first-child .button{border-left:0}.button-group.round.stack>*>button,.button-group.round.stack>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.round.stack>*>button{width:100%}.button-group.round.stack>*:first-child button,.button-group.round.stack>*:first-child .button{border-top:0}.button-group.round.stack>*,.button-group.round.stack>*>a,.button-group.round.stack>*>button,.button-group.round.stack>*>.button{border-radius:0}.button-group.round.stack>*:first-child,.button-group.round.stack>*:first-child>a,.button-group.round.stack>*:first-child>button,.button-group.round.stack>*:first-child>.button{-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem}.button-group.round.stack>*:last-child,.button-group.round.stack>*:last-child>a,.button-group.round.stack>*:last-child>button,.button-group.round.stack>*:last-child>.button{-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}@media only screen and (min-width: 40.0625em){.button-group.round.stack-for-small>*{display:inline-block;margin:0 -2px}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-left:0}.button-group.round.stack-for-small>*,.button-group.round.stack-for-small>*>a,.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>*>.button{border-radius:0}.button-group.round.stack-for-small>*:first-child,.button-group.round.stack-for-small>*:first-child>a,.button-group.round.stack-for-small>*:first-child>button,.button-group.round.stack-for-small>*:first-child>.button{-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.button-group.round.stack-for-small>*:last-child,.button-group.round.stack-for-small>*:last-child>a,.button-group.round.stack-for-small>*:last-child>button,.button-group.round.stack-for-small>*:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}}@media only screen and (max-width: 40em){.button-group.round.stack-for-small>*{display:block;margin:0}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-left:0}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.round.stack-for-small>*>button{width:100%}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-top:0}.button-group.round.stack-for-small>*,.button-group.round.stack-for-small>*>a,.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>*>.button{border-radius:0}.button-group.round.stack-for-small>*:first-child,.button-group.round.stack-for-small>*:first-child>a,.button-group.round.stack-for-small>*:first-child>button,.button-group.round.stack-for-small>*:first-child>.button{-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem}.button-group.round.stack-for-small>*:last-child,.button-group.round.stack-for-small>*:last-child>a,.button-group.round.stack-for-small>*:last-child>button,.button-group.round.stack-for-small>*:last-child>.button{-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}}.button-bar:before,.button-bar:after{content:" ";display:table}.button-bar:after{clear:both}.button-bar .button-group{float:left;margin-right:0.625rem}.button-bar .button-group div{overflow:hidden}.panel{border-style:solid;border-width:1px;border-color:#d8d8d8;margin-bottom:1.25rem;padding:1.25rem;background:#f2f2f2;color:#333}.panel>:first-child{margin-top:0}.panel>:last-child{margin-bottom:0}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6,.panel p,.panel li,.panel dl{color:#333}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6{line-height:1;margin-bottom:0.625rem}.panel h1.subheader,.panel h2.subheader,.panel h3.subheader,.panel h4.subheader,.panel h5.subheader,.panel h6.subheader{line-height:1.4}.panel.callout{border-style:solid;border-width:1px;border-color:#d8d8d8;margin-bottom:1.25rem;padding:1.25rem;background:#ecfaff;color:#333}.panel.callout>:first-child{margin-top:0}.panel.callout>:last-child{margin-bottom:0}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6,.panel.callout p,.panel.callout li,.panel.callout dl{color:#333}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6{line-height:1;margin-bottom:0.625rem}.panel.callout h1.subheader,.panel.callout h2.subheader,.panel.callout h3.subheader,.panel.callout h4.subheader,.panel.callout h5.subheader,.panel.callout h6.subheader{line-height:1.4}.panel.callout a:not(.button){color:#008CBA}.panel.callout a:not(.button):hover,.panel.callout a:not(.button):focus{color:#0078a0}.panel.radius{border-radius:3px}.dropdown.button,button.dropdown{position:relative;padding-right:3.5625rem}.dropdown.button::after,button.dropdown::after{border-color:#fff transparent transparent transparent;border-style:solid;content:"";display:block;height:0;position:absolute;top:50%;width:0}.dropdown.button::after,button.dropdown::after{border-width:0.375rem;right:1.40625rem;margin-top:-0.15625rem}.dropdown.button::after,button.dropdown::after{border-color:#fff transparent transparent transparent}.dropdown.button.tiny,button.dropdown.tiny{padding-right:2.625rem}.dropdown.button.tiny:after,button.dropdown.tiny:after{border-width:0.375rem;right:1.125rem;margin-top:-0.125rem}.dropdown.button.tiny::after,button.dropdown.tiny::after{border-color:#fff transparent transparent transparent}.dropdown.button.small,button.dropdown.small{padding-right:3.0625rem}.dropdown.button.small::after,button.dropdown.small::after{border-width:0.4375rem;right:1.3125rem;margin-top:-0.15625rem}.dropdown.button.small::after,button.dropdown.small::after{border-color:#fff transparent transparent transparent}.dropdown.button.large,button.dropdown.large{padding-right:3.625rem}.dropdown.button.large::after,button.dropdown.large::after{border-width:0.3125rem;right:1.71875rem;margin-top:-0.15625rem}.dropdown.button.large::after,button.dropdown.large::after{border-color:#fff transparent transparent transparent}.dropdown.button.secondary:after,button.dropdown.secondary:after{border-color:#333 transparent transparent transparent}.th{border:solid 4px #fff;box-shadow:0 0 0 1px rgba(0,0,0,0.2);display:inline-block;line-height:0;max-width:100%;transition:all 200ms ease-out}.th:hover,.th:focus{box-shadow:0 0 6px 1px rgba(0,140,186,0.5)}.th.radius{border-radius:3px}.pricing-table{border:solid 1px #ddd;margin-left:0;margin-bottom:1.25rem}.pricing-table *{list-style:none;line-height:1}.pricing-table .title{background-color:#333;color:#eee;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem;font-weight:normal;padding:0.9375rem 1.25rem;text-align:center}.pricing-table .price{background-color:#F6F6F6;color:#333;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:2rem;font-weight:normal;padding:0.9375rem 1.25rem;text-align:center}.pricing-table .description{background-color:#fff;border-bottom:dotted 1px #ddd;color:#777;font-size:0.75rem;font-weight:normal;line-height:1.4;padding:0.9375rem;text-align:center}.pricing-table .bullet-item{background-color:#fff;border-bottom:dotted 1px #ddd;color:#333;font-size:0.875rem;font-weight:normal;padding:0.9375rem;text-align:center}.pricing-table .cta-button{background-color:#fff;padding:1.25rem 1.25rem 0;text-align:center}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}.slideshow-wrapper{position:relative}.slideshow-wrapper ul{list-style-type:none;margin:0}.slideshow-wrapper ul li,.slideshow-wrapper ul li .orbit-caption{display:none}.slideshow-wrapper ul li:first-child{display:block}.slideshow-wrapper .orbit-container{background-color:transparent}.slideshow-wrapper .orbit-container li{display:block}.slideshow-wrapper .orbit-container li .orbit-caption{display:block}.slideshow-wrapper .orbit-container .orbit-bullets li{display:inline-block}.slideshow-wrapper .preloader{border-radius:1000px;animation-duration:1.5s;animation-iteration-count:infinite;animation-name:rotate;animation-timing-function:linear;border-color:#555 #fff;border:solid 3px;display:block;height:40px;left:50%;margin-left:-20px;margin-top:-20px;position:absolute;top:50%;width:40px}.orbit-container{background:none;overflow:hidden;position:relative;width:100%}.orbit-container .orbit-slides-container{list-style:none;margin:0;padding:0;position:relative;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.orbit-container .orbit-slides-container img{display:block;max-width:100%}.orbit-container .orbit-slides-container>*{position:absolute;top:0;width:100%;margin-left:100%}.orbit-container .orbit-slides-container>*:first-child{margin-left:0}.orbit-container .orbit-slides-container>* .orbit-caption{bottom:0;position:absolute;background-color:rgba(51,51,51,0.8);color:#fff;font-size:0.875rem;padding:0.625rem 0.875rem;width:100%}.orbit-container .orbit-slide-number{left:10px;background:transparent;color:#fff;font-size:12px;position:absolute;top:10px;z-index:10}.orbit-container .orbit-slide-number span{font-weight:700;padding:0.3125rem}.orbit-container .orbit-timer{position:absolute;top:12px;right:10px;height:6px;width:100px;z-index:10}.orbit-container .orbit-timer .orbit-progress{height:3px;background-color:rgba(255,255,255,0.3);display:block;width:0;position:relative;right:20px;top:5px}.orbit-container .orbit-timer>span{border:solid 4px #fff;border-bottom:none;border-top:none;display:none;height:14px;position:absolute;top:0;width:11px;right:0}.orbit-container .orbit-timer.paused>span{top:0;width:11px;height:14px;border:inset 8px;border-left-style:solid;border-color:transparent;border-left-color:#fff;right:-4px}.orbit-container .orbit-timer.paused>span.dark{border-left-color:#333}.orbit-container:hover .orbit-timer>span{display:block}.orbit-container .orbit-prev,.orbit-container .orbit-next{background-color:transparent;color:white;height:60px;line-height:50px;margin-top:-25px;position:absolute;text-indent:-9999px !important;top:45%;width:36px;z-index:10}.orbit-container .orbit-prev:hover,.orbit-container .orbit-next:hover{background-color:rgba(0,0,0,0.3)}.orbit-container .orbit-prev>span,.orbit-container .orbit-next>span{border:inset 10px;display:block;height:0;margin-top:-10px;position:absolute;top:50%;width:0}.orbit-container .orbit-prev{left:0}.orbit-container .orbit-prev>span{border-right-style:solid;border-color:transparent;border-right-color:#fff}.orbit-container .orbit-prev:hover>span{border-right-color:#fff}.orbit-container .orbit-next{right:0}.orbit-container .orbit-next>span{border-color:transparent;border-left-style:solid;border-left-color:#fff;left:50%;margin-left:-4px}.orbit-container .orbit-next:hover>span{border-left-color:#fff}.orbit-bullets-container{text-align:center}.orbit-bullets{display:block;float:none;margin:0 auto 30px auto;overflow:hidden;position:relative;text-align:center;top:10px}.orbit-bullets li{background:#ccc;cursor:pointer;display:inline-block;float:none;height:0.5625rem;margin-right:6px;width:0.5625rem;border-radius:1000px}.orbit-bullets li.active{background:#999}.orbit-bullets li:last-child{margin-right:0}.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:none}.touch .orbit-bullets{display:none}@media only screen and (min-width: 40.0625em){.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:inherit}.touch .orbit-bullets{display:block}}@media only screen and (max-width: 40em){.orbit-stack-on-small .orbit-slides-container{height:auto !important}.orbit-stack-on-small .orbit-slides-container>*{margin:0 !important;opacity:1 !important;position:relative}.orbit-stack-on-small .orbit-slide-number{display:none}.orbit-timer{display:none}.orbit-next,.orbit-prev{display:none}.orbit-bullets{display:none}}[data-magellan-expedition],[data-magellan-expedition-clone]{background:#fff;min-width:100%;padding:10px;z-index:50}[data-magellan-expedition] .sub-nav,[data-magellan-expedition-clone] .sub-nav{margin-bottom:0}[data-magellan-expedition] .sub-nav dd,[data-magellan-expedition-clone] .sub-nav dd{margin-bottom:0}[data-magellan-expedition] .sub-nav a,[data-magellan-expedition-clone] .sub-nav a{line-height:1.8em}.icon-bar{display:inline-block;font-size:0;width:100%;background:#333}.icon-bar>*{display:block;float:left;font-size:1rem;margin:0 auto;padding:1.25rem;text-align:center;width:25%}.icon-bar>* i,.icon-bar>* img{display:block;margin:0 auto}.icon-bar>* i+label,.icon-bar>* img+label{margin-top:.0625rem}.icon-bar>* i{font-size:1.875rem;vertical-align:middle}.icon-bar>* img{height:1.875rem;width:1.875rem}.icon-bar.label-right>* i,.icon-bar.label-right>* img{display:inline-block;margin:0 .0625rem 0 0}.icon-bar.label-right>* i+label,.icon-bar.label-right>* img+label{margin-top:0}.icon-bar.label-right>* label{display:inline-block}.icon-bar.vertical.label-right>*{text-align:left}.icon-bar.vertical,.icon-bar.small-vertical{height:100%;width:auto}.icon-bar.vertical .item,.icon-bar.small-vertical .item{float:none;margin:auto;width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.medium-vertical{height:100%;width:auto}.icon-bar.medium-vertical .item{float:none;margin:auto;width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.large-vertical{height:100%;width:auto}.icon-bar.large-vertical .item{float:none;margin:auto;width:auto}}.icon-bar>*{font-size:1rem;padding:1.25rem}.icon-bar>* i+label,.icon-bar>* img+label{margin-top:.0625rem;font-size:1rem}.icon-bar>* i{font-size:1.875rem}.icon-bar>* img{height:1.875rem;width:1.875rem}.icon-bar>* label{color:#fff}.icon-bar>* i{color:#fff}.icon-bar>a:hover{background:#008CBA}.icon-bar>a:hover label{color:#fff}.icon-bar>a:hover i{color:#fff}.icon-bar>a.active{background:#008CBA}.icon-bar>a.active label{color:#fff}.icon-bar>a.active i{color:#fff}.icon-bar .item.disabled{cursor:not-allowed;opacity:0.7;pointer-events:none}.icon-bar .item.disabled>*{opacity:0.7;cursor:not-allowed}.icon-bar.two-up .item{width:50%}.icon-bar.two-up.vertical .item,.icon-bar.two-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.two-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.two-up.large-vertical .item{width:auto}}.icon-bar.three-up .item{width:33.3333%}.icon-bar.three-up.vertical .item,.icon-bar.three-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.three-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.three-up.large-vertical .item{width:auto}}.icon-bar.four-up .item{width:25%}.icon-bar.four-up.vertical .item,.icon-bar.four-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.four-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.four-up.large-vertical .item{width:auto}}.icon-bar.five-up .item{width:20%}.icon-bar.five-up.vertical .item,.icon-bar.five-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.five-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.five-up.large-vertical .item{width:auto}}.icon-bar.six-up .item{width:16.66667%}.icon-bar.six-up.vertical .item,.icon-bar.six-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.six-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.six-up.large-vertical .item{width:auto}}.icon-bar.seven-up .item{width:14.28571%}.icon-bar.seven-up.vertical .item,.icon-bar.seven-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.seven-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.seven-up.large-vertical .item{width:auto}}.icon-bar.eight-up .item{width:12.5%}.icon-bar.eight-up.vertical .item,.icon-bar.eight-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.eight-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.eight-up.large-vertical .item{width:auto}}.icon-bar.two-up .item{width:50%}.icon-bar.two-up.vertical .item,.icon-bar.two-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.two-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.two-up.large-vertical .item{width:auto}}.icon-bar.three-up .item{width:33.3333%}.icon-bar.three-up.vertical .item,.icon-bar.three-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.three-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.three-up.large-vertical .item{width:auto}}.icon-bar.four-up .item{width:25%}.icon-bar.four-up.vertical .item,.icon-bar.four-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.four-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.four-up.large-vertical .item{width:auto}}.icon-bar.five-up .item{width:20%}.icon-bar.five-up.vertical .item,.icon-bar.five-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.five-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.five-up.large-vertical .item{width:auto}}.icon-bar.six-up .item{width:16.66667%}.icon-bar.six-up.vertical .item,.icon-bar.six-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.six-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.six-up.large-vertical .item{width:auto}}.icon-bar.seven-up .item{width:14.28571%}.icon-bar.seven-up.vertical .item,.icon-bar.seven-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.seven-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.seven-up.large-vertical .item{width:auto}}.icon-bar.eight-up .item{width:12.5%}.icon-bar.eight-up.vertical .item,.icon-bar.eight-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.eight-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.eight-up.large-vertical .item{width:auto}}.tabs{margin-bottom:0 !important;margin-left:0}.tabs:before,.tabs:after{content:" ";display:table}.tabs:after{clear:both}.tabs dd,.tabs .tab-title{float:left;list-style:none;margin-bottom:0 !important;position:relative}.tabs dd>a,.tabs .tab-title>a{display:block;background-color:#EFEFEF;color:#222;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem;padding:1rem 2rem}.tabs dd>a:hover,.tabs .tab-title>a:hover{background-color:#e1e1e1}.tabs dd.active a,.tabs .tab-title.active a{background-color:#fff;color:#222}.tabs.radius dd:first-child a,.tabs.radius .tab:first-child a{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.tabs.radius dd:last-child a,.tabs.radius .tab:last-child a{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.tabs.vertical dd,.tabs.vertical .tab-title{position:inherit;float:none;display:block;top:auto}.tabs-content{margin-bottom:1.5rem;width:100%}.tabs-content:before,.tabs-content:after{content:" ";display:table}.tabs-content:after{clear:both}.tabs-content>.content{display:none;float:left;padding:0.9375rem 0;width:100%}.tabs-content>.content.active{display:block;float:none}.tabs-content>.content.contained{padding:0.9375rem}.tabs-content.vertical{display:block}.tabs-content.vertical>.content{padding:0 0.9375rem}@media only screen and (min-width: 40.0625em){.tabs.vertical{float:left;margin:0;margin-bottom:1.25rem !important;max-width:20%;width:20%}.tabs-content.vertical{float:left;margin-left:-1px;max-width:80%;padding-left:1rem;width:80%}}.no-js .tabs-content>.content{display:block;float:none}ul.pagination{display:block;margin-left:-0.3125rem;min-height:1.5rem}ul.pagination li{color:#222;font-size:0.875rem;height:1.5rem;margin-left:0.3125rem}ul.pagination li a,ul.pagination li button{border-radius:3px;transition:background-color 300ms ease-out;background:none;color:#999;display:block;font-size:1em;font-weight:normal;line-height:inherit;padding:0.0625rem 0.625rem 0.0625rem}ul.pagination li:hover a,ul.pagination li a:focus,ul.pagination li:hover button,ul.pagination li button:focus{background:#e6e6e6}ul.pagination li.unavailable a,ul.pagination li.unavailable button{cursor:default;color:#999}ul.pagination li.unavailable:hover a,ul.pagination li.unavailable a:focus,ul.pagination li.unavailable:hover button,ul.pagination li.unavailable button:focus{background:transparent}ul.pagination li.current a,ul.pagination li.current button{background:#008CBA;color:#fff;cursor:default;font-weight:bold}ul.pagination li.current a:hover,ul.pagination li.current a:focus,ul.pagination li.current button:hover,ul.pagination li.current button:focus{background:#008CBA}ul.pagination li{display:block;float:left}.pagination-centered{text-align:center}.pagination-centered ul.pagination li{display:inline-block;float:none}.side-nav{display:block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;list-style-position:outside;list-style-type:none;margin:0;padding:0.875rem 0}.side-nav li{font-size:0.875rem;font-weight:normal;margin:0 0 0.4375rem 0}.side-nav li a:not(.button){color:#008CBA;display:block;margin:0;padding:0.4375rem 0.875rem}.side-nav li a:not(.button):hover,.side-nav li a:not(.button):focus{background:rgba(0,0,0,0.025);color:#1cc7ff}.side-nav li a:not(.button):active{color:#1cc7ff}.side-nav li.active>a:first-child:not(.button){color:#1cc7ff;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal}.side-nav li.divider{border-top:1px solid;height:0;list-style:none;padding:0;border-top-color:#e6e6e6}.side-nav li.heading{color:#008CBA;font-size:0.875rem;font-weight:bold;text-transform:uppercase}.accordion{margin-bottom:0}.accordion:before,.accordion:after{content:" ";display:table}.accordion:after{clear:both}.accordion .accordion-navigation,.accordion dd{display:block;margin-bottom:0 !important}.accordion .accordion-navigation.active>a,.accordion dd.active>a{background:#e8e8e8}.accordion .accordion-navigation>a,.accordion dd>a{background:#EFEFEF;color:#222;display:block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem;padding:1rem}.accordion .accordion-navigation>a:hover,.accordion dd>a:hover{background:#e3e3e3}.accordion .accordion-navigation>.content,.accordion dd>.content{display:none;padding:0.9375rem}.accordion .accordion-navigation>.content.active,.accordion dd>.content.active{background:#fff;display:block}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}.text-justify{text-align:justify !important}@media only screen and (max-width: 40em){.small-only-text-left{text-align:left !important}.small-only-text-right{text-align:right !important}.small-only-text-center{text-align:center !important}.small-only-text-justify{text-align:justify !important}}@media only screen{.small-text-left{text-align:left !important}.small-text-right{text-align:right !important}.small-text-center{text-align:center !important}.small-text-justify{text-align:justify !important}}@media only screen and (min-width: 40.0625em) and (max-width: 64em){.medium-only-text-left{text-align:left !important}.medium-only-text-right{text-align:right !important}.medium-only-text-center{text-align:center !important}.medium-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 40.0625em){.medium-text-left{text-align:left !important}.medium-text-right{text-align:right !important}.medium-text-center{text-align:center !important}.medium-text-justify{text-align:justify !important}}@media only screen and (min-width: 64.0625em) and (max-width: 90em){.large-only-text-left{text-align:left !important}.large-only-text-right{text-align:right !important}.large-only-text-center{text-align:center !important}.large-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 64.0625em){.large-text-left{text-align:left !important}.large-text-right{text-align:right !important}.large-text-center{text-align:center !important}.large-text-justify{text-align:justify !important}}@media only screen and (min-width: 90.0625em) and (max-width: 120em){.xlarge-only-text-left{text-align:left !important}.xlarge-only-text-right{text-align:right !important}.xlarge-only-text-center{text-align:center !important}.xlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 90.0625em){.xlarge-text-left{text-align:left !important}.xlarge-text-right{text-align:right !important}.xlarge-text-center{text-align:center !important}.xlarge-text-justify{text-align:justify !important}}@media only screen and (min-width: 120.0625em) and (max-width: 6249999.9375em){.xxlarge-only-text-left{text-align:left !important}.xxlarge-only-text-right{text-align:right !important}.xxlarge-only-text-center{text-align:center !important}.xxlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 120.0625em){.xxlarge-text-left{text-align:left !important}.xxlarge-text-right{text-align:right !important}.xxlarge-text-center{text-align:center !important}.xxlarge-text-justify{text-align:justify !important}}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}a{color:#008CBA;line-height:inherit;text-decoration:none}a:hover,a:focus{color:#0078a0}a img{border:none}p{font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.6;margin-bottom:1.25rem;text-rendering:optimizeLegibility}p.lead{font-size:1.21875rem;line-height:1.6}p aside{font-size:0.875rem;font-style:italic;line-height:1.35}h1,h2,h3,h4,h5,h6{color:#222;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:normal;line-height:1.4;margin-bottom:0.5rem;margin-top:0.2rem;text-rendering:optimizeLegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#6f6f6f;font-size:60%;line-height:0}h1{font-size:2.125rem}h2{font-size:1.6875rem}h3{font-size:1.375rem}h4{font-size:1.125rem}h5{font-size:1.125rem}h6{font-size:1rem}.subheader{line-height:1.4;color:#6f6f6f;font-weight:normal;margin-top:0.2rem;margin-bottom:0.5rem}hr{border:solid #ddd;border-width:1px 0 0;clear:both;height:0;margin:1.25rem 0 1.1875rem}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:60%;line-height:inherit}code{background-color:#f8f8f8;border-color:#dfdfdf;border-style:solid;border-width:1px;color:#333;font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:normal;padding:0.125rem 0.3125rem 0.0625rem}ul,ol,dl{font-family:inherit;font-size:1rem;line-height:1.6;list-style-position:outside;margin-bottom:1.25rem}ul{margin-left:1.1rem}ul.no-bullet{margin-left:0}ul.no-bullet li ul,ul.no-bullet li ol{margin-left:1.25rem;margin-bottom:0;list-style:none}ul li ul,ul li ol{margin-left:1.25rem;margin-bottom:0}ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}ul.square{list-style-type:square;margin-left:1.1rem}ul.circle{list-style-type:circle;margin-left:1.1rem}ul.disc{list-style-type:disc;margin-left:1.1rem}ul.no-bullet{list-style:none}ol{margin-left:1.4rem}ol li ul,ol li ol{margin-left:1.25rem;margin-bottom:0}dl dt{margin-bottom:0.3rem;font-weight:bold}dl dd{margin-bottom:0.75rem}abbr,acronym{text-transform:uppercase;font-size:90%;color:#222;cursor:help}abbr{text-transform:none}abbr[title]{border-bottom:1px dotted #ddd}blockquote{margin:0 0 1.25rem;padding:0.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #ddd}blockquote cite{display:block;font-size:0.8125rem;color:#555}blockquote cite:before{content:"\2014 \0020"}blockquote cite a,blockquote cite a:visited{color:#555}blockquote,blockquote p{line-height:1.6;color:#6f6f6f}.vcard{display:inline-block;margin:0 0 1.25rem 0;border:1px solid #ddd;padding:0.625rem 0.75rem}.vcard li{margin:0;display:block}.vcard .fn{font-weight:bold;font-size:0.9375rem}.vevent .summary{font-weight:bold}.vevent abbr{cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 0.0625rem}@media only screen and (min-width: 40.0625em){h1,h2,h3,h4,h5,h6{line-height:1.4}h1{font-size:2.75rem}h2{font-size:2.3125rem}h3{font-size:1.6875rem}h4{font-size:1.4375rem}h5{font-size:1.125rem}h6{font-size:1rem}}.split.button{position:relative;padding-right:5.0625rem}.split.button span{display:block;height:100%;position:absolute;right:0;top:0;border-left:solid 1px}.split.button span:after{position:absolute;content:"";width:0;height:0;display:block;border-style:inset;top:50%;left:50%}.split.button span:active{background-color:rgba(0,0,0,0.1)}.split.button span{border-left-color:rgba(255,255,255,0.5)}.split.button span{width:3.09375rem}.split.button span:after{border-top-style:solid;border-width:0.375rem;margin-left:-0.375rem;top:48%}.split.button span:after{border-color:#fff transparent transparent transparent}.split.button.secondary span{border-left-color:rgba(255,255,255,0.5)}.split.button.secondary span:after{border-color:#fff transparent transparent transparent}.split.button.alert span{border-left-color:rgba(255,255,255,0.5)}.split.button.success span{border-left-color:rgba(255,255,255,0.5)}.split.button.tiny{padding-right:3.75rem}.split.button.tiny span{width:2.25rem}.split.button.tiny span:after{border-top-style:solid;border-width:0.375rem;margin-left:-0.375rem;top:48%}.split.button.small{padding-right:4.375rem}.split.button.small span{width:2.625rem}.split.button.small span:after{border-top-style:solid;border-width:0.4375rem;margin-left:-0.375rem;top:48%}.split.button.large{padding-right:5.5rem}.split.button.large span{width:3.4375rem}.split.button.large span:after{border-top-style:solid;border-width:0.3125rem;margin-left:-0.375rem;top:48%}.split.button.expand{padding-left:2rem}.split.button.secondary span:after{border-color:#333 transparent transparent transparent}.split.button.radius span{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.split.button.round span{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}.split.button.no-pip span:before{border-style:none}.split.button.no-pip span:after{border-style:none}.split.button.no-pip span>i{display:block;left:50%;margin-left:-0.28889em;margin-top:-0.48889em;position:absolute;top:50%}.reveal-modal-bg{background:#000;background:rgba(0,0,0,0.45);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1004;left:0}.reveal-modal{border-radius:3px;display:none;position:absolute;top:0;visibility:hidden;width:100%;z-index:1005;left:0;background-color:#fff;padding:1.875rem;border:solid 1px #666;box-shadow:0 0 10px rgba(0,0,0,0.4)}@media only screen and (max-width: 40em){.reveal-modal{min-height:100vh}}.reveal-modal .column,.reveal-modal .columns{min-width:0}.reveal-modal>:first-child{margin-top:0}.reveal-modal>:last-child{margin-bottom:0}@media only screen and (min-width: 40.0625em){.reveal-modal{left:0;margin:0 auto;max-width:62.5rem;right:0;width:80%}}@media only screen and (min-width: 40.0625em){.reveal-modal{top:6.25rem}}.reveal-modal.radius{border-radius:3px}.reveal-modal.round{border-radius:1000px}.reveal-modal.collapse{padding:0}@media only screen and (min-width: 40.0625em){.reveal-modal.tiny{left:0;margin:0 auto;max-width:62.5rem;right:0;width:30%}}@media only screen and (min-width: 40.0625em){.reveal-modal.small{left:0;margin:0 auto;max-width:62.5rem;right:0;width:40%}}@media only screen and (min-width: 40.0625em){.reveal-modal.medium{left:0;margin:0 auto;max-width:62.5rem;right:0;width:60%}}@media only screen and (min-width: 40.0625em){.reveal-modal.large{left:0;margin:0 auto;max-width:62.5rem;right:0;width:70%}}@media only screen and (min-width: 40.0625em){.reveal-modal.xlarge{left:0;margin:0 auto;max-width:62.5rem;right:0;width:95%}}.reveal-modal.full{height:100vh;height:100%;left:0;margin-left:0 !important;max-width:none !important;min-height:100vh;top:0}@media only screen and (min-width: 40.0625em){.reveal-modal.full{left:0;margin:0 auto;max-width:62.5rem;right:0;width:100%}}.reveal-modal.toback{z-index:1003}.reveal-modal .close-reveal-modal{color:#aaa;cursor:pointer;font-size:2.5rem;font-weight:bold;line-height:1;position:absolute;top:0.625rem;right:1.375rem}.has-tip{border-bottom:dotted 1px #ccc;color:#333;cursor:help;font-weight:bold}.has-tip:hover,.has-tip:focus{border-bottom:dotted 1px #003f54;color:#008CBA}.has-tip.tip-left,.has-tip.tip-right{float:none !important}.tooltip{background:#333;color:#fff;display:none;font-size:0.875rem;font-weight:normal;line-height:1.3;max-width:300px;padding:0.75rem;position:absolute;width:100%;z-index:1006;left:50%}.tooltip>.nub{border-color:transparent transparent #333 transparent;border:solid 5px;display:block;height:0;pointer-events:none;position:absolute;top:-10px;width:0;left:5px}.tooltip>.nub.rtl{left:auto;right:5px}.tooltip.radius{border-radius:3px}.tooltip.round{border-radius:1000px}.tooltip.round>.nub{left:2rem}.tooltip.opened{border-bottom:dotted 1px #003f54 !important;color:#008CBA !important}.tap-to-close{color:#777;display:block;font-size:0.625rem;font-weight:normal}@media only screen and (min-width: 40.0625em){.tooltip>.nub{border-color:transparent transparent #333 transparent;top:-10px}.tooltip.tip-top>.nub{border-color:#333 transparent transparent transparent;bottom:-10px;top:auto}.tooltip.tip-left,.tooltip.tip-right{float:none !important}.tooltip.tip-left>.nub{border-color:transparent transparent transparent #333;left:auto;margin-top:-5px;right:-10px;top:50%}.tooltip.tip-right>.nub{border-color:transparent #333 transparent transparent;left:-10px;margin-top:-5px;right:auto;top:50%}}.clearing-thumbs,[data-clearing]{list-style:none;margin-left:0;margin-bottom:0}.clearing-thumbs:before,.clearing-thumbs:after,[data-clearing]:before,[data-clearing]:after{content:" ";display:table}.clearing-thumbs:after,[data-clearing]:after{clear:both}.clearing-thumbs li,[data-clearing] li{float:left;margin-right:10px}.clearing-thumbs[class*="block-grid-"] li,[data-clearing][class*="block-grid-"] li{margin-right:0}.clearing-blackout{background:#333;height:100%;position:fixed;top:0;width:100%;z-index:998;left:0}.clearing-blackout .clearing-close{display:block}.clearing-container{height:100%;margin:0;overflow:hidden;position:relative;z-index:998}.clearing-touch-label{color:#aaa;font-size:.6em;left:50%;position:absolute;top:50%}.visible-img{height:95%;position:relative}.visible-img img{position:absolute;left:50%;top:50%;-webkit-transform:translateY(-50%) translateX(-50%);-moz-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);-o-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);max-height:100%;max-width:100%}.clearing-caption{background:#333;bottom:0;color:#ccc;font-size:0.875em;line-height:1.3;margin-bottom:0;padding:10px 30px 20px;position:absolute;text-align:center;width:100%;left:0}.clearing-close{color:#ccc;display:none;font-size:30px;line-height:1;padding-left:20px;padding-top:10px;z-index:999}.clearing-close:hover,.clearing-close:focus{color:#ccc}.clearing-assembled .clearing-container{height:100%}.clearing-assembled .clearing-container .carousel>ul{display:none}.clearing-feature li{display:none}.clearing-feature li.clearing-featured-img{display:block}@media only screen and (min-width: 40.0625em){.clearing-main-prev,.clearing-main-next{height:100%;position:absolute;top:0;width:40px}.clearing-main-prev>span,.clearing-main-next>span{border:solid 12px;display:block;height:0;position:absolute;top:50%;width:0}.clearing-main-prev>span:hover,.clearing-main-next>span:hover{opacity:.8}.clearing-main-prev{left:0}.clearing-main-prev>span{left:5px;border-color:transparent;border-right-color:#ccc}.clearing-main-next{right:0}.clearing-main-next>span{border-color:transparent;border-left-color:#ccc}.clearing-main-prev.disabled,.clearing-main-next.disabled{opacity:.3}.clearing-assembled .clearing-container .carousel{background:rgba(51,51,51,0.8);height:120px;margin-top:10px;text-align:center}.clearing-assembled .clearing-container .carousel>ul{display:inline-block;z-index:999;height:100%;position:relative;float:none}.clearing-assembled .clearing-container .carousel>ul li{clear:none;cursor:pointer;display:block;float:left;margin-right:0;min-height:inherit;opacity:.4;overflow:hidden;padding:0;position:relative;width:120px}.clearing-assembled .clearing-container .carousel>ul li.fix-height img{height:100%;max-width:none}.clearing-assembled .clearing-container .carousel>ul li a.th{border:none;box-shadow:none;display:block}.clearing-assembled .clearing-container .carousel>ul li img{cursor:pointer !important;width:100% !important}.clearing-assembled .clearing-container .carousel>ul li.visible{opacity:1}.clearing-assembled .clearing-container .carousel>ul li:hover{opacity:.8}.clearing-assembled .clearing-container .visible-img{background:#333;height:85%;overflow:hidden}.clearing-close{padding-left:0;padding-top:0;position:absolute;top:10px;right:20px}}.progress{background-color:#F6F6F6;border:1px solid #fff;height:1.5625rem;margin-bottom:0.625rem;padding:0.125rem}.progress .meter{background:#008CBA;display:block;height:100%}.progress.secondary .meter{background:#e7e7e7;display:block;height:100%}.progress.success .meter{background:#43AC6A;display:block;height:100%}.progress.alert .meter{background:#f04124;display:block;height:100%}.progress.radius{border-radius:3px}.progress.radius .meter{border-radius:2px}.progress.round{border-radius:1000px}.progress.round .meter{border-radius:999px}.sub-nav{display:block;margin:-0.25rem 0 1.125rem;overflow:hidden;padding-top:0.25rem;width:auto}.sub-nav dt{text-transform:uppercase}.sub-nav dt,.sub-nav dd,.sub-nav li{color:#999;float:left;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:0.875rem;font-weight:normal;margin-left:1rem;margin-bottom:0}.sub-nav dt a,.sub-nav dd a,.sub-nav li a{color:#999;padding:0.1875rem 1rem;text-decoration:none}.sub-nav dt a:hover,.sub-nav dd a:hover,.sub-nav li a:hover{color:#737373}.sub-nav dt.active a,.sub-nav dd.active a,.sub-nav li.active a{border-radius:3px;background:#008CBA;color:#fff;cursor:default;font-weight:normal;padding:0.1875rem 1rem}.sub-nav dt.active a:hover,.sub-nav dd.active a:hover,.sub-nav li.active a:hover{background:#0078a0}.joyride-list{display:none}.joyride-tip-guide{background:#333;color:#fff;display:none;font-family:inherit;font-weight:normal;position:absolute;top:0;width:95%;z-index:101;left:2.5%}.lt-ie9 .joyride-tip-guide{margin-left:-400px;max-width:800px;left:50%}.joyride-content-wrapper{padding:1.125rem 1.25rem 1.5rem;width:100%}.joyride-content-wrapper .button{margin-bottom:0 !important}.joyride-content-wrapper .joyride-prev-tip{margin-right:10px}.joyride-tip-guide .joyride-nub{border:10px solid #333;display:block;height:0;position:absolute;width:0;left:22px}.joyride-tip-guide .joyride-nub.top{border-color:#333;border-top-color:transparent !important;border-top-style:solid;border-left-color:transparent !important;border-right-color:transparent !important;top:-20px}.joyride-tip-guide .joyride-nub.bottom{border-color:#333 !important;border-bottom-color:transparent !important;border-bottom-style:solid;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{right:-20px}.joyride-tip-guide .joyride-nub.left{left:-20px}.joyride-tip-guide h1,.joyride-tip-guide h2,.joyride-tip-guide h3,.joyride-tip-guide h4,.joyride-tip-guide h5,.joyride-tip-guide h6{color:#fff;font-weight:bold;line-height:1.25;margin:0}.joyride-tip-guide p{font-size:0.875rem;line-height:1.3;margin:0 0 1.125rem 0}.joyride-timer-indicator-wrap{border:solid 1px #555;bottom:1rem;height:3px;position:absolute;width:50px;right:1.0625rem}.joyride-timer-indicator{background:#666;display:block;height:inherit;width:0}.joyride-close-tip{color:#777 !important;font-size:24px;font-weight:normal;line-height:.5 !important;position:absolute;text-decoration:none;top:10px;right:12px}.joyride-close-tip:hover,.joyride-close-tip:focus{color:#eee !important}.joyride-modal-bg{background:rgba(0,0,0,0.5);cursor:pointer;display:none;height:100%;position:fixed;top:0;width:100%;z-index:100;left:0}.joyride-expose-wrapper{background-color:#fff;border-radius:3px;box-shadow:0 0 15px #fff;position:absolute;z-index:102}.joyride-expose-cover{background:transparent;border-radius:3px;left:0;position:absolute;top:0;z-index:9999}@media only screen and (min-width: 40.0625em){.joyride-tip-guide{width:300px;left:inherit}.joyride-tip-guide .joyride-nub.bottom{border-color:#333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{border-color:#333 !important;border-right-color:transparent !important;border-bottom-color:transparent !important;border-top-color:transparent !important;left:auto;right:-20px;top:22px}.joyride-tip-guide .joyride-nub.left{border-color:#333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-top-color:transparent !important;left:-20px;right:auto;top:22px}}.label{display:inline-block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;line-height:1;margin-bottom:auto;position:relative;text-align:center;text-decoration:none;white-space:nowrap;padding:0.25rem 0.5rem 0.25rem;font-size:0.6875rem;background-color:#008CBA;color:#fff}.label.radius{border-radius:3px}.label.round{border-radius:1000px}.label.alert{background-color:#f04124;color:#fff}.label.warning{background-color:#f08a24;color:#fff}.label.success{background-color:#43AC6A;color:#fff}.label.secondary{background-color:#e7e7e7;color:#333}.label.info{background-color:#a0d3e8;color:#333}.off-canvas-wrap{-webkit-backface-visibility:hidden;position:relative;width:100%;overflow:hidden}.off-canvas-wrap.move-right,.off-canvas-wrap.move-left{min-height:100%;-webkit-overflow-scrolling:touch}.inner-wrap{position:relative;width:100%;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.inner-wrap:before,.inner-wrap:after{content:" ";display:table}.inner-wrap:after{clear:both}.tab-bar{-webkit-backface-visibility:hidden;background:#333;color:#fff;height:2.8125rem;line-height:2.8125rem;position:relative}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4,.tab-bar h5,.tab-bar h6{color:#fff;font-weight:bold;line-height:2.8125rem;margin:0}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4{font-size:1.125rem}.left-small{height:2.8125rem;position:absolute;top:0;width:2.8125rem;border-right:solid 1px #1a1a1a;left:0}.right-small{height:2.8125rem;position:absolute;top:0;width:2.8125rem;border-left:solid 1px #1a1a1a;right:0}.tab-bar-section{height:2.8125rem;padding:0 0.625rem;position:absolute;text-align:center;top:0}.tab-bar-section.left{text-align:left}.tab-bar-section.right{text-align:right}.tab-bar-section.left{left:0;right:2.8125rem}.tab-bar-section.right{left:2.8125rem;right:0}.tab-bar-section.middle{left:2.8125rem;right:2.8125rem}.tab-bar .menu-icon{color:#fff;display:block;height:2.8125rem;padding:0;position:relative;text-indent:2.1875rem;transform:translate3d(0, 0, 0);width:2.8125rem}.tab-bar .menu-icon span::after{content:"";display:block;height:0;position:absolute;top:50%;margin-top:-0.5rem;left:0.90625rem;box-shadow:0 0 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff;width:1rem}.tab-bar .menu-icon span:hover:after{box-shadow:0 0 0 1px #b3b3b3,0 7px 0 1px #b3b3b3,0 14px 0 1px #b3b3b3}.left-off-canvas-menu{-webkit-backface-visibility:hidden;background:#333;bottom:0;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;transition:transform 500ms ease 0s;width:15.625rem;z-index:1001;-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate(-100%, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.left-off-canvas-menu *{-webkit-backface-visibility:hidden}.right-off-canvas-menu{-webkit-backface-visibility:hidden;background:#333;bottom:0;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;transition:transform 500ms ease 0s;width:15.625rem;z-index:1001;-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate(100%, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0}.right-off-canvas-menu *{-webkit-backface-visibility:hidden}ul.off-canvas-list{list-style-type:none;margin:0;padding:0}ul.off-canvas-list li label{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999;display:block;font-size:0.75rem;font-weight:bold;margin:0;padding:0.3rem 0.9375rem;text-transform:uppercase}ul.off-canvas-list li a{border-bottom:1px solid #262626;color:rgba(255,255,255,0.7);display:block;padding:0.66667rem;transition:background 300ms ease}ul.off-canvas-list li a:hover{background:#242424}ul.off-canvas-list li a:active{background:#242424}.move-right>.inner-wrap{-webkit-transform:translate3d(15.625rem, 0, 0);-moz-transform:translate3d(15.625rem, 0, 0);-ms-transform:translate(15.625rem, 0);-ms-transform:translate3d(15.625rem, 0, 0);-o-transform:translate3d(15.625rem, 0, 0);transform:translate3d(15.625rem, 0, 0)}.move-right .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.move-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.move-left>.inner-wrap{-webkit-transform:translate3d(-15.625rem, 0, 0);-moz-transform:translate3d(-15.625rem, 0, 0);-ms-transform:translate(-15.625rem, 0);-ms-transform:translate3d(-15.625rem, 0, 0);-o-transform:translate3d(-15.625rem, 0, 0);transform:translate3d(-15.625rem, 0, 0)}.move-left .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.move-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap .left-off-canvas-menu,.offcanvas-overlap .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.offcanvas-overlap .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-left .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-left .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.offcanvas-overlap-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-right .left-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-right .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.offcanvas-overlap-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.no-csstransforms .left-off-canvas-menu{left:-15.625rem}.no-csstransforms .right-off-canvas-menu{right:-15.625rem}.no-csstransforms .move-left>.inner-wrap{right:15.625rem}.no-csstransforms .move-right>.inner-wrap{left:15.625rem}.left-submenu{-webkit-backface-visibility:hidden;-webkit-overflow-scrolling:touch;background:#333;bottom:0;box-sizing:content-box;margin:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:15.625rem;z-index:1002;-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate(-100%, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.left-submenu *{-webkit-backface-visibility:hidden}.left-submenu .back>a{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999;font-weight:bold;padding:0.3rem 0.9375rem;text-transform:uppercase;margin:0}.left-submenu .back>a:hover{background:#303030;border-bottom:none;border-top:1px solid #5e5e5e}.left-submenu .back>a:before{content:"\AB";margin-right:.5rem;display:inline}.left-submenu.move-right,.left-submenu.offcanvas-overlap-right,.left-submenu.offcanvas-overlap{-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate(0%, 0);-ms-transform:translate3d(0%, 0, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0)}.right-submenu{-webkit-backface-visibility:hidden;-webkit-overflow-scrolling:touch;background:#333;bottom:0;box-sizing:content-box;margin:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:15.625rem;z-index:1002;-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate(100%, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.right-submenu *{-webkit-backface-visibility:hidden}.right-submenu .back>a{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999;font-weight:bold;padding:0.3rem 0.9375rem;text-transform:uppercase;margin:0}.right-submenu .back>a:hover{background:#303030;border-bottom:none;border-top:1px solid #5e5e5e}.right-submenu .back>a:after{content:"\BB";margin-left:.5rem;display:inline}.right-submenu.move-left,.right-submenu.offcanvas-overlap-left,.right-submenu.offcanvas-overlap{-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate(0%, 0);-ms-transform:translate3d(0%, 0, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0)}.left-off-canvas-menu ul.off-canvas-list li.has-submenu>a:after{content:"\BB";margin-left:.5rem;display:inline}.right-off-canvas-menu ul.off-canvas-list li.has-submenu>a:before{content:"\AB";margin-right:.5rem;display:inline}.f-dropdown{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:2px;max-width:200px}.f-dropdown.open{display:block}.f-dropdown>*:first-child{margin-top:0}.f-dropdown>*:last-child{margin-bottom:0}.f-dropdown:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent transparent #fff transparent;border-bottom-style:solid;position:absolute;top:-12px;left:10px;z-index:89}.f-dropdown:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent transparent #ccc transparent;border-bottom-style:solid;position:absolute;top:-14px;left:9px;z-index:88}.f-dropdown.right:before{left:auto;right:10px}.f-dropdown.right:after{left:auto;right:9px}.f-dropdown.drop-right{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:0;margin-left:2px;max-width:200px}.f-dropdown.drop-right.open{display:block}.f-dropdown.drop-right>*:first-child{margin-top:0}.f-dropdown.drop-right>*:last-child{margin-bottom:0}.f-dropdown.drop-right:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent #fff transparent transparent;border-right-style:solid;position:absolute;top:10px;left:-12px;z-index:89}.f-dropdown.drop-right:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent #ccc transparent transparent;border-right-style:solid;position:absolute;top:9px;left:-14px;z-index:88}.f-dropdown.drop-left{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:0;margin-left:-2px;max-width:200px}.f-dropdown.drop-left.open{display:block}.f-dropdown.drop-left>*:first-child{margin-top:0}.f-dropdown.drop-left>*:last-child{margin-bottom:0}.f-dropdown.drop-left:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent #fff;border-left-style:solid;position:absolute;top:10px;right:-12px;left:auto;z-index:89}.f-dropdown.drop-left:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent #ccc;border-left-style:solid;position:absolute;top:9px;right:-14px;left:auto;z-index:88}.f-dropdown.drop-top{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-left:0;margin-top:-2px;max-width:200px}.f-dropdown.drop-top.open{display:block}.f-dropdown.drop-top>*:first-child{margin-top:0}.f-dropdown.drop-top>*:last-child{margin-bottom:0}.f-dropdown.drop-top:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:#fff transparent transparent transparent;border-top-style:solid;bottom:-12px;position:absolute;top:auto;left:10px;right:auto;z-index:89}.f-dropdown.drop-top:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:#ccc transparent transparent transparent;border-top-style:solid;bottom:-14px;position:absolute;top:auto;left:9px;right:auto;z-index:88}.f-dropdown li{cursor:pointer;font-size:0.875rem;line-height:1.125rem;margin:0}.f-dropdown li:hover,.f-dropdown li:focus{background:#eee}.f-dropdown li.radius{border-radius:3px}.f-dropdown li a{display:block;padding:0.5rem;color:#555}.f-dropdown.content{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;padding:1.25rem;width:100%;z-index:89;max-width:200px}.f-dropdown.content.open{display:block}.f-dropdown.content>*:first-child{margin-top:0}.f-dropdown.content>*:last-child{margin-bottom:0}.f-dropdown.tiny{max-width:200px}.f-dropdown.small{max-width:300px}.f-dropdown.medium{max-width:500px}.f-dropdown.large{max-width:800px}.f-dropdown.mega{width:100% !important;max-width:100% !important}.f-dropdown.mega.open{left:0 !important}table{background:#fff;border:solid 1px #ddd;margin-bottom:1.25rem;table-layout:auto}table caption{background:transparent;color:#222;font-size:1rem;font-weight:bold}table thead{background:#F5F5F5}table thead tr th,table thead tr td{color:#222;font-size:0.875rem;font-weight:bold;padding:0.5rem 0.625rem 0.625rem}table tfoot{background:#F5F5F5}table tfoot tr th,table tfoot tr td{color:#222;font-size:0.875rem;font-weight:bold;padding:0.5rem 0.625rem 0.625rem}table tr th,table tr td{color:#222;font-size:0.875rem;padding:0.5625rem 0.625rem;text-align:left}table tr.even,table tr.alt,table tr:nth-of-type(even){background:#F9F9F9}table thead tr th,table tfoot tr th,table tfoot tr td,table tbody tr th,table tbody tr td,table tr td{display:table-cell;line-height:1.125rem}.range-slider{border:1px solid #ddd;margin:1.25rem 0;position:relative;-ms-touch-action:none;touch-action:none;display:block;height:1rem;width:100%;background:#FAFAFA}.range-slider.vertical-range{border:1px solid #ddd;margin:1.25rem 0;position:relative;-ms-touch-action:none;touch-action:none;display:inline-block;height:12.5rem;width:1rem}.range-slider.vertical-range .range-slider-handle{bottom:-10.5rem;margin-left:-0.5rem;margin-top:0;position:absolute}.range-slider.vertical-range .range-slider-active-segment{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;border-top-left-radius:initial;bottom:0;height:auto;width:0.875rem}.range-slider.radius{background:#FAFAFA;border-radius:3px}.range-slider.radius .range-slider-handle{background:#008CBA;border-radius:3px}.range-slider.radius .range-slider-handle:hover{background:#007ba4}.range-slider.round{background:#FAFAFA;border-radius:1000px}.range-slider.round .range-slider-handle{background:#008CBA;border-radius:1000px}.range-slider.round .range-slider-handle:hover{background:#007ba4}.range-slider.disabled,.range-slider[disabled]{background:#FAFAFA;cursor:not-allowed;opacity:0.7}.range-slider.disabled .range-slider-handle,.range-slider[disabled] .range-slider-handle{background:#008CBA;cursor:default;opacity:0.7}.range-slider.disabled .range-slider-handle:hover,.range-slider[disabled] .range-slider-handle:hover{background:#007ba4}.range-slider-active-segment{background:#e5e5e5;border-bottom-left-radius:inherit;border-top-left-radius:inherit;display:inline-block;height:0.875rem;position:absolute}.range-slider-handle{border:1px solid none;cursor:pointer;display:inline-block;height:1.375rem;position:absolute;top:-0.3125rem;width:2rem;z-index:1;-ms-touch-action:manipulation;touch-action:manipulation;background:#008CBA}.range-slider-handle:hover{background:#007ba4}[class*="block-grid-"]{display:block;padding:0;margin:0 -0.625rem}[class*="block-grid-"]:before,[class*="block-grid-"]:after{content:" ";display:table}[class*="block-grid-"]:after{clear:both}[class*="block-grid-"]>li{display:block;float:left;height:auto;padding:0 0.625rem 1.25rem}@media only screen{.small-block-grid-1>li{list-style:none;width:100%}.small-block-grid-1>li:nth-of-type(1n){clear:none}.small-block-grid-1>li:nth-of-type(1n+1){clear:both}.small-block-grid-2>li{list-style:none;width:50%}.small-block-grid-2>li:nth-of-type(1n){clear:none}.small-block-grid-2>li:nth-of-type(2n+1){clear:both}.small-block-grid-3>li{list-style:none;width:33.33333%}.small-block-grid-3>li:nth-of-type(1n){clear:none}.small-block-grid-3>li:nth-of-type(3n+1){clear:both}.small-block-grid-4>li{list-style:none;width:25%}.small-block-grid-4>li:nth-of-type(1n){clear:none}.small-block-grid-4>li:nth-of-type(4n+1){clear:both}.small-block-grid-5>li{list-style:none;width:20%}.small-block-grid-5>li:nth-of-type(1n){clear:none}.small-block-grid-5>li:nth-of-type(5n+1){clear:both}.small-block-grid-6>li{list-style:none;width:16.66667%}.small-block-grid-6>li:nth-of-type(1n){clear:none}.small-block-grid-6>li:nth-of-type(6n+1){clear:both}.small-block-grid-7>li{list-style:none;width:14.28571%}.small-block-grid-7>li:nth-of-type(1n){clear:none}.small-block-grid-7>li:nth-of-type(7n+1){clear:both}.small-block-grid-8>li{list-style:none;width:12.5%}.small-block-grid-8>li:nth-of-type(1n){clear:none}.small-block-grid-8>li:nth-of-type(8n+1){clear:both}.small-block-grid-9>li{list-style:none;width:11.11111%}.small-block-grid-9>li:nth-of-type(1n){clear:none}.small-block-grid-9>li:nth-of-type(9n+1){clear:both}.small-block-grid-10>li{list-style:none;width:10%}.small-block-grid-10>li:nth-of-type(1n){clear:none}.small-block-grid-10>li:nth-of-type(10n+1){clear:both}.small-block-grid-11>li{list-style:none;width:9.09091%}.small-block-grid-11>li:nth-of-type(1n){clear:none}.small-block-grid-11>li:nth-of-type(11n+1){clear:both}.small-block-grid-12>li{list-style:none;width:8.33333%}.small-block-grid-12>li:nth-of-type(1n){clear:none}.small-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 40.0625em){.medium-block-grid-1>li{list-style:none;width:100%}.medium-block-grid-1>li:nth-of-type(1n){clear:none}.medium-block-grid-1>li:nth-of-type(1n+1){clear:both}.medium-block-grid-2>li{list-style:none;width:50%}.medium-block-grid-2>li:nth-of-type(1n){clear:none}.medium-block-grid-2>li:nth-of-type(2n+1){clear:both}.medium-block-grid-3>li{list-style:none;width:33.33333%}.medium-block-grid-3>li:nth-of-type(1n){clear:none}.medium-block-grid-3>li:nth-of-type(3n+1){clear:both}.medium-block-grid-4>li{list-style:none;width:25%}.medium-block-grid-4>li:nth-of-type(1n){clear:none}.medium-block-grid-4>li:nth-of-type(4n+1){clear:both}.medium-block-grid-5>li{list-style:none;width:20%}.medium-block-grid-5>li:nth-of-type(1n){clear:none}.medium-block-grid-5>li:nth-of-type(5n+1){clear:both}.medium-block-grid-6>li{list-style:none;width:16.66667%}.medium-block-grid-6>li:nth-of-type(1n){clear:none}.medium-block-grid-6>li:nth-of-type(6n+1){clear:both}.medium-block-grid-7>li{list-style:none;width:14.28571%}.medium-block-grid-7>li:nth-of-type(1n){clear:none}.medium-block-grid-7>li:nth-of-type(7n+1){clear:both}.medium-block-grid-8>li{list-style:none;width:12.5%}.medium-block-grid-8>li:nth-of-type(1n){clear:none}.medium-block-grid-8>li:nth-of-type(8n+1){clear:both}.medium-block-grid-9>li{list-style:none;width:11.11111%}.medium-block-grid-9>li:nth-of-type(1n){clear:none}.medium-block-grid-9>li:nth-of-type(9n+1){clear:both}.medium-block-grid-10>li{list-style:none;width:10%}.medium-block-grid-10>li:nth-of-type(1n){clear:none}.medium-block-grid-10>li:nth-of-type(10n+1){clear:both}.medium-block-grid-11>li{list-style:none;width:9.09091%}.medium-block-grid-11>li:nth-of-type(1n){clear:none}.medium-block-grid-11>li:nth-of-type(11n+1){clear:both}.medium-block-grid-12>li{list-style:none;width:8.33333%}.medium-block-grid-12>li:nth-of-type(1n){clear:none}.medium-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 64.0625em){.large-block-grid-1>li{list-style:none;width:100%}.large-block-grid-1>li:nth-of-type(1n){clear:none}.large-block-grid-1>li:nth-of-type(1n+1){clear:both}.large-block-grid-2>li{list-style:none;width:50%}.large-block-grid-2>li:nth-of-type(1n){clear:none}.large-block-grid-2>li:nth-of-type(2n+1){clear:both}.large-block-grid-3>li{list-style:none;width:33.33333%}.large-block-grid-3>li:nth-of-type(1n){clear:none}.large-block-grid-3>li:nth-of-type(3n+1){clear:both}.large-block-grid-4>li{list-style:none;width:25%}.large-block-grid-4>li:nth-of-type(1n){clear:none}.large-block-grid-4>li:nth-of-type(4n+1){clear:both}.large-block-grid-5>li{list-style:none;width:20%}.large-block-grid-5>li:nth-of-type(1n){clear:none}.large-block-grid-5>li:nth-of-type(5n+1){clear:both}.large-block-grid-6>li{list-style:none;width:16.66667%}.large-block-grid-6>li:nth-of-type(1n){clear:none}.large-block-grid-6>li:nth-of-type(6n+1){clear:both}.large-block-grid-7>li{list-style:none;width:14.28571%}.large-block-grid-7>li:nth-of-type(1n){clear:none}.large-block-grid-7>li:nth-of-type(7n+1){clear:both}.large-block-grid-8>li{list-style:none;width:12.5%}.large-block-grid-8>li:nth-of-type(1n){clear:none}.large-block-grid-8>li:nth-of-type(8n+1){clear:both}.large-block-grid-9>li{list-style:none;width:11.11111%}.large-block-grid-9>li:nth-of-type(1n){clear:none}.large-block-grid-9>li:nth-of-type(9n+1){clear:both}.large-block-grid-10>li{list-style:none;width:10%}.large-block-grid-10>li:nth-of-type(1n){clear:none}.large-block-grid-10>li:nth-of-type(10n+1){clear:both}.large-block-grid-11>li{list-style:none;width:9.09091%}.large-block-grid-11>li:nth-of-type(1n){clear:none}.large-block-grid-11>li:nth-of-type(11n+1){clear:both}.large-block-grid-12>li{list-style:none;width:8.33333%}.large-block-grid-12>li:nth-of-type(1n){clear:none}.large-block-grid-12>li:nth-of-type(12n+1){clear:both}}.flex-video{height:0;margin-bottom:1rem;overflow:hidden;padding-bottom:67.5%;padding-top:1.5625rem;position:relative}.flex-video.widescreen{padding-bottom:56.34%}.flex-video.vimeo{padding-top:0}.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{height:100%;position:absolute;top:0;width:100%;left:0}.keystroke,kbd{background-color:#ededed;border-color:#ddd;color:#222;border-style:solid;border-width:1px;font-family:"Consolas","Menlo","Courier",monospace;font-size:inherit;margin:0;padding:0.125rem 0.25rem 0;border-radius:3px}.switch{border:none;margin-bottom:1.5rem;outline:0;padding:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch label{background:#ddd;color:transparent;cursor:pointer;display:block;margin-bottom:1rem;position:relative;text-indent:100%;width:4rem;height:2rem;transition:left 0.15s ease-out}.switch input{left:10px;opacity:0;padding:0;position:absolute;top:9px}.switch input+label{margin-left:0;margin-right:0}.switch label:after{background:#fff;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;width:1.5rem;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;-o-transition:translate3d(0, 0, 0);transition:left 0.15s ease-out;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.switch input:checked+label{background:#008CBA}.switch input:checked+label:after{left:2.25rem}.switch label{height:2rem;width:4rem}.switch label:after{height:1.5rem;width:1.5rem}.switch input:checked+label:after{left:2.25rem}.switch label{color:transparent;background:#ddd}.switch label:after{background:#fff}.switch input:checked+label{background:#008CBA}.switch.large label{height:2.5rem;width:5rem}.switch.large label:after{height:2rem;width:2rem}.switch.large input:checked+label:after{left:2.75rem}.switch.small label{height:1.75rem;width:3.5rem}.switch.small label:after{height:1.25rem;width:1.25rem}.switch.small input:checked+label:after{left:2rem}.switch.tiny label{height:1.5rem;width:3rem}.switch.tiny label:after{height:1rem;width:1rem}.switch.tiny input:checked+label:after{left:1.75rem}.switch.radius label{border-radius:4px}.switch.radius label:after{border-radius:3px}.switch.round{border-radius:1000px}.switch.round label{border-radius:2rem}.switch.round label:after{border-radius:2rem}@media only screen{.show-for-small-only,.show-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.hide-for-small-only,.hide-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.visible-for-small-only,.visible-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.hidden-for-small-only,.hidden-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.show-for-small-only,table.show-for-small-up,table.show-for-small,table.show-for-small-down,table.hide-for-medium-only,table.hide-for-medium-up,table.hide-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.show-for-small-only,thead.show-for-small-up,thead.show-for-small,thead.show-for-small-down,thead.hide-for-medium-only,thead.hide-for-medium-up,thead.hide-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.show-for-small-only,tbody.show-for-small-up,tbody.show-for-small,tbody.show-for-small-down,tbody.hide-for-medium-only,tbody.hide-for-medium-up,tbody.hide-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.show-for-small-only,tr.show-for-small-up,tr.show-for-small,tr.show-for-small-down,tr.hide-for-medium-only,tr.hide-for-medium-up,tr.hide-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.show-for-small-only,td.show-for-small-only,th.show-for-small-up,td.show-for-small-up,th.show-for-small,td.show-for-small,th.show-for-small-down,td.show-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.hide-for-medium-up,td.hide-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 40.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.show-for-medium-only,table.show-for-medium-up,table.show-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.show-for-medium-only,thead.show-for-medium-up,thead.show-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.show-for-medium-only,tbody.show-for-medium-up,tbody.show-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.show-for-medium-only,tr.show-for-medium-up,tr.show-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.show-for-medium-only,td.show-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.show-for-medium,td.show-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 64.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.show-for-large-only,table.show-for-large-up,table.show-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.show-for-large-only,thead.show-for-large-up,thead.show-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.show-for-large-only,tbody.show-for-large-up,tbody.show-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.show-for-large-only,tr.show-for-large-up,tr.show-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.show-for-large-only,td.show-for-large-only,th.show-for-large-up,td.show-for-large-up,th.show-for-large,td.show-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 90.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.show-for-xlarge-only,table.show-for-xlarge-up,table.show-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.show-for-xlarge-only,thead.show-for-xlarge-up,thead.show-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.show-for-xlarge-only,tbody.show-for-xlarge-up,tbody.show-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.show-for-xlarge-only,tr.show-for-xlarge-up,tr.show-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.show-for-xlarge-only,td.show-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.show-for-xlarge,td.show-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 120.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.hide-for-xlarge-only,.show-for-xlarge-up,.hide-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.show-for-xlarge-only,.hide-for-xlarge-up,.show-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.hidden-for-xlarge-only,.visible-for-xlarge-up,.hidden-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.visible-for-xlarge-only,.hidden-for-xlarge-up,.visible-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.hide-for-xlarge-only,table.show-for-xlarge-up,table.hide-for-xlarge,table.hide-for-xlarge-down,table.show-for-xxlarge-only,table.show-for-xxlarge-up,table.show-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.hide-for-xlarge-only,thead.show-for-xlarge-up,thead.hide-for-xlarge,thead.hide-for-xlarge-down,thead.show-for-xxlarge-only,thead.show-for-xxlarge-up,thead.show-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.hide-for-xlarge-only,tbody.show-for-xlarge-up,tbody.hide-for-xlarge,tbody.hide-for-xlarge-down,tbody.show-for-xxlarge-only,tbody.show-for-xxlarge-up,tbody.show-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.hide-for-xlarge-only,tr.show-for-xlarge-up,tr.hide-for-xlarge,tr.hide-for-xlarge-down,tr.show-for-xxlarge-only,tr.show-for-xxlarge-up,tr.show-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.hide-for-xlarge-down,td.hide-for-xlarge-down,th.show-for-xxlarge-only,td.show-for-xxlarge-only,th.show-for-xxlarge-up,td.show-for-xxlarge-up,th.show-for-xxlarge,td.show-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.hide-for-landscape,table.show-for-portrait{display:table !important}thead.hide-for-landscape,thead.show-for-portrait{display:table-header-group !important}tbody.hide-for-landscape,tbody.show-for-portrait{display:table-row-group !important}tr.hide-for-landscape,tr.show-for-portrait{display:table-row !important}td.hide-for-landscape,td.show-for-portrait,th.hide-for-landscape,th.show-for-portrait{display:table-cell !important}@media only screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.show-for-landscape,table.hide-for-portrait{display:table !important}thead.show-for-landscape,thead.hide-for-portrait{display:table-header-group !important}tbody.show-for-landscape,tbody.hide-for-portrait{display:table-row-group !important}tr.show-for-landscape,tr.hide-for-portrait{display:table-row !important}td.show-for-landscape,td.hide-for-portrait,th.show-for-landscape,th.hide-for-portrait{display:table-cell !important}}@media only screen and (orientation: portrait){.show-for-portrait,.hide-for-landscape{display:inherit !important}.hide-for-portrait,.show-for-landscape{display:none !important}table.show-for-portrait,table.hide-for-landscape{display:table !important}thead.show-for-portrait,thead.hide-for-landscape{display:table-header-group !important}tbody.show-for-portrait,tbody.hide-for-landscape{display:table-row-group !important}tr.show-for-portrait,tr.hide-for-landscape{display:table-row !important}td.show-for-portrait,td.hide-for-landscape,th.show-for-portrait,th.hide-for-landscape{display:table-cell !important}}.show-for-touch{display:none !important}.hide-for-touch{display:inherit !important}.touch .show-for-touch{display:inherit !important}.touch .hide-for-touch{display:none !important}table.hide-for-touch{display:table !important}.touch table.show-for-touch{display:table !important}thead.hide-for-touch{display:table-header-group !important}.touch thead.show-for-touch{display:table-header-group !important}tbody.hide-for-touch{display:table-row-group !important}.touch tbody.show-for-touch{display:table-row-group !important}tr.hide-for-touch{display:table-row !important}.touch tr.show-for-touch{display:table-row !important}td.hide-for-touch{display:table-cell !important}.touch td.show-for-touch{display:table-cell !important}th.hide-for-touch{display:table-cell !important}.touch th.show-for-touch{display:table-cell !important}.show-for-sr{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.show-on-focus{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.show-on-focus:focus,.show-on-focus:active{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.print-only{display:none !important}@media print{*{background:transparent !important;box-shadow:none !important;color:#000 !important;text-shadow:none !important}.show-for-print{display:block}.hide-for-print{display:none}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.hide-on-print{display:none !important}.print-only{display:block !important}.hide-for-print{display:none !important}.show-for-print{display:inherit !important}}@media print{.show-for-print{display:block}.hide-for-print{display:none}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}}@media not print{.show-for-print{display:none !important}} diff --git a/webroot/css/home.css b/webroot/css/home.css new file mode 100644 index 0000000..6e2312f --- /dev/null +++ b/webroot/css/home.css @@ -0,0 +1,240 @@ +@font-face { + font-family: 'cakefont'; + src: url('../font/cakedingbats-webfont.eot'); + src: url('../font/cakedingbats-webfont.eot?#iefix') format('embedded-opentype'), + url('../font/cakedingbats-webfont.woff2') format('woff2'), + url('../font/cakedingbats-webfont.woff') format('woff'), + url('../font/cakedingbats-webfont.ttf') format('truetype'), + url('../font/cakedingbats-webfont.svg#cake_dingbatsregular') format('svg'); + font-weight: normal; + font-style: normal; +} + +.home { + font-family: 'Roboto', sans-serif; + font-size: 14px; + line-height: 27px; + color: #404041; +} + +a { + color: #0071BC; + -webkit-transition: all 0.2s; + -moz-transition: all 0.2s; + -ms-transition: all 0.2s; + -o-transition: all 0.2s; + transition: all 0.2s; +} + +a:hover, a:active { + color: #d33d44; + -webkit-transition: all 0.2s; + -moz-transition: all 0.2s; + -ms-transition: all 0.2s; + -o-transition: all 0.2s; + transition: all 0.2s; +} + +ul, ol, dl, p { + font-size: 0.85rem; +} + +p { + line-height: 2; +} + +header { + height: auto; + line-height: 1em; + padding: 0; + box-shadow: none; +} + +header.row { + margin-bottom: 30px; +} + +header .header-image { + text-align: center; + padding: 64px 0; +} + +header .header-title { + padding: 0; + display: block; + background: #404041; + text-align: center; +} + +header .header-title h1 { + font-family: 'Raleway', sans-serif; + margin: 0; + font-style: italic; + font-size: 18px; + font-weight: 500; + padding: 18px 30px; + color: #DEDED5; +} + +header h1 { + color: #fff; +} + +h3, h4 { + font-family: 'Roboto', sans-serif; + font-size: 27px; + line-height: 30px; + font-weight: 300; + -webkit-font-smoothing: antialiased; + margin-top: 0; + margin-bottom: 20px; +} + +.more { + color: #ffffff; + background-color: #d33d44; + padding: 15px; + margin-top: 10px; +} + +.row { + max-width: 1000px; +} + +.alert { + background-color: #fff9e1; + font-size: 12px; + text-align: center; + display: block; + padding: 12px; + border-bottom: 2px solid #ffcf06; +} + +.alert { + background-color: #fff9e1; + font-size: 12px; + display: block; + padding: 12px; + border-bottom: 2px solid #ffcf06; + margin-bottom: 30px; + color: #404041; +} + +.alert p { + margin: 0; + font-size: 12px; + line-height: 1.4; +} + +.alert p:before { + color: #ffcf06; + content: "\0055"; + font-family: 'cakefont', sans-serif; + font-size: 21px; + margin-left: -0.8em; + width: 2.3em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + padding: 0 10px 0 15px; + vertical-align: -2px; +} + +.alert ul { + margin: 0; + font-size: 12px; +} + +.alert.url-rewriting { + background-color: #F0F0F0; + border-color: #cccccc; + display: none; +} + +.text-center { + text-align: center; +} + +ul { + list-style-type: none; + margin: 0 0 30px 0; +} + +li { + padding-left: 1.8em; +} + +ul li ul, ul li ul li { + margin: 0; + padding: 0; +} + +.bullet:before { + font-family: 'cakefont', sans-serif; + font-size: 18px; + display: inline-block; + margin-left: -1.3em; + width: 1.2em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: -1px; +} + +.success:before { + color: #88c671; + content: "\0056"; +} + +.problem:before { + color: #d33d44; + content: "\0057"; +} + +.cutlery:before { + color: #404041; + content: "\0059"; +} + +.book:before { + color: #404041; + content: "\0042"; + width: 1.7em; +} + +hr { + border-bottom: 1px solid #e7e7e7; + border-top: 0; + margin-bottom: 35px; + margin-left: 30px; + margin-right: 30px; +} + + +.icon { + color: #404041; + font-style: normal; + font-family: 'cakefont', sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon.support { + font-size: 60px; +} +.icon.docs { + font-size: 57px; +} +.icon.training { + font-size: 39px; +} + +@media (min-width: 768px) { + .columns { + padding-left: 30px; + padding-right: 30px; + } +} + +@media (min-width: 992px) { + header.row { + max-width: 940px; + } +} diff --git a/webroot/css/style.css b/webroot/css/style.css new file mode 100644 index 0000000..40c1d2a --- /dev/null +++ b/webroot/css/style.css @@ -0,0 +1,524 @@ +.disabled a, +a.disabled { + pointer-events: none; +} + +a:hover { + color: #15848F; +} + +a { + color: #1798A5; +} + +.side-nav li a:not(.button) { + color: #15848F; +} + +.side-nav li a:not(.button):hover { + color: #15848F; +} + +header { + background-color: #D33C44; + color: #ffffff; + font-size: 30px; + height: 84px; + line-height: 64px; + padding: 16px 0px; + box-shadow: 0px 1px rgba(0, 0, 0, 0.24); +} + +header .header-title { + padding-left:80px +} + +legend { + color:#15848F; +} + +.row { + max-width: 80rem; +} + +.actions.columns { + margin-top:1rem; + border-left: 5px solid #15848F; + padding-left: 15px; + padding: 32px 20px; +} + +.actions.columns h3 { + color:#15848F; +} + +.related table { + border: 0; + width: 100%; + table-layout: fixed; +} + +.index table thead { + height: 3.5rem; +} + +.header-help { + float: right; + margin-right:2rem; + margin-top: -80px; + font-size:16px; +} + +.header-help span { + font-weight: normal; + text-align: center; + text-decoration: none; + line-height: 1; + white-space: nowrap; + display: inline-block; + padding: 0.25rem 0.5rem 0.375rem; + font-size: 0.8rem; + background-color: #0097a7; + color: #FFF; + border-radius: 1000px; +} + +.header-help a { + color: #fff; +} + +ul.pagination li a { + color: rgba(0, 0 ,0 , 0.54); +} + +ul.pagination li.active a { + background-color: #DCE47E; + color: #FFF; + font-weight: bold; + cursor: default; +} +ul.pagination .disabled:hover a { + background: none; +} + +.paginator { + text-align: center; +} + +.paginator ul.pagination li { + float: none; + display: inline-block; +} + +.paginator p { + text-align: right; + color: rgba(0, 0 ,0 , 0.54); +} + +.asc:after { + content: " \2193"; +} +.desc:after { + content: " \2191"; +} + +.form .error-message { + display: block; + padding: 0.375rem 0.5625rem 0.5625rem; + margin-top: -1px; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: normal; + font-style: italic; + color: rgba(0, 0, 0, 0.54); +} + +.required > label { + font-weight: bold; +} +.required > label:after { + content: ' *'; + color: #C3232D; +} + +select[multiple] { + min-height:150px; + background: none; +} +input[type=checkbox], +input[type=radio] { + margin-right: 0.5em; +} + +.date select, +.time select, +.datetime select { + display: inline; + width: auto; + margin-right: 10px; +} + +.error label, +.error label.error { + color: #C3232D; +} + +.view h2 { + color: #6F6F6F; +} + +.view .columns.strings { + border-radius: 3px; + box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24); + margin-right:0.7rem; +} + +.view .numbers { + background-color: #B7E3EC; + color: #FFF; + border-radius: 3px; + box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24); + margin-right: 0.7rem; +} + +.view .columns.dates { + border-radius: 3px; + box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24); + margin-right:0.7rem; + background-color:#DCE47E; + color: #fff; +} + +.view .columns.booleans { + border-radius: 3px; + box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24); + margin-right:0.7rem; + background-color: #8D6E65; + color: #fff; +} + +.view .strings p { + border-bottom: 1px solid #eee; +} +.view .numbers .subheader, .view .dates .subheader { + color:#747474; +} +.view .booleans .subheader { + color: #E9E9E9 +} + +.view .texts .columns { + margin-top:1.2rem; + border-bottom: 1px solid #eee; +} + +/** Notices and Errors **/ +.cake-error, +.cake-debug, +.notice, +p.error, +p.notice { + display: block; + clear: both; + background-repeat: repeat-x; + margin-bottom: 18px; + padding: 7px 14px; + border-radius: 3px; + box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24); +} + +.cake-debug, +.notice, +p.notice { + color: #000000; + background: #ffcc00; +} + +.cake-error, +p.error { + color: #fff; + background: #C3232D; +} + +pre { + background: none repeat scroll 0% 0% #FFF; + box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24); + margin: 15px 0px; + color: rgba(0, 0 ,0 , 0.74); + padding:5px; +} + +.cake-error .cake-stack-trace { + margin-top:10px; +} + +.cake-stack-trace code { + background: inherit; + border:0; +} + +.cake-code-dump .code-highlight { + display: block; + background-color: #FFC600; +} + +.cake-error a, +.cake-error a:hover { + color:#fff; + text-decoration: underline; +} + +.checks { + padding:30px; + color: #626262; + background-color: #B7E3EC; + border-radius: 3px; + box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24); + margin-bottom: 2em; +} + +.checks h4 { + margin-bottom: 1.5rem; +} + +.checks hr { + border: 0; + height: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); + border-bottom: 1px solid rgba(255, 255, 255, 0.3); +} + +.checks .success, +.checks .problem { + margin-left: 10px; +} +.checks .success:before, +.checks .problem:before { + line-height: 0px; + font-size: 28px; + height: 12px; + width: 12px; + border-radius: 15px; + text-align: center; + vertical-align: middle; + display: inline-block; + position: relative; + left: -11px; +} + +.checks .success:before { + content: "✓"; + color: green; + margin-right: 9px; +} + +.checks .problem:before { + content: "✘"; + color: red; + margin-right: 9px; +} + +.top-bar.expanded .title-area { + background: #01545b; +} + +.top-bar.expanded, .top-bar,.top-bar-section ul li,.top-bar-section li:not(.has-form) a:not(.button) { + background: #116d76; +} + +.top-bar-section li:not(.has-form) a:not(.button):hover { + background-color: #308e97; + background: #308e97; +} + +.side-nav li.heading { + color: #1798A5; + font-size: 0.875rem; + font-weight: bold; + text-transform: uppercase; + padding: 0.4375rem 0.875rem; +} + +#actions-sidebar { + background: #fafafa; +} + +.index table { + margin-top: 0rem; + border: 0; + width: 100%; + table-layout: fixed; +} + +table { + background: #fff; + margin-bottom: 1.25rem; + border: none; + table-layout: fixed; + width: 100%; +} + +table thead { + background: none; +} + +table tr { + border-bottom: 1px solid #ebebec; +} + +table thead tr { + border-bottom: 1px solid #1798A5; +} + +table tr th { + padding: 0.5625rem 0.625rem; + font-size: 0.875rem; + color: #1798A5; + text-align: left; + border-bottom: 2px solid #1798A5; +} + +table tr:nth-of-type(even) { + background: none; +} + +fieldset { + border: none; + padding: 1.25rem; + margin: 1.125rem 0; +} + +fieldset legend { + border-bottom: 2px solid #1798A5; + width: 100%; + line-height: 2rem; +} + +.form button[type="submit"] { + float: right; + text-transform: uppercase; + box-shadow: none; +} + +.form button:hover, .form button:focus { + background: #BE840B; + box-shadow: none; +} + +button { + background: #966600; +} + +div.message { + text-align: center; + cursor: pointer; + display: block; + font-weight: normal; + padding: 0 1.5rem 0 1.5rem; + transition: height 300ms ease-out 0s; + background-color: #a0d3e8; + color: #626262; + top: 15px; + right: 15px; + z-index: 999; + overflow: hidden; + height: 50px; + line-height: 2.5em; +} + +div.message:before { + line-height: 0px; + font-size: 20px; + height: 12px; + width: 12px; + border-radius: 15px; + text-align: center; + vertical-align: middle; + display: inline-block; + position: relative; + left: -11px; + background-color: #FFF; + padding: 12px 14px 12px 10px; + content: "i"; + color: #a0d3e8; +} + +div.message.error { + background-color: #C3232D; + color: #FFF; +} + +div.message.error:before { + padding: 11px 16px 14px 7px; + color: #C3232D; + content: "x"; +} +div.message.hidden { + height: 0; +} + + +.vertical-table th { + padding: 0.5625rem 0.625rem; + font-size: 0.875rem; + color: #1798A5; + border: none; + text-align: left; +} + +.vertical-table { + vertical-align: middle; +} + +.vertical-table td { + text-align: right; +} + +.content { + padding: 2rem; +} + +/* Use 'one true layout' methods to get equal height columns */ +.container { + overflow: hidden; + min-height: 92%; /* full height almost always */ +} + +/* Force equal height by overflowing */ +.content, +#actions-sidebar { + margin-bottom: -99999px; + padding-bottom: 99999px; +} +@media(max-width: 640px) { + #actions-sidebar { + padding-bottom: 2rem; + margin-bottom: 0; + } +} + +.content h3 { + color: #be140b; + padding-bottom: 0.5rem; + margin-bottom: 20px; +} + +.content h4 { + color: #be140b; + padding-bottom: 0.5rem; + margin-bottom: 20px; + border-bottom: 2px solid #be140b; +} + +.content .related h4 { + color: #4d8f97; + padding-bottom: 0.5rem; + margin-top: 20px; + margin-bottom: 10px; + border-bottom: 0px; +} + +table td { + vertical-align: top; + word-break: break-all; +} diff --git a/public/css/style.css b/webroot/css/stylelr.css similarity index 97% rename from public/css/style.css rename to webroot/css/stylelr.css index d40b15a..43c4785 100644 --- a/public/css/style.css +++ b/webroot/css/stylelr.css @@ -142,7 +142,7 @@ hr { display: inline-block; width: 43px; height: 40px; - background-image:url("../images/icon-sprite-32.png"); + background-image:url("../img/icon-sprite-32.png"); border-radius: 5px; background-position: 0px 0px; background-color: lightgray; @@ -242,7 +242,7 @@ hr { width: 52px; margin: 0 auto; display: block; - background-image: url(../images/loading.png); + background-image: url(../img/loading.png); animation: lr_loading_screen_animation_spinning .8s linear infinite; background-size: 52px 52px; background-repeat: no-repeat; diff --git a/webroot/favicon.ico b/webroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..49a060fc46e2bdfb8f3908c1873a45aa0e9babd0 GIT binary patch literal 15086 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 AlmGw# literal 0 HcmV?d00001 diff --git a/webroot/font/cakedingbats-webfont.eot b/webroot/font/cakedingbats-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..e8605d92685dc69e3555a2d46c934332ade64789 GIT binary patch literal 75538 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 J{3OkB{|TIQ9Sr~g literal 0 HcmV?d00001 diff --git a/webroot/font/cakedingbats-webfont.svg b/webroot/font/cakedingbats-webfont.svg new file mode 100644 index 0000000..d1e0c98 --- /dev/null +++ b/webroot/font/cakedingbats-webfont.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/webroot/font/cakedingbats-webfont.ttf b/webroot/font/cakedingbats-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..13d54454e71f4ed2ca3ad46bf8910b77acff1b24 GIT binary patch literal 75412 zcmb?^37izg^?z6Qbobo%eeK+{vpYL`%$~690qnwZ9}2r%$_B*qvK52BHTL=(k$kf=#a)Nt(Z|5o+vi1{V?{Xc*H=y&S%tE$&k)zztm*?hR*MjR_plAN-RUzq7>1&P?Mj}4AX!+ucq^>*baJ>NWD;LjQxg2~mZuT35 z>cz{}E~lB@5>+XnOrhJx7XYy4odRG+$WvCaxdGb!^E+tJXxX;YQ>7 zHOMnB``-MydmgyxuN(=zi};?4=B`=JUtztABjF{u4qZI=qJ@z!R$YnfO(=tT`S(_? z%Ia5s!I9YQ$X~yF#lq#gRy?_lBk@B>-+$S{d5b=6m_C^!i67uv0%+@SuMPY0n>2h| z|6~sfFT1^$#TaqrrW}sPHQ`18Xf0gfcIvt0Mo#2Z;sO!Z#IA(G*Z@#tmIlaL;RHZi<}L`c%D0sIF?3QEPety#I6KT6n-U+yB1e8l^?DB1y&0K za?IdXbN7a{q4Lmq@l&TyBc9_Zzm=N{K3Cuir@uP=$I~yJ-go-e_iNv`{^7&lj>^kt zS-$&2&_=Wf^dF(Mra1E-%0nCEzy1>?S*_9P^ai8JY_Zzx4yViQ@%sFMppva96pln= z@kFvXRZ^NR%am7CR%NUItH}Si$eRDRY#f*3s<={aEO#No6qn(SQb8i^IIfrD z(qnr$&7{uVgly^RC8w|JV7JDIE&6EgiXwoR14W4Ms^Al#mX!?-Jte zQ#zwvp`K7r$AX?vduYkr1-n#n79wI{Pgi+p7dN$YDSprC4DV{`@)gL1U0p*UM@8iz z3zGMALBa)j2?!ahd;p2W^w`iYAu*|Qa_6q@k-l9mBfEUzaHwt9{z;v?_K)<1ySk7{ zDwGr@UbobpFSCp?OC^X`D^jL*?rQPv;<|czsLZLI(eSSBo*rKh>XEoX}GJ5zAps5+=L$4if%bp zjG&{+TxK`n${U}ORff;2c1z;BjZXB}>LrjZYEE&sxHkc-Rtd<+Zsw zvMIMljGXv=tLk1nS@iVNbU(5a5?7zQa}UH z0f@7a(A>vGIQ2h}4Af9iNGySH0tuiNXa{KG2qZSYi*BST?}sG3)usJ-%WDu;RK|nE zVV7hhiAEAhq67)PrrKIp8_QOyTuL-jWvgoInn+D`BAG#2n!{mtN)v4KUxmk8Vaq++ z`HN*+PA^z+!37HzaHqH2z)`xX@zk}=_jYyO+uS^Scysf;on4G_+L5OmS*><5uCZCk zv4!OTeR|8XSEf%@GIS{!kQEeD7pLcHFB6}}bD54e<{x`$EveEfZ4Lk1CYXi*eN2EGQ&v;Thxx#a(ckQI1farB2IkOH)T9xy_Gk=ksP%SoRbk)n|# zi6rsxG9;N1YO0%fJf=F9f&_`nF0+SIQmH2(r>t)-WXgd3b^5;RTw97ib<{pn2RhU=gqy*a&O` zb^v>TmjT1Y|^%kE6P+7uL*}rrmUTG{^y(SB2yoGyR?Ltd_@(V zE^ArIzzJWlv1;wC{uh3JDyOciYItHz=e}ROwrJhgpS;yMf8&&xx>uKUnDjQgAnKA% zBZzec>b`2%s4r}hmLteVd9JJJ}ZA!Ebt@ar0!Bdall!aC00 zH?Ccj7@DDW%<1#(GsLYJU&nA4b2o60afi64xxL&LX!bCBHdMQOk5P|g1icSC9SGO7f7oT(TK`O;w)oO zaAkyKMr16xNwh_byxb&Yzm>{z2ukiV1oO$DV5@3U4R$3+$f%OIk+7-pk=KrWL&#Nc zkcwYlp9syUmAC%$lG+)e#Pz?<9eU%c-05$Qz4l1sm7g4VaCK|z>IV;eJkajE?rq|K z{M^rpgH(}Pk|x^UjT!U1+}F8Z;l_s#e)0`>dfjb*dwxr{ z^qS{#JFdum{mH?HhHTB9d}n*4`o??izwwel&&fBp7dJe3@XzZTcOLxo8^T@nAmLuR zp|a(j+?NpeeD1~EhhI#b_yq|-(~ZCljqkKn-tf|C?!l{0bKiV=aA)KCKOcOsp?Le7 zCwqoGbnug}b64!hJ$FrMcFXgByKUX+Z$3HraAV+-8}Gm8#_GuScZeu%HF^`3jnRhX z%NAx5Wx2YtL}uZ#S~!Cf~lZaDR+DdM-P)LMhtY}0717PCRC zR$2X#AMv83(MoEg!6;dZ(-j_T$m=l5rQ;Sg+Wc0nMEK~K>-H?mP8k}KO?F?%=B~(; z+J`J(G;3mW+I?cNJKa2S)}rM@?CG)!w=Lweo8-{YDcNOvt{X#U$wr4aWc8Gn6#>Hbxnf-Bz*M|2YhQ6EI3o}H7fukzzap=Q1^kE$OFb;hfhdzvBG>v04jbk*8500j1DMT4f&r-+=45p}7 z0~E6ii>U<`6Sb?Mo(UaK@e)B58)=t@?bF2LZBV)JQV4iknlPx+NI`}k4e}1Vk&i~a zw$Fvch}yV%;xo_hf9Af{OJCpK)wTWgOIz=IX8-fgOjIXohbJzRe36*hS{nCw;-yw| zEbNmr#j;)_iW-BQ6t^BfI_v&FY>=I9k6m9jVad>;OD2@*?H;#NzUKEoo_VTc*{*ovtgH3-KdnSiH17Lg*FNkrSEK7<8Dn9c`|#GU(7&j4RETZzo)1FbYTX7{y}DJP}}4>Lr?ku$C2KQL2Hc z02dpmFp#N&7~Q~>6rTI7Q2p3a@|=l%lfCws5Xo%rhTJ+o%rbNDMFcJCz}q?lL;tR`Y7#Sdv;49CAX`n}zkw@$d> z7k|tBdE3lAkN&7htyUS_D)qEyx;AmA|Il|`N3ddu->lMkH2k%=V>rEJ$dDzap*nW| za2WSz<)|B*06RPNf{QPhnyosoXZJf-T>j4Pp7W~mtkR`9l3aM{hPH7xT(NL;u|GQ| zBUv?CwTt%$BF)p5u4yS5(^6yCI(2F%o~;_scA7X;e3r9wNv?@o!(GXB!(Q3MjoQl< zBRYj=Ol@B^*T~*l`m6?@+fdL&cs?|ok8plDM=gHE@~_|)<3Ypzz%USImIUqfHrCcd zNmXr4bveO+A<6M*lgM6#a81+!#9?vD)EY@7Wmu5Z7GeL@RD*;6V2em{UA88QhiM{` zBa2vSRJxo3Wu5`DbllbF)k|W7*l=F=IDcLH%$Am!ZS@9GP+OkWn>EukCfT6MJ-SU8 zI=B0#yC+Pz`{wSsLxq8LO}QCOe7RsWI4ow1HmLJ>{W`nWuGg#8vSiSktyY6ZBkJZ| z?}V)?@MUVP)}WKsl61e%*X8$j;(woSWB8hf_n&|M{)g9x^(I+>Ek(|g)oRIT)*I9t z^pbRZ{_8J3(miHO_aiU9K7aS_-7jl24m|{$iX29RN>Jo7~&npD_S7kwvPx zd%4H)EXUzl_LD3LGQ;9Dbn;&rXC`T9oJ*mjx3VW+i`2hlPyUy9$`|7)UyQd|3*N=d z0P#XrEvR1Zw7HLnoQTO{6se*}Rg#Zu6}jI+@SgyFHVj}52oI0~8h{R<3s?%Q1vUfQ zft^4fZ~!pO?j`LgK^bJ1K{t$pdVPycO{ah}rM#B}5jz9)jB;vYlPu>15jIVnYk|$cc3>ya2OI#70LOsi0GlCdKzM)@ z&;WD*UBFUcEwCBb4(tT_fCIo0;23ZmFw-$j1HuEOfCiug=mM4kYk|$cc3>ya2OI#7 z0LOsifO$n9cReTngNfP-QClHuD@1LDsI3sS6{5C6)K-Yv3Q=1jYAZx-g{Z9%wH2ba zLe$p5N}Z(;rBY`p1OxS3cyc@N6luSH7~wjE`w;F!&wU#`_i^?#X{y8E9>%jiZSE!Z zLjdUeK(~T!&C}`zOZ5uu_ZIe2!TRTxGwKjWVBJ#{ z`!Fc_qV46LLb@HGdb#i6<{Ubg7Vk61ieo<1&v^@19O6UZloU8az!`<&(wvhKF2`$f zA*aGiIW5nfiSRGZ#dP~QRO4gd8T^9bOeOSTM#9#hkSk zBJ+BfZxokRJ_F> z$bD`P{`(8QI5ITtHE2H4sbi{>kEvp^{v(aSn{JFWl?3+%OE=Nql1-)bS9Bx-W^*9n zNH?1OiQMP^~qif5kq z`>gqDVkLHiRp*qo7#=M;J>Tl|@;)y?@e_hzFNkmFz5wJH-V;(=UJes z-Z>xiFQA!rU;yvuF2HSfK)dxrQw>tfPyid_U7F|ha@QjFb;!K|;YK=f)Sw(5AO$o4 z9Y7bb6j%#v2DSq`fj-~>a0EC890&4)>{$v?#-pw93s@jJt_pt`+ zOSdQVum%ECcSHPzU5%nGWSc{**Vsm6d3V7ecrri%@9cAWvF zXoZQ`!E!n57-nin$l`QbQe%ge>9sapq_NEFEo+QW72)?t!O~iiwE28CKpbH(8>m@Pv>Cdq|i2Lbxf{JR^{}Qtx!@Nb|_^ zj2>f0cj*y}cA)Q6op6AHEDM*%0-}Z|Hlu8E@hXk2oP=Ygv6SBl&88Lzu9vH;veqK|=EEshI&zoH?Gd~hec?q{5d|L8a zavovmeID!Y?2dtFM_PEHwZX*e2FC3mf8Rlx%OiobWb~V$gp4l1W^_B;fk=7oJ#{7& zDlzJeYMVv{L8@w=*9&1uimTH_cE8;yYRqc2S|pNMB0??CtF?Sgq6^$mIq<8h$BWdb zG6!?iP24TKelHZ5NSFT6<>%+M(q43UH8&DG=9w4?1u+r|Vk8vANGOPr&`;1D64E;YZ|4g((pUjz9CoU;_7xSY;X$O=}SZd9im)#*lcx>22O zRHqx&=|*+BQJrp7ryJGjMs>PToo-a88`bGXb-D+ubCyDs>YSwz80G@B(l)B-lr^b- zZZ@Z92J{c1>Mmf)EXqw_oHgK3MF*usUuwDt1#^t8F)C&k)+Z{cFPUVSA}M0YpnQny zJJ(Ee!26bgYn$0~R7=2FO=Pw(X@Xn`RaQ`Hn~|F8mpa9kRJ<52X6q5E_v+LUr^A!m zsnSW#+CZSjc}iz@5h9g@LRG_t)mTQ~F+L+X4LbE?y+P$R`V4N-Y0#@D>5XEFG+M3p zcwIErIc;J%=CWFCiMnWU=d?-T*va?r2n567Tf+)t zawV=3l2fnMPCNCiu{;=_aPEwBc1lB$%~(M%y4VGgeiWKelAem&<6ku`52FKtJ95`z zk+wWW#unLZpV`Vi}&#w1nG+V2^>d5M1Q&LeLJed~7 zl}QrSSS!cMSixUSQ;}Ng&2+F|DN6mD&^~AW=DnS8PYX>19!|v?a!GP6#8byLR92$4 z4yKjFoZ4}we(+OQo2+92HGb&iG6BO2iVb!Sq9i5A5LYc`os{i#FrGHctgFhIwaX64?tl`-|8ze9OtD%xW$_ZeppvCJBt%Qd zQX(0tiPT_%U0Yqla#B0anXHu{8aJW!LPERbkQ^1VJ(-9^ksbdx!6ak}PynQX4_~gJ ze0o!qpWfA3l_6Q0pW2+158KWjl~6hqDnn$HU3Owhm(RxdmDQD0>frw6zNF`#Y18iMxny$Lyq!naPrRvn$=FnC?2_)ACMxudI}Z)K ztJVdaMwi*_G&ucQwHj_@wOZ@Yl1t1EhnZX|$6fm|KbEh!;@jW-uDE<^np*2e9<#-1 zbOv-R4}R=A{zZRnsn=Ut>(7kRlW``e)0BHgKT7q0wa8_Ndi4&I(P{8S4Xz^6Q5s^G z`cR3<7qdHJKGVSC8Y)s>ZgzRKTAiS}Rg1E@3?ZGx!LI+=D$6P&3AtBQDpD(|N|rsp zWy+K-&o9e|ylilr?7U>h4~#pLL!-hCwW85tGaGol(E)$8?g`0+)eV&(Th&?(?+jJx zWsME{B@!ukBD_AA=}B3KbwZJRXb-yMT9e6Vu?fWn3(9UZnAIlZz=ynA6tMwAqtfzf zf!Byyk=L}+9~Ic5gHj^=0-|q_$7A;fi)1hs4XF* z(IxZNk%C6R!T{YI$joDchLJ>%LBax@D7|E)R;LpLmSY&ki18x}Y z8Wmjp8bA&A2C@s1ptDO5pw&FBbLccyQBbCjs0lQ^L&ona-Dh~&ANqUU4g9o)H(ZTj3~qtj_5PwLyse6=OsN7BP}xw(vWk8XI{TUG4w6j$Z` znERYb?+lYr<%klS39BFj-{hII0xu~%t-ejAKlQ8u9f0f*P54o_vrfA2hAC5S*vC3+ z?x7;LiTJ5A(P1?4P7@r3Mw7;@H0}57vvTBbT+lb^D>s8Xh%f` ztVa1wrm)2rRudKaqehR8tb#WRlTkSKw0fIbG;wRYe@)ma#ZbKIdkr*i<4P+D$cN+v$?+QA!aFq&?Iq`7_IHxnC1ew*TN(8`P}3RpCa8ss>H#&8QrJ&1Sug-$7;=}u z@T2rfxauz*j3vLr-5%j2Se)HRGad2k5x=1zXA9~<%g{^CL&|MP+0Wh1-AXo59+P($ z(%&;Ek8yTE(j$0U#+Z3tgS%o~Nf zO$6s{aNfz+x0j=wKOpTNu;%e5jN09-CPxqTV+~MgiC(e^hOZ4A`(T}jYw+%f>mzPz zZ=-ftyMuX5!*K|)qD*T{LUeVHaj^%0j6-Y$p&MZoVF+OiAx()rB`~N zDQS*52x-aYBE<7$D?$Baexd#g3T=aB7uG(D5W0|KF=XR8ktL9Q;b1DpxfCfbMJr>+ zA6WyMw(44hG#92DjDICU%D)OBWrMZ3q&M)#3UIo1yyn~SRT0znS;JksD=Mer9A0>gh_`qC_k@nr zH^8UBKLO@!RD*B>#XvnU8t4R;0Be9v!0o`pKriqL@EhP$;GY273!nz!28w}tU^LJP zECJR4n}FMahk;(;72r3(r@%h}^9n^F(ymKTK_4pEOG-iE>l;uJyf`I;4N4y>DMQM# za;W1%qlLkx>Ud0{si=acs&*~Hafq2PD1mf9^6dOQ6y@50H0LADf_%s9MVekhmFZ}N zix9KqJ94SQoQ)W&C~01*C`%EpLr6=q5#cC=n-J1;J&>?vumg~r3e>FyspvvvJ5tm8 z-hq(bm#WSpgj99j54*{SF09CX0GtO0J0jV2W_KmKk&Bk07a=WMKhnNB*iNkV4kCt@ z7G00fR(ca5E#)DEw6)$sNK5}VLMrJUgj5n$hBV*r5z_Qj0n+?O5z>4gBBTo7Q-t#o z9>bl#_)d$SL=3GNRd|;nqzaEfDe(wVQ=a;>Ac5B+gajzNeqLXY@EJH%%^@dmMToXy zY7P>i=9shAB})?x;-81L`gP@XPy_+zQlAxQ9{ zfr->)k(1CL{BI)PQkDWQUZ8|Rj&FH3L#beVx{WX zoVupf3nw^q;s{CSn6PklQ`6#(lsH`U8WWTCSWk+Ecv%p6y*AVq7VJrz%44@B25!W} z16z@McwJG@Gw@W8Ktq+JrPB>!&tJ;8M4B_>a-V(Y@=GNL#Dsz#{<}#dvQ{JIS-DTo zl$HBb$+n5+5*$h)R1&5_m_I!srN%5CrqoGlzV5)Si^E;5EiJ9BKR)-|AGbz@aF98` zBkrJl_o=7GTa)%GW5Ad`xA^GMqq)z<3r2p(<5%j6iaaVz7~QrN#b_#Lgtxeh66%MD zeZqvJDW$lmExx~~?LK;x*v60lAT?Mqoh*^st3SX$lMb^$+pQn)GuGLJbKq9sQ#yyn z5uBC#Y`A1l+w8YjI3=an4O&8`9j#PakyWHe|IpE#_UIwBC()y9N0(TJrH_`JaTo06 zzxwD=jZG72@nWapb5C3ee^c_j>`^i~I<0gZDGCNV5*179n-+~J7Kclzv5T7Wk9xSM zb5{oUB+KJtLp+|Cir2y+iFu>m7`9lfi6N#lZ-y%-Y7><-@KrvS2h!;z zI-_*aVNHw1rljU;U){DS+^IZQ`h<%U9l>xU5_UHf4Sd26*O??8bslM}KKNkZh@cmT zka=lVK-m^<36QTa9e3jf$?4?-J0_5M-KlPNJ5h4`1G-xB_0jLJRgycPu!$Xy{7F%- zwW=*24E!ddpJuBx3CmKsZAQ1=n-VU9v&p8-J@KF{VYVLBV}R+2;)f?Wo#!s4i9CUz z9uKysB=;GFwSOQPWV0bRoIdeWUrX`uwyR5&($L%bbwV|Yqq>jhy?^p2dk8Ct?{eSZ?j>Xh#>XzQl&mIq zlPAbN@*;T|BiMW7bMiOdz`L-iWir2#U(esbKgK`J|BQc~Kf)j5|E_P?%MZuuOa>O| zUj7PDY~KmL0u-B_^Vfme$YS?^`U#_60QC~1ehKO=MjZk52BY2u^&X=zpXdKXDQue) zu@#+C3qW-+>Pc*Y*}$k@!vnzNku27NoRkOaSq;mXQd6+nG=ovMfyeg1ke`5e592)q z>Pbd@jJyXy!Oqj*X8*bmz6-piz*=B4upQV5^Z^HeBfv4>IFR3ta+X4r?I>p{1lv)3 zD3O-hF`Q4?(CS0wd{|2NVJY2**7R{*z*1l>uo>76>;(FN1HcjB7;qfOSMDr@D3v=) zA=uEWVsprkVP5{8Z9$S@Tl}8QJB$U&RiHw73SURU6BDN11};&Etu9ct1*)z74QP}NXp{|Tlnton2K2fOXp{|T zlnrQ<4QP}NXp{|TlnrQ<4QP}NXp{|TlnsN8a+X4rMmb9%Xq2l^q9<9kuNkZ&{r37L zRPiNL@g-F8B~?Z8f;4>$lE0geI30i`2?@Bk^G0q6j_fTh4%U^B2C z*a`Fj2Y@5MG2l3$Y+VQ80a8E%&;fJ-OM$h(W?(z86X*jD07rmhz;VF5g09{}p?iQ7 z&;WD*;_QBSnBnH24}(Ms)UX1DR4kUxa{9=a{Qh^02p%8>Gyoky7qApq3v33q13Q5} z-~ez0I0hUC@-1_gLRfEvG!Kvh8h{R<3s?%Q1vUfQft^4fZ~!<090QI6<`w;<@amE8 z6}rJC1!`5EVl8+rZgwqhb}eppEpB$LvWrTC(a-~=fCiug=mM4kYk|$cc3>ya2OI#7 z0LOsiK)yZBQi#$XXDNj4qS9bU_W&uN0q6j_fTh4%U^B2C*a`Fj2Y@5MG2l3mug+Nt zQL1y6LhyL^7arw{1?r^&^>TrFr9i!!r&v=QL{l6@QyfH797IzbL{l6@QyfH797Izb zL{l6@QyfH797IzbL{l6@QyfH792{(lvlOB<#aRkLQ~a8Itc>pDH+c%ZT7n7c1QI|k z&<@aDJqzKZm~sf92V+REPMtsks0G>qn&=91AHRV5vH7V;I<;KMwhHtr&Tdou!XwB* z4IuiG!)EpXDWC!90BB9$Mba;j^j#$VI~7ho2InjIrg?&0MNU3M9nAa^PQ}lK8QhQZ z&E=P{L2hcE>gDIc?Yb83)3s<2N`D0UBe+sO9!!hgn$JaEDNyeWQfNFS7M>$z=MS7H zZ2wOk{p=%AO5_3|R%3r2d_IV0?j&3YQS97+uZdE&tQ@VQoczWeMzh#>HFn?7k4adz zI8rgEjtd(?;P;@;nkdayOPx}P!EM2olgtH#vY3c+mkh7$aaQ&~H}S5zAj(Wj37-wy zHto!d#GT+ULRJ(lPD@R1nU!%LR(fonp0!_2$d5}%F+Ct{!6Lp{%I7OZGTdBQ{(E)JKI=m zD=qH&Us~IRN)x(G4Ew3*hr9H{Tx<=O<8)spBP?M%jw8rgXreeaZeyz$y)|mio{y0a z5cU-i{D&^15U-(+w2;c_`tH-R2<(|63!ZgtjVQcO;2C)v?S9yghOO)Px`>Ji1M&ZmCUp6o!$u5E2TNy9e&MBtmYR}v$%pHP zr&FsEWU45Xm6h{+EM$!YT~a19rOe>SM$4+nlbNZR?^PSBpDkNewmVSK6t1W>RF|zR zGdSxL)osL7Q{pR++A0&C%A|{2UZN|}>aeBEr8BsUj*wctK(}C2=D_&IV7(JQk5q}f z#4bB414Else0dr&; zMpnk!$xxoJEY+2I((dzh=a&z9pVyQ0mAyG{!_Ln->Wz4rEEH_uYkh0ud%+Cq3@}daoVYShrHm|)bUtVjd z)DvwdRsPD>c+0q8WoxV%lCXgalB(05ikS25vXz;CWTv2jjn$L=`NqwxDl@w3<7ixC zHEY}o*0^hG&2FSx6 zPoCIz!;Nj@_?6XVWwjb@Dq7oCl1_v|H$9h*2aC3B(Yf`HKB2a%gAtQA=6pQ&Mx`s9 zB~tDU@=$hYZt~@+wrrp*_+oBywI@3Il2om$xF%SVbr)B!O2yE_l9J>P22#0iCR7j6 zO0sN{f?f(?mU~orj0&a)jWpW!V(NMC^V<|G(12&V( zWQhk#Ykg6*S^ZRM)~wVnY<>!9OEg8}Wv{KNCK;6jA&19eGQ?a(t|C*Q)Sqb1U_YGK zI3jmEnzoes2cp%sNV%^h<%pEsIH|atue8Q$qHC^+wPu6k8so#W!3m2iQ0^*Ud6g?! zb?-mE`syFKgI|7G^`8smhR~EO=so`tS z8yovwbU#nR&p{BV8lhumqMp{$gTrJ5@LK={_5 z3g_jjKR%x89vIdXjLxiUshGZ|Lm07UMs>q^>qhWK+n+m{8pjU&Qy5w@_JU@9^hF(U z5^ic47*#uPjEu`YBMi-94e->@|M_oH;5-2C^cd|J@#k2$F5*hD|GN&8_)FnS+`>JI zuU((Rl>L38!52Z!z1Y_;;!qpvv%3-$H7V$^Mj}p+pwvcC*E4D-ym!nOhedJ`bAK9J z0iH-HB7;YZ|4g((pUjuBOAc1fK z37{5e2c`jwfYrc8U>mRl*aN%_90ooHz6RI?Spwk%5mRl*aN%_90ooHz6NL&H==5rv0I=AeIUe4 z(;wuYa6h`B@~o+`4>uB=3Aoix+-fIowUe5_+)iZQik8`mtt!2spN6Q{(a|bc7kOPd zK<{-pabAZL=XE%7UWXG031;_k@G+zBJde!JBXcz}zX$p~CCit{@+Go-i7a0t%a`i&7c&o5y1+kbZaZ_RR&m>ynWli@a(k%cN zXDUEeFLwcGgv5wy8q50#4#GmdOTfhrI!Nl}E(MLfQ0xuLu8n$nHVCo~5#h z1*yM}(*A&ZmV26UXnxG9xGj+71${H-KbF5=A87jR<&8*#r^xdC z6uh72^SuT7t$e=Ug8nUNS}QzdmiANdKFz273iMa`w5LFyQuy>l0aj}#@;JdWnX!ip z3-bPaJ7dy=Zy#Xr($5tK4P7zrU`)FtQoFYX#%>LXTjC=Arva?#{0T$(=|k$99q#{=S*<^;zFtFgyrd7<8$DQ$&77pf->LNG}AX<~H$uhzCoU_g$i5PeiB|{cm zKW_ZS1w)1`*f^eqbAO<`l7Z3mlCsGq0~`2t{JN8Ed=uX^@FM>Ev}|mBQBnQ)Ov4y| zgR3&=EeTmHMWxGmdvq~h0;y!wXT?DxECJ@ciH%8+~vOaDlxB4UEwW)H)*<5xUDGRsdB~>UUS%MX{`t}dLynz55dwdAJTxkuZ+&ROq_@{pLtAPob{rmZ8`}d!? z9w!&2OUE~aqrO&$+aAeye3_`-<7|i|kvn~pt4MqzZ!45@ zS!~^1gO9v^$UT8q`9+*&^A&&BUTAU=hJ-Tei`Yy|sihe8uV&h;2U+MhU_S=u2FCdb z4&tMnpMmo#ON}qU@<(rs0j~i(SO(B&64TikP-aGX@P0~Wde8evjqJ<&=sl-8HEo3(e{*gGpK7AbrFWMMWCS0 zA>?y5XiP*awPAas2b;XxSSyAK)Y1ZVLxI{_pneGXK{{Y?7oi|eLe7(TK5d|10Zj+g z&q2Qm`c=>qK_3KtFrVf_b^=Pl^Po5m6h8(unjEizAA`?2n7W3iz=ki{|EsDlxH1O6 zD*G2t#=q0n|IU$7(AIvE*VY8Siv0IzHViGL1ef?EtuStU>sra5uR9Rf$!m>mG#q$F;odVl*DuEx{L?0X&YwSOZD&{5v>bMiq0QVH>WKbYw4;THgibeFQs+rx8!QR`sB&6SIwxZ znsL=?e|A*q#TS>3%KG`HQEO0)&MU{1jTu(unh~E^ks4X)M?p$(n3__MHhOp-79-3zn4Y`&z*Q&oO+@|@}GPr+qI^x?edw`b?L?7WT>_y zRWhb7R2-S%D+!pjHU5Y_Q6Eb+CT%*6I-N1H4umTcPaMc@2fbM~Hbt~+v3)#zbZ-IKYKz%+)Veh??4(7WC;ypkL zXaG8ZE?_CJ7T64I2X+E|zyaV0a11yO zL0GKM4sysj;3)HjUPk`~7NQ+RC`DMxHr3k6P^zjJw-Ve++{F%yyN)VBeA(Pfn!&9@ zI1=FsgjXS4gYa6as9*tN4wJ=ncd4RM;kXba4nK z{*PmOA_@W1uSuY1z``CBm|%Pu>QuftrQf$=KV#uwCHjSCfyX|gg?RX)+4jo(d5<&$ zs*5{9KCJ+?e(49rICvA^w$?N$-yXxwP8&n{%`&N|66yh0JvDx@Ig**IikUoka->pW z_T?$6s@xGL+bX&m6^Nce3uE=XP`tXWZFK_Qh^erTOvDK(Y8BC$ERv*>^x7X9oe8HA zN4ct0vNxQFcy5dt+*X~>A|*!H^}0-Hae35ls)?0VG+pQ?k#J^;+np&5MnnUSz{aUU zL~!5(L{Tr0Rk-!3I}Gh}mSvOe*gfF_&H#NR&)ztJ2;ZaoPpFE9P}}OrMjE zAJ9dd9#5GOUwGlrW>Lad__9=z@P(Y-dN<^$biAoL>)n&qU#p1BJM8M>55(P3dv|M@|(3*vmQqr z;%rKT(WiYX6jf`CDX+$&i3K%+N-qg6mu!$@PQBNq=0%Qv*CHiH+ZJ`lZIC*cz~9WNP+OvPwWxJ8sO4pR!s_(t2ObU@O3!Ue^EUdmu1POM>c*r+k4a@R z>wWh|%4{Z+tt{g4p#97Sy+O~3vCA(JaC(+7gD^EB9h$7^CPmp5$`b&{Yx*@U)p zxoG?4Lw06lo4i_l8K1lPxT)M_u(EH)Xz?hlyf3&DM2(tccEgRd8*ZfCa3k#= zbZDKW5XGT&mO?NN(Wp+ zujm0xEFKdaLZ>?YT#oxWkr)pK0LdVq6(OcPB%BWu2&ueUI`-{=FR2V;UzUw@8kpe{ z>kmfo=$O}!nbrr)x>ybl8xJuXi}PSuCaraU}6AD}vLZE@7Kr2!oU zP0tSL+D+3V+5zIWK}9Sp}EHcdzK- z6v}y4%Ia%)FfBYW7K|P^SC9@J$^b%tDQRH_H#Wc?s0#$LR zdvpo^kUNSKba6ngq_(Iv13}7n#;XGSLsZT{S8=_`8?`G}3Wxp<#xl-dZC;1l?eN-c zUIuG%Ynj^?2nTGG%?Ni{Yq6&+Y;)W3=|2&P&g_pnY<>;SJiwKuTI!ea8MZ+-30kdS zaKw#8qSI(}ibck_gPsvcVYFJYuxXt}?_!KOoiQWj*W=S{6iA~VXV9o|RItV%+^N@` zdRA>fxoyQP+L5RV5N9wRb?dBZwOyzDx-4pkp1d~@W7YlApN%_FVWUQ0Uu=(fO^|80 zjQ-$kUe8$5S1@=|Stnp96*3yl4vX=8d?T-$YqShBmjr^P zrNKbS5}VOrvl)ywvc;}GAUV2>7K@ReOdCTvdpIMF6c1q@E^|7JD>nEME@10Bk8tmC zA99~yJoyLt+g?oSMR<&W}#;IL|Ro7k4>0z1$agpAC4QX$VEcU5s%2yYviU zB={4coFNRt1EhckpaY;1mI7;m&A@hGC(s8R01UJHxm~!ga&qxc3e-y|Qy0?}ALMz; z-9OHk;xDku|6YjcLV3QX=elC=5UT=|9tXb!Dl-*SH=}-nwon$O;AjU;V>iIrj??-; z5%4}|)Tf|6V$=bodYe&y1n&bz{T|fc8TA)XikhVdob6^j4dh_o4Vr8TROu?FB2_4| z3My?03aJCF1Fbi3AJQ#`7A>F^vxSdNgY*an1q5za$65BUk`ZJ@V- zrs*FB{V?bQpdUrk>_;gSRlFOVpCNV^!j~|?u)!g0p-y2y4A+E-BU+O`76`uV3{UNB z=u&)?M6U*Y6qrF!bX2WY{hiG`s zvrGupXhnmcX;DRqV<9lhAoPQ?a0L5KvSDoQu!J!Wz>Fgr#^GN>cslQKV1g1!VwzN4 zJB0pe6j!vS&K0hSJNyKJ1KUMh;l8WcKYsea=e#X<{~lFuusZ2g-aPUeF%r$B zlXEH?E=Yy3q)w@&Uu!g{R%x~TbsDwN?6#X{-w1u8wW%$V`WchQW*+E?)|VD(b8)0u z;js*yQl;$)d`1%2hRcRTiQcHgap1iA)J+&=lC&WkZLSi879V=%~GA z@~CTSnwu*sYHyvqY}R4B-)(oA52vv1&L?JPhg^`1M#?gYS=phK%ADM%OK7zTozSXw z=$uBY@thxNa2|@;jVk@rVjOtVm8!ufL|IL=WZ;~upfCTV4b~L932Dc7Ra#MKCxl<3 zv1(!?eA8dG<>Iqyuf!Ie8vx~*xtY?IKaQ!sG zrx8cx?gzaeH08e!`u#lrkD&huv+6U{?NO#6zs^%i+WayW%~vp{aId^E#nO;8468If zH57Au_D7)TTv~8ZONE`3j2Dww;`Bwwt4Mdb;qL`xL}hXh2POW#4EWRxVG4l0x9spR zXbn11hqZ%OJ6wfBqm03}p{I)C6yARc<^1)(#t&W(#^c~C#X7P}XWRg5T!U=#tlAZb z*v-UY*6L-W*`{+v8am?vmCYve2XoJhQmUcJxj5Ravkhw><#Uu*RaaL!-43fMSW{cy zJf_T15YCHThghCVoHfjFvd3@Nia0qAywLb(Q+7MXkY|o1HW7cBLK7 zizig+5|KqCtf^#Jr_Kx;)mmqwXDyk%$xPB~@+aNVQk~jmbY}f}oz@zTSCVdzD_w%~ zjfp4=s*<$J^Q4ZPqt$p!2AA6IhefH0`uV8G(TvY=M3%;@D!; zR7`58!VH;;N$pf5n#vZVFjeEasD)ArdyE=ce(0hJ%x1un8MOew8v&{w6ecxxBM#-m zXpDD~%@pv?1#v_lK6u8og-#mcRXEp|P7JW&b#OSQqph+cP2Wdpn$}l7W^r5df=MmD znM;?y^2qgbve`M;Kk~}*@+|U~`~Y?2ZO!G%b6& zHX1IQcgIB+{b*iU*}NZZ@^_3IGb9>onv(G}F4_9PGc#s9^Wc`Hjg3pUJowCvN%!4$ zeQkAnQ6j>dOcm2xlQ=Sq@3NbXu7z{PK6la8hwqp^{f@&|(-6;so*jFEc)N5j48{PS z2mPAy`&iP!)9?aqXe}AdEQ8h}q<;ZV29MgH2AT#B!^0j1R_O8f5|uygGm>#IYeYP} z8VEfI+v&PhD_T~u_;83etVB90Snzig>65_LCLG~G+rJEHs#*KvkU?q%!3e>z`O2Tj z!)eFV_K@ju$M9RiT?zH(u-T~_7Ax>{&uK)Wo>_WbLu$ef@%D7+#Ob26h%=w~Ze7G~ zk7)UIGB4eBa+~UcTnYX((+_bd8?Q5Hu238BXCpON)7i?^8UuO%2wjlN@o%! zqDourcFW1%83m(h?481oaLkk%=PTuYN!7$!I-9$S&Oipn-+8Cf&%33Eq-Ws{=s+#$ zp{;xAiPM<8)4oMNoTuH!l0R^{2A`4V9k)!U!`z}F7MpOUAJx$8FY?gdIBal3uXK4? z*EvI4J8ye!)vDKS?;P7*>~eOUQ+#e|YeUhZ_Vmn5vhvcAv@SEhqLv9u)`j1n%MyD;pseSd1x@%Affy%$W7`5 z{=zNYLbixVd+8}rY-y6NaDeatDWC!90J?ysz*=B4upQV5^Z^HeBfv4>IH0U>fbak* zpaJLrx`3s?T3|D<9oPx<0SAC1z%k%BkY9#9OCk6~%>ZG_!B>eqr5Hi@Ll$)R&bQ~! z&;cDA%W=jcM&bW%9x zDsgT}sLGUFG_3W?3#YjB(o9M3nsVWlt*sYLNaMm5YRi2lr6*j}nvWkbU~d~avaRir z88aSj)7msbBoyr|&vZq-Md}>`Cl1Xy^yZvHhvvL_XbyQjG9}fH@7i4rf$XYbt;?9e z^n_)tt?LGFWh)l_q=emaT`Nm5od2xtQ7XG_#E3TRU`>q+Me)zu7#jG6@aCL1@&BRO zZ@xJj?>E&uN2J@afhr5FfYvjh-xT4+Kx5KN8`5}~Ho#0Wzrs!b?qB}hf$8zBL+M+O zP?*k@n9GPL#>u~RM~P3HTrShekvol5{lOtwi2d}BK{!CiB-Dy7Y zg4yZIG(r7ld`_HQNz;ohH0SXL={3csK?1W-`SdbblzxovYD3NFFgF&UZZ;RS{9u(u zk~qAVe(XS3m=Z~iGJVTy0wU0nhn~JnXM4~BPzOq4R~y=O-ETHd|5Bl{V#KxuhlIu_r8c_;7g7Tfty*>eR`xNNvL54WwGq3+B&B z4r{Wi-ug+%>m^sKU3#mvIsH`oZ)nZGLMUWyD5OJv@t;P2M+f+f62h@c{ zrHX)x3;fZCKA%3cw2A-k@7y~>K>q*t-lx!C&Tr0k&pG#;bIMtxR^Kp1o(B}*E#qO@Ezci=d0jf6P64I?;znW?AcnD^ZdC7w;Dli;Cn78nVcSyHODv>ctFfv$M$kI=Fg>S6 z?NqsB!KuZTme!zhAup^2!1(IZ#Eej!Uc~;v8-SuX`9P|G7GN?k3@isO0ImYA2kr#E z0_+2x24t9?qqY<1(g{$vJHW35ztX|41;3Voc)|6Y)}by~zo720U|dK8uK!e6iME~! z#!_;w3oH<|Ol%6SkWT)|^MWud6+gF2=>>69O2}z$rWntGlS!C19QhAfd~*GgjoRyp z>S~eN#ma@dbamI7iD?abe+yp#Qh0|coe1ioztNyp9&AZ5t+MBTdKkw*=yGs4kfdRF~RG zrA#(u=9;@T!{K)s{{mMG!HkgK_wR3d17V+)#|CRCGTa@Xh)jw#aX9>&iA!fSH_uu+ z(FwIzJ-R1#Q9zG}VqW)UCyK4o#h1Cgv5=()FG_k0@ATV##r$$`RKC z7o{jZW9;VX>z8zOEm=Q(h8>O_(&JIj>A$@EzCN>}Dw`i%I@x%v zeO`Zauw`y zm*17WKzjh}kYM_oF4K@>`T^tb*cEwLFbKI`ELjS66GT}^E!flhE?SXngF5oh`kUad zgTKzocImVA*IBzNhtfBQDt;snO9Mrq9~c6b0&9RPfUUqCz%Jks;7Q;R@EY(IpiYe* zkTg&P`hg)}DX<2(0@w=N0qg=E0iFa70j~jX0k#eSNE#>t{lE~g6j%dX0c-{C0CoY7 z08avkfY*Sx0I>=88+eJh1w!QHL1gZ7+EdztvT?bZoz9QAPH->|%pOKJ4HSWXUW+msR5L;QYK{l2gAdzXWiS@JfA zVL!Erc)f5Nz6CBy62kU*6#P-}SHYhEf5O3^1{VoT$^WME0L41Y0KI={SJv=5Y*kha;u_GwRZB--^Hz}Z1? z*f1Jw7)_2$KLN)HpTd6z{xk635dTYXvCu2{@4$Zt{uKD1!T;>UzYR_ux`&W@^&&f0 z5!LRi%WcrF*B>_iE_2+qi}c$_zm4>J%B|IRIoLk^VbUKY{XsSR**LR6D=-Kw09F9& zfQ`U*U?*@tupc-Gya>Dj90u%{1Cj+=fk9vaumV^IYy`FgJAwOw{lG!sMc@tKFkrtN zkSx#&3<3*)6~H=RBd{IV3EU6t2Mz)+0&f6^0rohfkFLE+*HEXCZW?P|-e)X&4(I~s z_Y&|W_U3PJ#4|YJNg3lB@N2;T4$c|a;0&zrZ-Rf*sq07JKk6DW{#YJT<7gSfl(sYY z@>y}mW#PT`!bbmt!V}?5QkLbH9*x$;} zG~%&+26NtU5r*t%8^in_w(B+4gRgh+4d9}KL_3UI!EfbxjEZpxoKZ7qv-*wwYvYg3 z=!|e;u*Ye{I9h%_Ja)Tviq-1&!z3Li@Td*EOBhlU>InQzbDX?|Xqqe21H{|jhI-|o zToGARhkHd*ksAWk7R7UMXejMzyL^M;8d%2(6zBk3d<#f#v?=*$ZYYS|u z(|_N<|5s#mz!n;{Wk#WB!h;<^(sG7jaDcZ3HRa*&mX@S}BAO!2ZEP?r8Ev6W66KyD zdO_S;97#__7$BDGOeIdy7Lj;y#6R)s68UFgQk6+AOfm==r)n9ja*M`~hdms^sTwyN zGT1`Lc+Y4co~kZTB=8L3Omj_pzrm2Z&iKJ#EF9X1Ge9yJB_*ii`KPgP=Vrisu(YO%laxU>5wZMmHr4!Sb|vzgbltNHyn~m6h32 znL*B|DG_1k`srmFN-v~K;|mNRTlLNY9KRSbCF|T*(d9N&6>VHP~`=XH;CLq*8~R(6|-F_k1wo>1)Zg2Se?- zmOe8a%t!GPVOsupI2=!o?PwdyWP3W(-BnhDWet|9db4vbud|xtJu7nI;KZ)_CQrOJ zl*mO=@q22TI+|+ki6qQ|Zp4giHS)P_sc-==8wOCbW zMza1`DpbEYlW&ex2RGyVCI$=8)J8o)yt|k|tdirpa{9GK)S`*g@~A`R zvZ07i_qhGiaYl=Q`KQqeA@QNxqs3rqmoppz!yV6rLiLGYI`y8>8S8aM#0W?>|9b`` zpw~=S!_ncjhr^@mjHU-KK8)sf-?J80MoSYqQ|Zo*)@Xgce)>R1)Z;h9Gnbq>L6*^D zp2ECKmt_)pZ=%2U)HB+!#@dk`4A<4wM*?{((~+FtIQ1g6wq$)dpuJuljx={CEi2jG z90`XbNYsV(A#Yb{LXWJTkk`}9Yzqz_=krYL%5+xsoSuuDFPvhwPRe$-)Oya&v`4N@ zr>~8)XU_K2wsdDFwVJ0qg1_Q0bdeB_Qw%H>uLy)fffcxU3462w* zH`FGsiA1hR)Na6yk7m`j>MzTZV!_}brkFuJDdG-!-2o#xyBKe>vJF1Zg~@nx1A`g% z8rfVdl&lX#s&ht|rLKE;UR^``qD0gmY^e_E-jMET>|rIxQ^$8S#3LO?K4Vr7o;g2Z zr9Fx1v!+;)`ntOCV7}X^F-!H>EN&gf%}}7WI~t$TA8IW&wGt6Azc$C+(4H(6s?5cu z+?sg6wnbCUsb;Tt~8fc284i?|a6#!A$qtl!4+>}iMoBD(h3b*(qKeDsSqmrHQW_G3%!J!2<5~Q8hTaS7!1zR29z^5 zu_JPh$K&8}u5~Is1dT;(bl5p(kW=^pQqz1DyAJF^g-P7y3fm5LGvo;Io>Q)8gy%de zy!r=W5{N+R0caP7(kC5pEkZs(c=d4XU0+n)xC_p1h)a|#mk@_8B;OT;4a9PNqdQ;bmz1^@7Lc4wnavoc z;!J9vBkiM+P}Gr+vX4+^Su%;UtkTIZqO4CTPAr^FIj<^lBaBvwoB$^kB8r*DGRI)L zIK7W3DNK~?Mc>P^h0YQ8Kww-K7l%qHp}?__>UfBKWyll~ikV-a(t^w^r9L#M6kNhEMX*U~zx_Gg#uQ>1W`tFl3Qh8r( z@4V8HKeX2w-|s(rxV2q-<(BQ+Z@J#krgT`{HRWdIx*C&aeqvLSbCmU=@(TEL@64G! zCrN(eq=%(B59dq#M_}XM@04aG8@h6x?_lw|_NpU&l?MKxs=Y4$_P0Z^Sjf1Yo`~D8tAeHNX4tMnv$!ELu zUQx!h4X#Pb=gU5A16DRJQLE%!%ACup``9~a)bs^n(WMbjCrTM4PgvxBo+dHyqX(QSilv735V?#rPy7t{XS&dI%@Q#U^~@__=bf%r?}=Jgo2E9B6&37b4z^D_ zoo@b^ZvL2Zf*%Dx3UOj}IWJ9f%F{F(6VDbhaK>L@$*E=7uHi!zp`1y5Q*nwgK41xp zwF`hHG*wJ_AhVN7Dx-0gpt0GxPQqX--z?vS%0*Z1z#{(~ReZYUak9|kP@XcN?xkd| z)6}2xrPQdDmxsOc7>aOBFV{WpF&Wb-+9kr$wz#G=0*2o^j~ItaZWJ~!mFGBhovztl zU3-b_74b|MxxC=%v9Kc)KI>j54y?@_Zj} zkccLJGZ5j_l3VXj5 zhy+tU3QNL_;LP_Rt7GQaig3~jSfOA%5JLz7*O}4bFruR>#!A{Te=?$DmwEj96*1oh z+RCpshQeJ&!0+BQcAIvQf>%YTt8Svt4Cb1ea=E62SvX$_f1>@8va3o_Gj2I?eP}I8 z*-yke7SrZ0Nf<1f*`+B>= zuu-O@I^=BB;}S)^eXe%4q8R(PRf$u|eXhuif! zXUf;%cD)X_>vgzYuk*2d9d6g_aJycI+x0r!uGisqz3wm#K(at9FbFIFRsidOjlgzb zCvZQoA2`hCAR1#Vjk4 zi6`TcP{0?Brh}OfSH?cex-4i$eSXnr30Co?jZMTg?AbF1ClAj%;jD1O$sMz%Oqd$+ z7tEO7@3YK|CwW|3XVumRq|89V$Sxip7|gV%dydce(_U@awAqF13EhRltSKnU zC;YyaiJ_`c<7BI7-loPMWgtV+}cBP0<% zzq&(yDiZQ6Wn*jR)O)e(3mB&RF1k2>(l;G&?O_KL?O;)I^Esa8GhhX^Ofu>cB?4!c zvREz^=?ZdRs*ZLZ2SY60Pr)qE3Jd}Z0P{?hP#~c|LV<(=3Hb6rC$LzlWrBn4b8+_M zil+A0J?v_G$h3!DZ4bNJ9(J`o>}q@1)%LKf?O|8j!>+c6U2PA$+8%bbJ?v_G*wyxw z_t#^r#MT@?#!8Uy{YIs$kJI^#8oH+{*z=X{XXySb4Du@s@*D4p{j(?*%tNq7uE_WD zo*v}gjBvY0pq-dUiLs^bZiVA0+uH#y(VAnm^Jk=fPsO3p?WiO?LEP2q{m$c|aQqOB z6-!+2T(#%%-ZB5gd-swma{5J5EpQ85O2xtBPN^F38t`8e{|)eO(1pio)1yvjzvucH z7>e_xKTrDewuq{*F3N&%Tx@Hx1a4oCMKaE`SsR50TT{Z(RCM>M?M!av=t`7#Gn+vo zrOQ#=zuDPRib3F3nu|(=mwIhIM>bnim@4C$B^rJpBD^dwn8NKcUJq3A^Wwa~tP9cIee-_6)B2%*8YQ^I&yzb9HsG z7~Iow`@>H^`jshDc75xqNABpn^wZsi&u!fJxkC4+FYUbJk*B`3Ys!?bJo@y*w|AVe z`J|?%lQy3*@t#MYf9mTqW_zz*=+_{c6fvP4T7$vnRJ!4PLloPq8{zEas|<+KpCyd+(Im zASzcuPjzb5+R=4uSEZ^w!Du`ctew)^UT^&|QB#P73pEKZ?(CtBSEZ~l^1R4JyZ*5& z+U7Y8r&M9YNUL4HakscX>fYi0iu+sc=iR?^|CQ5k(rhv(ne)uk!b1mGAC5I!{VPhGWl5fQIV@>?O9$=I8Ap|T(3^%h~)|Q*K z6jV2UZqu#|F%~hle#?)+`VrI-A4kyTFdEhF`mwAP%~0A(8q(@OD=-Kw0K~}YE0P%@ zD#P`PT3Cn*xLR3&Kjs00;DbsSgqCH2R$vfV0IUGk0ULqsz)s+PU_WpWcoBF5I1Jdr zARt+w6&M5-04soXz(!y@uoJi+*bf{8UIg9%4g-#)&M{WPHhLVDJ*hhTB%Pc?C+DaU z;zeYER$vfV0Puk^*1BIbZj|iCT3aw?E#fF^5l2~zILcbYQPv`kvKDcawTPpvMI2=< z;wWnoM_G$F%38!x)*_Cw7IBodh@-4^#sVY@v;u>`0$>HO4%i562X+GY1N(u4z>B~e zz+u1v+|&U|D&OwBY<1p0v?K7TBoZ=hXwbJ6;u^Pqi(ER|i5lcdEDQSu??@=4&2l1pZky!a6W0iDI+dWEz% z$oB^M1pfp0AD|`~;C~1IJJh5^Wp%s)&!G*1{88$k|(|m#L*qC3Y&Y zbIP$&t2U3=dBmQ~aS8v55X~+aHzD^M4~Vp#_5pHzfL!a#X~vC|6@nU0O6bvk?IUWL z-{d+;`-rOLE(cTn)jmtk&vxx|zeuSsBIvS~kPoW%4Li>Li|6*ae?k3^x?gnvg7S9G z?~nrtKx4VQM%;M=2=g>i7U?PNRr3F~(&{&iChd@vDH{rSkrz5!d z`|F6Fb={)BC~edyl;0fheV=|G!aw&>W|n?fzfYwvF27^_)CzV^1-rCdn!5MtpQQ9B zDSc}>R{s;RyNSgBuzLEx$(z!ju9SaS|C26eWz;Oue@9OInCNdhEgsQF%a~zRu!7Ue z5u;e{ugop?5+ukbGOiPm{F*gB#b84*=GdcboC1#7WMfr%50SZO@D>f;qV^H+&ET8K zvBeqJee#~&eY~AMVs9{Rboa@~7`K<_fwqlOcT(z3(q*qyGuqha%&`&Ud*f%D@fp5Ly1+LL&0#68jJ!-#uUxi{`5q~Z11y|_FA z#&TlLC+6Zx?n^7!=5jeTg4fYU^h*@Z40V6enVDY)|2nfyYWgNPa&|I{-QNcPwiEw7 za4dMrtakqm{BJgHqJ?6L<`Sc9)`8bK_yq6?4n7Nf7Pv*8Wt@kNCtat>_tuaz@0sdb z{5T%h|5Gqy7hiH)KJSOf?6s)4w~^U{!-e!-HI8#uD(qyiOTqRTZ?mB##qG6AXZz4z z-sk4r>y~q`i{ElOj?e}yi79a4HbR_Dq_ch|W%os7=mW8Eiyn+%}@X}(WehmC$PCIS{hvKiVWMk-6 z?6lj75qnUd)>rDv?Y8TOl=(cdpC|T%BJ*!IH#4LPVVRuz(`mED$Ti%idqOm~K6CVXf@LE0LCGeN1>$l}m z(%vYS(@tcY^df5+aO&JAqos2r(=E2cZ23uS)=ul$pzZfFqAxCwfqrTQJIBFfw(Zw1 zlo{quQzP6SeXDHHZZEE7Jcd+j{m|7*q3zU9=(!VVC z7}-2ivEAf_dA@>gI4RqwDSl$G8C7vNO7}SGcDV%aMaEdfb@1IdZr; za=6QHZ=Zf4dDjuUj@XOKdDSyE5W9ic&8`~#6Y|zn>>b43VXqDMz2NtPON%&CxH(ej z_kc71+%o?Je-`{%C;yA!FFLLM6ZoI(y}@MvG81-wvjkpp@M+-F!s!wYAX2(B zvrF-r^+H3{}i&sB}ve zLu^2(yRiO5ecMwJiBwJnl#Hl6&PHsSv9#I?NmzRrxI3MGUxLW-7QQ4j3vpTu)8 z`>JJR5F|T}+?>%DatUQABLk}FC${FWv=AXx83AuAmg73+m;_ zWBI2FF+#SWak-R3n8vDt%KJ~H>=z~Fi?$cFUNuF8m`xdJrkX(Nfr$BZ!Ubj|HkAqk5#rE3dxaDMOU#Inp`FuE^!R-Rh;|$;~E|t8S5xS4T1DRf?5f zDa6BtTtDDUWSKK+OvxW*PI}cVwmAWeZ=G1aohdC=!!jVFp&nx|fxHNitC=FgA&S*& zw+Uu!j~dUuadVimyfHNr@6hpKW83eH0cq2`CDk!zyR#zXf&8-ziKGg@=(vaMQ(-=DX9ijg$wg5-ST`b+GrHX{d6) zU)lGGW7?^LVnJD!hh$-h%9O_U{vIe3CCmBJGO5ZxByl`W;=s7dB%iTl_wKR7qmSr! zKm5knecD-}@05T3UVa{ZN!c@N?#;J!1gznhAk5- z5XC+eI*Vz|n%|bIZtV){ZatLhtFG=NcOqF;O}1cXYaAK1d>@P*OeIRC3#c^aqp9TT zs~%_%bhbpQBW?37H%u|R%8WJKnyYT>M7usYiTYCV^m2Wc=?hu)xu_n;Dq|)Xsf*W4 z^n0dtnErfsD3pkVsw2@tOs~u9m@)Qaf+^&W1ZypK1n(Htm_`hy5>_nU7>UOs0Spz_ z1w)~Ti3oN&ju|u~9E~C9sfV*cc=|zlsV7s3y3VB4kawF_Aei#RQl`fYdSU+5Scy1X zeXpk~YnZK_TBxJ8qupa-jWLj&V4@jfiY-cC(yJpzta}2jt-3jJQAn%H*C5Y}^sN|o z&h+r@Lc+KwAIb);aL8?V{q1!ya5Q&KuBI>P$tN14X>3QDo@gXi6E9hs=?m6d>GoJS z9*z3UXgJjvsgD^3?+3xsk}pz_ZE?F2>BEBRS^vi52Bo;MCvUW5M6#9tMT)CQ5rl|hDQm5BH~g-E0(m`O5J znhbA8JXKJ`YXlOel|*t}dPhBpq0x5jJu$llsQUAjHG zk*Z+2hT+u=8Q+N(h!L2W&(iInse1$M^+@JwCjG7H9XGz-NW`ihH@;Rl;SssvXeila z5AdYwQhmugetg?&7+;uTjBkE&(37yTGP;pys$E8Ro*La?TE;LKs#3#inC|fCp92;g zykrf`-*BMV-WmzIgK0BdgBX5nU~;$L+k{fIKj_bdJpnJqJ%f29MGd#1*PA}GG%M=X zb4*~LAE{hlf*I!-8^Nqsi0P^Y5I1H9XT36a?HEn-Os=2?shZ|*E9ZAYpHohAeg{0U z0Aj5%#BrAySRnT!KEvN`!F?Fz0*{Zw8G9sK5hEwjJyDVakiYrWP{F*0zVywpf77P^ z!B{YM+1R`?essTfU~HZ?DP0o%@M1=`lYCWM2QsisF1OlHQpr?HRh~V9{lxEgHWV?g z+R_n}-KWO%no-%KQj@B4y~#kQy-Cqij5g+Ls8#J{R0`jeb)vSEmZ}eezVwAE=uk>)McQGwm#EpPPqQTL}%Lc9^E9%3@ivg`KlA-`R$S zidxxhoE}-(d5kd-#VG6U9@#c)*fwif*M^T4XL>DJ@iNZ2w2ZUbH$xHGHG7kW9*L-Z zGk}IeG?K`%uHF9fwi&ASL@~x!SIZ~I8DC$d7+2$K1T$8!y*goUo8d@)N>FW@F<%@Z z^V9@;*JOm#;cPgZkILvG=2Y1-{lRnyk@OlyR-5JwEn@rjmMLS)XDQ(IBbLpM`OeUK z%v2&~y?bnVeU+g#LeZF4Hcc5^*)zKm@%N0a-!O}8nfAzLa+uGPZ<35G!-&YfvuS=- z!)d2Kj-BJGT%tA=G|YZ9bPW0S)>dVj`z*8Gk8v>_3wlO?71WZ~+9w9H;hc%Ah0f^f zOmeSrwSiE-FQn-)KC>ZQ&cl{Nd4>oyR*Ym*86%CHmuN9NcNFVmA?;p0s(w0k%t{)n zkgDS(>_r<|*uyilY2fHEDf~wD*T&D$d`x33JcsaAkh2rO4DD=<4V!{eT=D2G_Z;up z2K#FYj--BolK%|tYHgeLDeW`bm$bdw0qqakU$nn7wF~;7=a&btbna2S>jT-PKUR1{_Su zAM8f{U^nsyyJ61lM*d(o@&~(-KiG}@!EWRab|ZhV8~KCX$RF%R{$Mxq2fL9!*zI}? zaOAs=u@YPU;20}GAZm9^REzwt~Gc3>xPKd>J-2)qcq0UQP#$**Iq1g_W$ z-tdTPbES)$?JjPnb(?A3W?HwI)@>%^W?HwI)@`PBn`zx{*a_SZ><114F9L4>hXHY`xr+C=iud?LrISyf zo^h7&eO#M)&u5cPHRu!qUHpE(S#O3jN8lmElye}b|%gWv4n zw}IaV{z>9L1^y}UhrxG(?{x6bf`8V@^IaC&>7+l4fcao~Nohmcy=s~5)Aq6$&mqq_ zLOw0GUAq82!uKJ#t|spLGAp%CWwQ`24K`er5Oeqx@dZh6Kp zN%?mtWkmaHrTpINTfslr1XO-K07-cTgiMI>I>dPGUhpRHCI_DY4hMn_WS>4& z>;Rldhs6$-_A$&}X&-a>%XYA|n0tSHjz%pPha3!z}_%!fk;2XeG zz)ykKfxiK4E7pHoiEjhe!nTt84nW^9!mP5pJffZB42#UApKBjv7)F>&Wo(m!?bEKI z>DSX~hE;>9q210<3w{qcu1#bhw9hl6c2!;qgQ-2DX5V*hE~*$I(jcL#@F_wWj^D{F zbjrvqwDXQ=e{(SVDM!hDl&5@h+{6+KGfp6Tv23 z^1U5rZ{UArZa}%LPveVbBFp+7Gsg>4J!FIgYKw%j#6IeQCSM$cw%O)Eo6jOt_X! zI=o9q-j4L5HR7au`v)8>F|JGksujd5{s=<<2q0lWcZSv@L`d3Ht1~*tjX}(#KmC(< z3v^38K!|PvcEbSs|!UvliRC1!{N@Fw#gio z>toSse<+m?k-lP&{Qqvt4>_CrmOW+ZSylIsCQ22u^L5jy|-ufWwm-! zBTBaDv)2_piM*(-m+r1<>J+W@lxVHjiq<;B3@>ClTW|awt#ywc=KQI&))DPRkr=B-Y}!tyLdPx7Jat(VGriXC}jD>M;xLHi5B|;z)@=hVmk(9L_

~D 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 literal 0 HcmV?d00001 diff --git a/webroot/img/cake-logo.png b/webroot/img/cake-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..41939ef5a58226b6ef04a34ac89f9f5759ba2779 GIT binary patch literal 2683 zcmeH|`!^GeAIFEua+`%@F15K#xyI9whPBPy+vZZDthrPO8@c9E!uG7NBF{Yjjqf?n=bX>yeLg?FU*~r31=P6;(C$gNI;n4NWa=#Ni{ldin-NM~zMXI)*egKW=dXWoc!N#$a(a zcw0LMMi?;a4Lfqhn&P#l&AgqKp2514c{e*JH!uHQLE-%eMGqf6E-5W5uc)kgT3y3__WVU%{mWMk zjZMuht!?dZIyl_7o$ucNuZ!2+^P#W*WI@^v%6fcyHc=4^f zG@ds+TL_I0cr(yC5OydjJ9u*vM$-X1MmvZq-Ws|>ysm7Q;TgMs>jhI8z;X9Io75%=GLc;&>3Zz1D`Gd!Zzsqh)Pu-XL#7)! zB2=Tr}T-Jb#aM4UPG61 zD=sD6Ue^SE(k9D+4$5ox#TN7*S)sGkAaMdXe9OxcJFd}xE-Q0;y_9xI;Fn*{wRyZc zaB$JLdXJs8-a`q6f1K4Dj=3T^nZ6>`nw5Ur<~OCQo`iTcz9tX92*?FdUj8~rfpN>X zt|rY*t!^trEvG{Jkt6p#FVZuMEWYUIG|*tqnz(nBRZDqp#o8}hwr*vq(UAS>ePuxD zz#@w!?XQuMtswaHIT@ydF}$SlMix!LmX{2~3Z5X+Zly=lQ;R~B%Th;9p(@OM&d&aT z4DwHIoL%XiH49cm7t`1zm>SETYmajKBF&2UX!d5Tli4Q+?&1pGc`X(Bt10#QScSKO z;}5R1qU?ag^en4$*4LzTcL*)PX82-&i(z~7dy6h*aNNA=qP`lq;_SQH-dA*w4|R~S zH)M;=z*tfQN-rP*HkEV6{32$o={8FgPmexx^y4hCq!4bL%T?tqZ%3|$RSIFj(1{H!E43AJ`Yy);5Tw;bdT1qLjYspN-GA7+40B%Vyj)FM&KKr zev5bHxLUH?k2#Kp-)pP~YE>&=AM8V7X%f6iG}2L49#VecA_Im@FY&?z<-Ljh#P+lo zjA2#9gmduh3`ya!vQp%KP%RLI;^4L9OENL=G)ghz%Cjowd6y>FXW6yZAy z9_wO+V&7$}fYa^yVizweM$p^Z1N4$rFNg&Tv%6VFDpSfQqT71z@ssYHF+9%^OAGeo zaq7gKCvHpj3NyDrw{xjSPpQcKar^A$zA-U!Ak7NqH^OB|^~y0@EMxXNm336ED>!we ze)euO;SBv=+DIzUphQ#bna`|Tq^qarZAh0xQgY^%@tw#nAd>B%9af*8I{dJtxdu&P zF1MFKO!+YWbk2+}0$!m$ei;4@U1sVyqYB0kjk-aFk-6ewnx-3MeUJI@L?i1pE(`rr zJVAdd*;01@_sc;&iHN)CQ#RcTD&M`l%^}3t_>jHy+G`0txstsv6XH{gG-U(p`9`7r zg`lU)IffHaQhOm!p4NA}c;Xf|co~_lf^XPjW=b=`jvmVQ%Uf+a%aKLC9h;7|%)4IW zk)#Tgv0h6KZ#T{ePMaD$k#+qCyq`ALLdep@B060}B&t+n4?jul7&b9?jUv)*yRkv) zb}|hsL7{9bEep7QdTX?41^%?$oKnMAq&yAm{Cv^D#`a#d!4IR!2Ze~QjllQ>?HRFG z<3@@GFV{{~InAesJo9;N=9sZqPi8M>UN1^Z!~hQ%_018fPQ>+ma|q0G2{tv49q)cr7> zIGsQFGn3| zCzs2iP$-yfVPOGVTU&6sT(-5fwHb2tVsLP9#{Vr9Ct?R7q(rf?v2A5#W$OI=e1YUJ zQ1YRnA&iWSQ1XYAm__>aYb6XIhMiYVD+-z8_pYi6+CsH{*^m;vOjqvbr=H&DFkeqxHQBh$Scsoy0Glw(T zsaSG*ok62V;~yXYNgP*DUw;o98^+0@vGFb{HC+As}XJ=;xg=B7N_;-mKbHH{|lXs_o+aPcs5~J?s%^P2Odb)Uz z$GvY6^!N9(C2-h?28B$qx7%_yHnt2eU%nQ0qThbl6a_+b)EirjBgQ`g1_07Fr&6R? RzIgxu002ovPDHLkV1mdlwUYn< literal 0 HcmV?d00001 diff --git a/webroot/img/cake.logo.svg b/webroot/img/cake.logo.svg new file mode 100644 index 0000000..e73abb5 --- /dev/null +++ b/webroot/img/cake.logo.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/webroot/img/cake.power.gif b/webroot/img/cake.power.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f8d570a2e24d86f0ad7730ee8f2435fd49f152c GIT binary patch literal 201 zcmV;)05<&ZTq0L2I(c1A@d@rg`ENj#vn zcl`yi#iKX*jb2F7vd0WQgUq5Tw}Jp}g+ZnCeBY3dYNI+m71%bHRfx4UCkD2th(Q*@ zmd5r+MJNYn7emit($server->run()); diff --git a/public/js/LoginRadiusLoginScreen.1.0.0.js b/webroot/js/LoginRadiusLoginScreen.1.0.0.js similarity index 99% rename from public/js/LoginRadiusLoginScreen.1.0.0.js rename to webroot/js/LoginRadiusLoginScreen.1.0.0.js index 30b5bde..a7c1d58 100644 --- a/public/js/LoginRadiusLoginScreen.1.0.0.js +++ b/webroot/js/LoginRadiusLoginScreen.1.0.0.js @@ -1532,8 +1532,7 @@ 'loginradiuscustom_tmpl1'); var sl_options = {}; sl_options.onSuccess = function(response) { - if(response.access_token){ - + if(response.access_token){ getProfile(response.access_token, response.Profile.Uid); } cb(response, "socialLogin"); diff --git a/public/js/account.js b/webroot/js/account.js similarity index 91% rename from public/js/account.js rename to webroot/js/account.js index 60d0248..5dd5e97 100644 --- a/public/js/account.js +++ b/webroot/js/account.js @@ -1,25 +1,22 @@ var stringVariable = window.location.href; -var currentToken = $('meta[name="csrf-token"]').attr('content'); domainName = stringVariable.substring(0, stringVariable.lastIndexOf('/')); $(function () { getProfileByUid(); handleUpdateAccount(); }); -function getProfileByUid(getProfileByUid) { - +function getProfileByUid() { var uid = localStorage.getItem("LRUserID"); $.ajax({ + url: "profile", type: 'POST', - url: "/profile", dataType: "json", data: $.param({ uid: uid, action: "getProfileByUid", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (response) { - if (response.status == "success") { if (typeof (response.data.FirstName) != "undefined" && response.data.FirstName !== null) { $("#user-updateaccount-firstname").val(response.data.FirstName); @@ -45,7 +42,7 @@ function handleUpdateAccount() { $("#lr-loading").show(); $.ajax({ type: "POST", - url: "/profile", + url: "profile", dataType: "json", data: $.param({ token: localStorage.getItem("LRTokenKey"), @@ -53,10 +50,9 @@ function handleUpdateAccount() { lastname: $("#user-updateaccount-lastname").val(), about: $("#user-updateaccount-about").val(), action: "updateAccount", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { - $("#lr-loading").hide(); if (res.status == 'error') { $("#user-updateaccount-errorMsg").text(res.message); diff --git a/public/js/accountlinking.js b/webroot/js/accountlinking.js similarity index 100% rename from public/js/accountlinking.js rename to webroot/js/accountlinking.js diff --git a/public/js/emailverification.js b/webroot/js/emailverification.js similarity index 91% rename from public/js/emailverification.js rename to webroot/js/emailverification.js index 6af0309..8aed573 100644 --- a/public/js/emailverification.js +++ b/webroot/js/emailverification.js @@ -1,5 +1,4 @@ var stringVariable = window.location.href; -var currentToken = $('meta[name="csrf-token"]').attr('content'); domainName = stringVariable.substring(0, stringVariable.lastIndexOf('/')); $(function() { if (getUrlParameter("vtype") == "oneclicksignin") { @@ -7,18 +6,16 @@ $(function() { $("#emailverification-message").text(""); $.ajax({ type: "POST", - url: '/minimal', + url: "login", data: $.param({ token: getUrlParameter("vtoken"), - action: "pwLessLinkVerify", - _token: currentToken + action: "pwLessLinkVerify", + _csrfToken: $('[name="_csrfToken"]').val() }), dataType: "json", success: function(res) { - console.log(res); $("#lr-loading").hide(); if (res.status == 'success') { - getProfile(res.data.access_token, res.data.Profile.Uid); } else if(res.status == 'error'){ @@ -37,13 +34,13 @@ $(function() { $("#lr-loading").show(); $("#emailverification-message").text(""); $.ajax({ - url: '/minimal', + url:"login", type: 'POST', dataType: "json", data: $.param({ vtoken: getUrlParameter("vtoken"), action: "emailVerify", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function(res) { $("#lr-loading").hide(); diff --git a/webroot/js/empty b/webroot/js/empty new file mode 100644 index 0000000..e69de29 diff --git a/public/js/index.js b/webroot/js/index.js similarity index 92% rename from public/js/index.js rename to webroot/js/index.js index f587662..fe2c907 100644 --- a/public/js/index.js +++ b/webroot/js/index.js @@ -1,14 +1,10 @@ var stringVariable = window.location.href; -var currentToken = $('meta[name="csrf-token"]').attr('content'); domainName = stringVariable.substring(0, stringVariable.lastIndexOf('/')); $(function () { var accesstoken = localStorage.getItem("LRTokenKey"); var lruid= localStorage.getItem("LRUserID"); - - if (accesstoken != "" && accesstoken != null && lruid != "" && lruid != null) { - - window.location.href = "/profile"; + window.location.href = "profileview"; } handleLogin(); handleMFALogin(); @@ -19,7 +15,6 @@ $(function () { var vtype = getUrlParameter("vtype"); if (vtype == 'reset') { - jQuery('.lrforgotpassword').hide(); jQuery('.lrrestpassword').show(); } @@ -31,36 +26,33 @@ $(function () { function getProfile(access_token, profile_uid) { localStorage.setItem('LRTokenKey', access_token); localStorage.setItem('LRUserID', profile_uid); - - $.ajax({ - type: 'POST', - url: '/profile', - + $.ajax({ + type: "POST", + url: "profile", dataType: "json", data: $.param({ token: access_token, action: "getProfile", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (response) { + if (response.status == "success") { localStorage.setItem('EmailId', response.data.Email[0].Value); if (typeof (response.data.FullName) != "undefined" && response.data.FullName !== null) { localStorage.setItem('UserName', response.data.FullName); } localStorage.setItem('ImageUrl', response.data.ImageUrl); - localStorage.setItem('LastLoginTime', response.data.LastLoginDate); - - window.location.href = "/profile"; + localStorage.setItem('LastLoginTime', response.data.LastLoginDate); + window.location.href = "profileview"; } else { - $("#minimal-login-errorMsg").text(response.message); + $("#minimal-login-errorMsg").text(response.message); } } }); } function handleLogin() { - $('#btn-minimal-login').on('click', function () { $("#minimal-login-errorMsg").text(""); if ($('#minimal-login-email').val().trim() == '') { @@ -71,24 +63,25 @@ function handleLogin() { return; } $("#lr-loading").show(); - $.ajax({ + $.ajax({ type: "POST", - url: "/minimal", + url: "login", dataType: "json", - data:$.param({ + data: $.param({ email: $("#minimal-login-email").val(), password: $("#minimal-login-password").val(), action: "loginByEmail", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val(), }), success: function (response) { - - console.log(response); $("#lr-loading").hide(); - if (response.status == 'error') { + + if (response.status == 'error') { + $("#minimal-login-errorMsg").text(response.message); } else if (response.status == 'success') { + console.log(response); $("#minimal-login-email").val(""); $("#minimal-login-password").val(""); getProfile(response.data.access_token, response.data.Profile.Uid); @@ -114,12 +107,13 @@ function handlePwLessLogin() { $("#lr-loading").show(); $.ajax({ type: "POST", - url: '/minimal', + url: "login", data: $.param({ email: $("#minimal-pwless-email").val(), - verificationurl: domainName+"/minimal", + verificationurl: domainName, action: "pwLessLogin", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() + }), dataType: "json", success: function (response) { @@ -153,12 +147,13 @@ function handleMFALogin() { $("#lr-loading").show(); $.ajax({ type: "POST", - url:'/minimal', + url: "login", data: $.param({ email: $("#minimal-mfalogin-email").val(), password: $("#minimal-mfalogin-password").val(), action: "mfaLogin", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() + }), dataType: "json", success: function (res) { @@ -207,12 +202,13 @@ function validateGoogleCode(token) { $("#lr-loading").show(); $.ajax({ type: "POST", - url: '/minimal', + url: "login", data: $.param({ secondFactorAuthenticationToken: token, googleAuthCode: $("#minimal-mfalogin-googlecode").val(), action: "mfaValidate", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() + }), dataType: "json", success: function (res) { @@ -251,18 +247,16 @@ function handleSignup() { $("#lr-loading").show(); $.ajax({ type: "POST", - url: "/signup", + url: "registration", dataType: "json", data: $.param({ email: $("#minimal-signup-email").val(), password: $("#minimal-signup-password").val(), verificationurl: domainName, action: "registration", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { - console.log(res); - $("#lr-loading").hide(); if (res.status == 'registered') { $("#minimal-signup-successMsg").text(res.message); @@ -297,14 +291,13 @@ function handleForgotPassword() { $("#lr-loading").show(); $.ajax({ type: "POST", - url: '/profile', - + url:"forgotpassword", dataType: "json", data: $.param({ email: $("#minimal-forgotpassword-email").val(), resetPasswordUrl: domainName + "/forgot", action: "forgotPassword", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (response) { $("#lr-loading").hide(); @@ -341,16 +334,15 @@ function handleResetPassword() { $("#lr-loading").show(); $.ajax({ type: "POST", - url: '/profile', + url: "resetpassword", dataType: "json", data: $.param({ resettoken: getUrlParameter("vtoken"), password: $("#minimal-resetpassword-password").val(), action: "resetPassword", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (response) { - $("#lr-loading").hide(); if (response.status == 'success') { $("#minimal-resetpassword-password").val(""); diff --git a/public/js/jquery.min.js b/webroot/js/jquery.min.js similarity index 100% rename from public/js/jquery.min.js rename to webroot/js/jquery.min.js diff --git a/public/js/logout.js b/webroot/js/logout.js similarity index 95% rename from public/js/logout.js rename to webroot/js/logout.js index 798997c..91fc1c7 100644 --- a/public/js/logout.js +++ b/webroot/js/logout.js @@ -17,7 +17,7 @@ $(function () { jQuery('.useruid').text(lruseruid); jQuery('.lastlogin').text(lastlogintime); } else { - window.location.href = domainName + "/login"; + window.location.href ="minimal"; } }); diff --git a/public/js/options.js b/webroot/js/options.js similarity index 88% rename from public/js/options.js rename to webroot/js/options.js index 16458e5..7b4cbbc 100644 --- a/public/js/options.js +++ b/webroot/js/options.js @@ -7,5 +7,5 @@ commonOptions.hashTemplate = true; commonOptions.sott = ""; commonOptions.formValidationMessage = true; commonOptions.verificationUrl = domainName+""; -commonOptions.resetPasswordUrl = domainName+""; +commonOptions.resetPasswordUrl =domainName+"/forgot"; var LRObject = new LoginRadiusV2(commonOptions); \ No newline at end of file diff --git a/public/js/profile.js b/webroot/js/profile.js similarity index 94% rename from public/js/profile.js rename to webroot/js/profile.js index 6a284ff..457606e 100644 --- a/public/js/profile.js +++ b/webroot/js/profile.js @@ -1,5 +1,4 @@ var stringVariable = window.location.href; -var currentToken = $('meta[name="csrf-token"]').attr('content'); domainName = stringVariable.substring(0, stringVariable.lastIndexOf('/')); $(function () { handleSetPassword(); @@ -32,13 +31,13 @@ function handleSetPassword() { $("#lr-loading").show(); $.ajax({ type: "POST", - url:'/profile', + url: "profile", dataType: "json", data: $.param({ uid: localStorage.getItem("LRUserID"), newpassword: $("#user-setpassword-password").val(), action: "setPassword", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { $("#lr-loading").hide(); @@ -72,14 +71,14 @@ function handleChangePassword() { $("#lr-loading").show(); $.ajax({ type: "POST", - url:'/profile', + url: "profile", dataType: "json", data: $.param({ token: localStorage.getItem("LRTokenKey"), oldpassword: $("#user-changepassword-oldpassword").val(), newpassword: $("#user-changepassword-newpassword").val(), action: "changePassword", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { $("#lr-loading").hide(); @@ -118,14 +117,14 @@ function createCustomObjects() { $("#lr-loading").show(); $.ajax({ type: "POST", - url: '/profile', + url: "profile", dataType: "json", data: $.param({ token: localStorage.getItem("LRTokenKey"), objectName: $("#user-createcustomobj-objectname").val(), payload: input, action: "createCustomObjects", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { $("#lr-loading").hide(); @@ -156,13 +155,13 @@ function getCustomObjects() { $("#lr-loading").show(); $.ajax({ type: "POST", - url: '/profile', + url: "profile", dataType: "json", data: $.param({ token: localStorage.getItem("LRTokenKey"), objectName: $("#user-getcustomobj-objectname").val(), action: "getCustomObjects", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { $("#lr-loading").hide(); @@ -212,7 +211,7 @@ function updateCustomObjects() { $("#lr-loading").show(); $.ajax({ type: "POST", - url: '/profile', + url: "profile", dataType: "json", data: $.param({ token: localStorage.getItem("LRTokenKey"), @@ -220,7 +219,7 @@ function updateCustomObjects() { objectRecordId: $("#user-updatecustomobj-objectrecordid").val(), payload: input, action: "updateCustomObjects", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { @@ -257,14 +256,14 @@ function deleteCustomObjects() { $("#lr-loading").show(); $.ajax({ type: "POST", - url:'/profile', + url: "profile", dataType: "json", data: $.param({ token: localStorage.getItem("LRTokenKey"), objectName: $("#user-deletecustomobj-objectname").val(), objectRecordId: $("#user-deletecustomobj-objectrecordid").val(), action: "deleteCustomObjects", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { $("#lr-loading").hide(); @@ -291,12 +290,12 @@ function resetMultifactor() { $("#lr-loading").show(); $.ajax({ type: "POST", - url:'/profile', + url: "profile", dataType: "json", data: $.param({ uid: localStorage.getItem("LRUserID"), action: "resetMultifactor", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { $("#lr-loading").hide(); @@ -330,12 +329,12 @@ function handleCreateRole() { $("#lr-loading").show(); $.ajax({ type: "POST", - url: '/profile', + url: "profile", dataType: "json", data: $.param({ roles: $("#user-roles-createrole").val(), action: "handleCreateRole", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { $("#lr-loading").hide(); @@ -366,12 +365,12 @@ function handleDeleteRole() { $("#lr-loading").show(); $.ajax({ type: "POST", - url: '/profile', + url: "profile", dataType: "json", data: $.param({ roles: $("#user-roles-deleterole").val(), action: "handleDeleteRole", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { $("#lr-loading").hide(); @@ -409,13 +408,13 @@ function handleAssignUserRole() { $("#lr-loading").show(); $.ajax({ type: "POST", - url:'/profile', + url: "profile", dataType: "json", data: $.param({ uid: localStorage.getItem("LRUserID"), roles: $("#user-roles-assignrole").val(), action: "handleAssignUserRole", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { $("#lr-loading").hide(); @@ -438,11 +437,11 @@ function handleAssignUserRole() { function getAllRoles() { $.ajax({ type: "POST", - url:'/profile', + url: "profile", dataType: "json", data: $.param({ action: "getAllRoles", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), success: function (res) { if (res.status == 'error') { @@ -470,11 +469,11 @@ function getAllRoles() { function getUserRoles() { $.ajax({ type: "POST", - url: '/profile', + url: "profile", data: $.param({ uid: localStorage.getItem("LRUserID"), action: "getUserRoles", - _token: currentToken + _csrfToken: $('[name="_csrfToken"]').val() }), dataType: "json", success: function (res) { diff --git a/public/js/sociallogin.js b/webroot/js/sociallogin.js similarity index 100% rename from public/js/sociallogin.js rename to webroot/js/sociallogin.js From ba95f0ca9969b7aeebdf33966283a9c17335f614 Mon Sep 17 00:00:00 2001 From: Sudhanshu Agarwal Date: Fri, 15 Feb 2019 14:58:09 +0530 Subject: [PATCH 3/4] Updated CakePHP Demo --- README.md | 5 ----- demo-php-framework (1).zip | Bin 592014 -> 0 bytes 2 files changed, 5 deletions(-) delete mode 100644 demo-php-framework (1).zip diff --git a/README.md b/README.md index 5ee0219..acf3a88 100755 --- a/README.md +++ b/README.md @@ -44,11 +44,6 @@ It presumes you have basic knowledge of PHP. ``` -6. Run following command in your command-line interface. -``` - copy config\app.default.php config\app.php -``` - 6. Go to your web browser and type in the root directory URL that your server is hosting. ## Features Implemented in the Demo diff --git a/demo-php-framework (1).zip b/demo-php-framework (1).zip deleted file mode 100644 index 4a7390778268d466b8d35ead2022038a18aff53c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592014 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ℜ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

UUQpW<%EE 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

#=?)^mb!R( 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Ȥ$?#o9!J40mkHt~a9F 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 z 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%0DR;#~a(aK#Qh7Na^7XoqzIDPTWa0KR88S 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≈!d-O2b#3>`Z~Q9DHTQG^ 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

(!cW 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 From 9c6252c95390b7d36db00e368e2d8d2964aaadb3 Mon Sep 17 00:00:00 2001 From: INDRASEN Date: Thu, 23 Jun 2022 17:47:19 +0530 Subject: [PATCH 4/4] Release Version 11.4.0 --- CHANGELOG.md | 9 + README.md | 4 +- composer.json | 8 +- composer.lock | 2765 ++++++++++++++------ src/Controller/AppController.php | 7 +- src/Controller/HomeController.php | 399 +-- src/Controller/ProfileController.php | 631 +++-- src/Template/Layout/profilelayout.ctp | 5 +- webroot/js/LoginRadiusLoginScreen.1.0.0.js | 2 +- webroot/js/empty | 0 webroot/js/options.js | 2 +- 11 files changed, 2543 insertions(+), 1289 deletions(-) create mode 100644 CHANGELOG.md delete mode 100644 webroot/js/empty diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1b2a4f6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,9 @@ +## Enhancements + +- Updated the demo with the latest PHP SDK11.4.0 version. + +### Added new parameters in the following API + +- GetProfileByAccessToken +- MFAValidateGoogleAuthCode +- MFALoginByEmail \ No newline at end of file diff --git a/README.md b/README.md index acf3a88..7843f5e 100755 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ It presumes you have basic knowledge of PHP. 4. Configure your LoginRadius Credentials in \ "\src\Controller\AppController.php\" ``` - define('API_KEY', ''); // Pass API Key - define('API_SECRET', ''); // Pass API Secret Key + define('LR_API_KEY', ''); // Pass API Key + define('LR_API_SECRET', ''); // Pass API Secret Key define('API_REQUEST_SIGNING', false); // Pass boolean true/false for enable/disable define('AUTH_FLOW', ''); ``` diff --git a/composer.json b/composer.json index 3303dc0..d93c7f8 100755 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ "cakephp/cakephp": "3.7.4", "cakephp/migrations": "^2.0.0", "cakephp/plugin-installer": "^1.0", - "loginradius/php-sdk": "^5.0.2", + "loginradius/php-sdk": "11.4.0", "mobiledetect/mobiledetectlib": "2.*" }, "require-dev": { @@ -38,7 +38,6 @@ "scripts": { "post-install-cmd": "App\\Console\\Installer::postInstall", "post-create-project-cmd": "App\\Console\\Installer::postInstall", - "post-autoload-dump": "Cake\\Composer\\Installer\\PluginInstaller::postAutoloadDump", "check": [ "@test", "@cs-check" @@ -49,6 +48,9 @@ }, "prefer-stable": true, "config": { - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "cakephp/plugin-installer": true + } } } diff --git a/composer.lock b/composer.lock index c71fcc4..5a8aae6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,24 +4,27 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "439fdd9f5c66fdc3a96575c125b791df", + "content-hash": "1d8f681e246f4274001eb93e3e356240", "packages": [ { "name": "aura/intl", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/auraphp/Aura.Intl.git", - "reference": "7fce228980b19bf4dee2d7bbd6202a69b0dde926" + "reference": "642cab45c9c88a217f89b65c2d7219a8cd7f803b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/auraphp/Aura.Intl/zipball/7fce228980b19bf4dee2d7bbd6202a69b0dde926", - "reference": "7fce228980b19bf4dee2d7bbd6202a69b0dde926", + "url": "https://api.github.com/repos/auraphp/Aura.Intl/zipball/642cab45c9c88a217f89b65c2d7219a8cd7f803b", + "reference": "642cab45c9c88a217f89b65c2d7219a8cd7f803b", "shasum": "" }, "require": { - "php": "^5.6|^7.0" + "php": "^5.6 || ^7.0 || ^8.0" + }, + "require-dev": { + "yoast/phpunit-polyfills": "~1.0" }, "type": "library", "autoload": { @@ -50,7 +53,11 @@ "l10n", "localization" ], - "time": "2017-01-20T05:00:11+00:00" + "support": { + "issues": "https://github.com/auraphp/Aura.Intl/issues", + "source": "https://github.com/auraphp/Aura.Intl/tree/3.0.1" + }, + "time": "2022-01-28T10:55:50+00:00" }, { "name": "cakephp/cakephp", @@ -106,15 +113,15 @@ }, "type": "library", "autoload": { - "psr-4": { - "Cake\\": "src/" - }, "files": [ "src/Core/functions.php", "src/Collection/functions.php", "src/I18n/functions.php", "src/Utility/bootstrap.php" - ] + ], + "psr-4": { + "Cake\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -139,40 +146,45 @@ "rapid-development", "validation" ], + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/cakephp/issues", + "source": "https://github.com/cakephp/cakephp" + }, "time": "2019-02-09T20:30:00+00:00" }, { "name": "cakephp/chronos", - "version": "1.2.4", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/cakephp/chronos.git", - "reference": "ebda7326d4a65e53bc5bb915ebbbeee98f1926b0" + "reference": "ba2bab98849e7bf29b02dd634ada49ab36472959" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/chronos/zipball/ebda7326d4a65e53bc5bb915ebbbeee98f1926b0", - "reference": "ebda7326d4a65e53bc5bb915ebbbeee98f1926b0", + "url": "https://api.github.com/repos/cakephp/chronos/zipball/ba2bab98849e7bf29b02dd634ada49ab36472959", + "reference": "ba2bab98849e7bf29b02dd634ada49ab36472959", "shasum": "" }, "require": { - "php": "^5.5.9|^7" + "php": ">=5.6" }, "require-dev": { "athletic/athletic": "~0.1", "cakephp/cakephp-codesniffer": "^3.0", "phpbench/phpbench": "@dev", - "phpstan/phpstan": "^0.6.4", "phpunit/phpunit": "<6.0 || ^7.0" }, "type": "library", "autoload": { - "psr-4": { - "Cake\\Chronos\\": "src/" - }, "files": [ "src/carbon_compat.php" - ] + ], + "psr-4": { + "Cake\\Chronos\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -196,27 +208,32 @@ "datetime", "time" ], - "time": "2019-02-11T02:08:31+00:00" + "support": { + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/chronos/issues", + "source": "https://github.com/cakephp/chronos" + }, + "time": "2019-11-30T02:33:19+00:00" }, { "name": "cakephp/migrations", - "version": "2.1.0", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/cakephp/migrations.git", - "reference": "b5148180a59b991dac3a74c3058dd5891dfc8961" + "reference": "7fa4f1f8a4cd90df59cd8e3a46958c822abe457e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/migrations/zipball/b5148180a59b991dac3a74c3058dd5891dfc8961", - "reference": "b5148180a59b991dac3a74c3058dd5891dfc8961", + "url": "https://api.github.com/repos/cakephp/migrations/zipball/7fa4f1f8a4cd90df59cd8e3a46958c822abe457e", + "reference": "7fa4f1f8a4cd90df59cd8e3a46958c822abe457e", "shasum": "" }, "require": { "cakephp/cache": "^3.6.0", "cakephp/orm": "^3.6.0", "php": ">=5.6.0", - "robmorgan/phinx": "~0.10.3" + "robmorgan/phinx": "^0.10.3|^0.11.1" }, "require-dev": { "cakephp/bake": "^1.7.0", @@ -225,12 +242,12 @@ "phpunit/phpunit": "^5.7.14|^6.0" }, "suggest": { - "cakephp/bake": "Required if you want to generate migrations." + "cakephp/bake": "If you want to generate migrations." }, "type": "cakephp-plugin", "autoload": { "psr-4": { - "Migrations\\": "src" + "Migrations\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -243,40 +260,50 @@ "homepage": "https://github.com/cakephp/migrations/graphs/contributors" } ], - "description": "Database Migration plugin for CakePHP 3.0 based on Phinx", + "description": "Database Migration plugin for CakePHP based on Phinx", "homepage": "https://github.com/cakephp/migrations", "keywords": [ "cakephp", "migrations" ], - "time": "2018-12-25T19:49:39+00:00" + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/migrations/issues", + "source": "https://github.com/cakephp/migrations" + }, + "time": "2020-02-05T15:00:43+00:00" }, { "name": "cakephp/plugin-installer", - "version": "1.1.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/cakephp/plugin-installer.git", - "reference": "41373d0678490502f45adc7be88aa22d24ac1843" + "reference": "e27027aa2d3d8ab64452c6817629558685a064cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/plugin-installer/zipball/41373d0678490502f45adc7be88aa22d24ac1843", - "reference": "41373d0678490502f45adc7be88aa22d24ac1843", + "url": "https://api.github.com/repos/cakephp/plugin-installer/zipball/e27027aa2d3d8ab64452c6817629558685a064cb", + "reference": "e27027aa2d3d8ab64452c6817629558685a064cb", "shasum": "" }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.6.0" + }, "require-dev": { - "cakephp/cakephp-codesniffer": "dev-master", - "composer/composer": "1.0.*@dev", - "phpunit/phpunit": "^4.8|^5.7|^6.0" + "cakephp/cakephp-codesniffer": "^3.3", + "composer/composer": "^2.0", + "phpunit/phpunit": "^5.7 || ^6.5 || ^8.5 || ^9.3" }, - "type": "composer-installer", + "type": "composer-plugin", "extra": { - "class": "Cake\\Composer\\Installer\\PluginInstaller" + "class": "Cake\\Composer\\Plugin" }, "autoload": { "psr-4": { - "Cake\\Composer\\": "src" + "Cake\\Composer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -286,24 +313,28 @@ "authors": [ { "name": "CakePHP Community", - "homepage": "http://cakephp.org" + "homepage": "https://cakephp.org" } ], "description": "A composer installer for CakePHP 3.0+ plugins.", - "time": "2017-12-24T21:09:29+00:00" + "support": { + "issues": "https://github.com/cakephp/plugin-installer/issues", + "source": "https://github.com/cakephp/plugin-installer/tree/1.3.1" + }, + "time": "2020-10-29T04:00:42+00:00" }, { "name": "loginradius/php-sdk", - "version": "5.0.2", + "version": "11.4.0", "source": { "type": "git", "url": "https://github.com/LoginRadius/php-sdk.git", - "reference": "1c92982a8d41e070ba35093083ffd1c35f0492ac" + "reference": "70d9dd45ad2dba89a5d5d00912e83e38dfb023be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LoginRadius/php-sdk/zipball/1c92982a8d41e070ba35093083ffd1c35f0492ac", - "reference": "1c92982a8d41e070ba35093083ffd1c35f0492ac", + "url": "https://api.github.com/repos/LoginRadius/php-sdk/zipball/70d9dd45ad2dba89a5d5d00912e83e38dfb023be", + "reference": "70d9dd45ad2dba89a5d5d00912e83e38dfb023be", "shasum": "" }, "require": { @@ -325,25 +356,29 @@ "email": "developers@loginradius.com" } ], - "description": "LoginRadius PHP SDK v5.0.2", + "description": "LoginRadius PHP SDK v11.4.0", "keywords": [ "loginradius", "phpsdk" ], - "time": "2019-01-11T08:29:15+00:00" + "support": { + "issues": "https://github.com/LoginRadius/php-sdk/issues", + "source": "https://github.com/LoginRadius/php-sdk/tree/11.4.0" + }, + "time": "2022-06-01T11:56:33+00:00" }, { "name": "mobiledetect/mobiledetectlib", - "version": "2.8.33", + "version": "2.8.39", "source": { "type": "git", "url": "https://github.com/serbanghita/Mobile-Detect.git", - "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102" + "reference": "0fd6753003fc870f6e229bae869cc1337c99bc45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/cd385290f9a0d609d2eddd165a1e44ec1bf12102", - "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102", + "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/0fd6753003fc870f6e229bae869cc1337c99bc45", + "reference": "0fd6753003fc870f6e229bae869cc1337c99bc45", "shasum": "" }, "require": { @@ -354,12 +389,12 @@ }, "type": "library", "autoload": { - "classmap": [ - "Mobile_Detect.php" - ], "psr-0": { "Detection": "namespaced/" - } + }, + "classmap": [ + "Mobile_Detect.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -382,7 +417,59 @@ "mobile detector", "php mobile detect" ], - "time": "2018-09-01T15:05:15+00:00" + "support": { + "issues": "https://github.com/serbanghita/Mobile-Detect/issues", + "source": "https://github.com/serbanghita/Mobile-Detect/tree/2.8.39" + }, + "time": "2022-02-17T19:24:25+00:00" + }, + { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/http-message", @@ -432,20 +519,23 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, "time": "2016-08-06T14:39:51+00:00" }, { "name": "psr/log", - "version": "1.1.0", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { @@ -454,7 +544,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -469,7 +559,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -479,7 +569,10 @@ "psr", "psr-3" ], - "time": "2018-11-20T15:27:04+00:00" + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" }, { "name": "psr/simple-cache", @@ -527,35 +620,43 @@ "psr-16", "simple-cache" ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, "time": "2017-10-23T01:57:42+00:00" }, { "name": "robmorgan/phinx", - "version": "0.10.6", + "version": "0.11.7", "source": { "type": "git", "url": "https://github.com/cakephp/phinx.git", - "reference": "f28a1c6ab1fa1f0295cddade9aea05eeb303bd2b" + "reference": "3cdde73e0c33c410e076108b3e1603fabb5b330d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/phinx/zipball/f28a1c6ab1fa1f0295cddade9aea05eeb303bd2b", - "reference": "f28a1c6ab1fa1f0295cddade9aea05eeb303bd2b", + "url": "https://api.github.com/repos/cakephp/phinx/zipball/3cdde73e0c33c410e076108b3e1603fabb5b330d", + "reference": "3cdde73e0c33c410e076108b3e1603fabb5b330d", "shasum": "" }, "require": { - "cakephp/collection": "^3.6", - "cakephp/database": "^3.6", + "cakephp/collection": "^3.7", + "cakephp/database": "^3.7", "php": ">=5.6", - "symfony/config": "^2.8|^3.0|^4.0", - "symfony/console": "^2.8|^3.0|^4.0", - "symfony/yaml": "^2.8|^3.0|^4.0" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "require-dev": { "cakephp/cakephp-codesniffer": "^3.0", - "phpunit/phpunit": ">=5.7", + "ext-json": "*", + "phpunit/phpunit": ">=5.7,<8.0", "sebastian/comparator": ">=1.2.3" }, + "suggest": { + "ext-json": "Install if using JSON configuration format", + "symfony/yaml": "Install if using YAML configuration format" + }, "bin": [ "bin/phinx" ], @@ -570,18 +671,18 @@ "MIT" ], "authors": [ - { - "name": "Woody Gilk", - "email": "woody.gilk@gmail.com", - "homepage": "http://shadowhand.me", - "role": "Developer" - }, { "name": "Rob Morgan", "email": "robbym@gmail.com", "homepage": "https://robmorgan.id.au", "role": "Lead Developer" }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com", + "homepage": "https://shadowhand.me", + "role": "Developer" + }, { "name": "Richard Quadling", "email": "rquadling@gmail.com", @@ -589,7 +690,8 @@ }, { "name": "CakePHP Community", - "homepage": "https://github.com/cakephp/phinx/graphs/contributors" + "homepage": "https://github.com/cakephp/phinx/graphs/contributors", + "role": "Developer" } ], "description": "Phinx makes it ridiculously easy to manage the database migrations for your PHP app.", @@ -601,45 +703,48 @@ "migrations", "phinx" ], - "time": "2018-08-12T17:22:43+00:00" + "support": { + "issues": "https://github.com/cakephp/phinx/issues", + "source": "https://github.com/cakephp/phinx/tree/0.11.7" + }, + "time": "2020-05-09T13:59:05+00:00" }, { "name": "symfony/config", - "version": "v4.2.3", + "version": "v5.4.9", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "25a2e7abe0d97e70282537292e3df45cf6da7b98" + "reference": "8f551fe22672ac7ab2c95fe46d899f960ed4d979" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/25a2e7abe0d97e70282537292e3df45cf6da7b98", - "reference": "25a2e7abe0d97e70282537292e3df45cf6da7b98", + "url": "https://api.github.com/repos/symfony/config/zipball/8f551fe22672ac7ab2c95fe46d899f960ed4d979", + "reference": "8f551fe22672ac7ab2c95fe46d899f960ed4d979", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/filesystem": "~3.4|~4.0", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" }, "conflict": { - "symfony/finder": "<3.4" + "symfony/finder": "<4.4" }, "require-dev": { - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Config\\": "" @@ -662,43 +767,69 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Config Component", + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", - "time": "2019-01-30T11:44:30+00:00" + "support": { + "source": "https://github.com/symfony/config/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-17T10:39:36+00:00" }, { "name": "symfony/console", - "version": "v4.2.3", + "version": "v5.4.9", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4" + "reference": "829d5d1bf60b2efeb0887b7436873becc71a45eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4", - "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4", + "url": "https://api.github.com/repos/symfony/console/zipball/829d5d1bf60b2efeb0887b7436873becc71a45eb", + "reference": "829d5d1bf60b2efeb0887b7436873becc71a45eb", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/contracts": "^1.0", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -707,11 +838,6 @@ "symfony/process": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Console\\": "" @@ -734,50 +860,63 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", - "time": "2019-01-25T14:35:16+00:00" + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-18T06:17:34+00:00" }, { - "name": "symfony/contracts", - "version": "v1.0.2", + "name": "symfony/deprecation-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { - "php": "^7.1.3" - }, - "require-dev": { - "psr/cache": "^1.0", - "psr/container": "^1.0" - }, - "suggest": { - "psr/cache": "When using the Cache contracts", - "psr/container": "When using the Service contracts", - "symfony/cache-contracts-implementation": "", - "symfony/service-contracts-implementation": "", - "symfony/translation-contracts-implementation": "" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "psr-4": { - "Symfony\\Contracts\\": "" - }, - "exclude-from-classmap": [ - "**/Tests/" + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -794,42 +933,48 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A set of abstractions extracted out of the Symfony components", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } ], - "time": "2018-12-05T08:06:11+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/filesystem", - "version": "v4.2.3", + "version": "v5.4.9", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7c16ebc2629827d4ec915a52ac809768d060a4ee" + "reference": "36a017fa4cce1eff1b8e8129ff53513abcef05ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7c16ebc2629827d4ec915a52ac809768d060a4ee", - "reference": "7c16ebc2629827d4ec915a52ac809768d060a4ee", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/36a017fa4cce1eff1b8e8129ff53513abcef05ba", + "reference": "36a017fa4cce1eff1b8e8129ff53513abcef05ba", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Filesystem\\": "" @@ -852,26 +997,46 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Filesystem Component", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", - "time": "2019-01-16T20:35:37+00:00" + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-20T13:55:35+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.10.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" }, "suggest": { "ext-ctype": "For best performance" @@ -879,29 +1044,33 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, { "name": "Gert de Pagter", "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for ctype functions", @@ -912,40 +1081,145 @@ "polyfill", "portable" ], - "time": "2018-08-06T14:22:27+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.26.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "433d05519ce6990bf3530fba6957499d327395c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", + "reference": "433d05519ce6990bf3530fba6957499d327395c2", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "suggest": { - "ext-mbstring": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -962,50 +1236,560 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", + "intl", + "normalizer", "polyfill", "portable", "shim" ], - "time": "2018-09-21T13:07:52+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-10T07:21:04+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "v5.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "985e6a9703ef5ce32ba617c9c7d97873bb7b2a99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/985e6a9703ef5ce32ba617c9c7d97873bb7b2a99", + "reference": "985e6a9703ef5ce32ba617c9c7d97873bb7b2a99", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" }, { "name": "symfony/yaml", - "version": "v4.2.3", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0" + "reference": "e80f87d2c9495966768310fc531b487ce64237a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d461670ee145092b7e2a56c1da7118f19cadadb0", - "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2", + "reference": "e80f87d2c9495966768310fc531b487ce64237a2", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "~3.4|~4.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -1028,22 +1812,39 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", + "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", - "time": "2019-01-16T20:35:37+00:00" + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-26T16:32:32+00:00" }, { "name": "zendframework/zend-diactoros", - "version": "1.8.6", + "version": "1.8.7", "source": { "type": "git", "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "20da13beba0dde8fb648be3cc19765732790f46e" + "reference": "a85e67b86e9b8520d07e6415fcbcb8391b44a75b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", - "reference": "20da13beba0dde8fb648be3cc19765732790f46e", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/a85e67b86e9b8520d07e6415fcbcb8391b44a75b", + "reference": "a85e67b86e9b8520d07e6415fcbcb8391b44a75b", "shasum": "" }, "require": { @@ -1063,9 +1864,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev", - "dev-develop": "1.9.x-dev", - "dev-release-2.0": "2.0.x-dev" + "dev-release-1.8": "1.8.x-dev" } }, "autoload": { @@ -1094,32 +1893,38 @@ "psr", "psr-7" ], - "time": "2018-09-05T19:29:37+00:00" + "support": { + "issues": "https://github.com/zendframework/zend-diactoros/issues", + "source": "https://github.com/zendframework/zend-diactoros" + }, + "abandoned": "laminas/laminas-diactoros", + "time": "2019-08-06T17:53:53+00:00" } ], "packages-dev": [ { "name": "ajgl/breakpoint-twig-extension", - "version": "0.3.2", + "version": "0.3.5", "source": { "type": "git", "url": "https://github.com/ajgarlag/AjglBreakpointTwigExtension.git", - "reference": "bb419d13775d8fb5cd03b31012eaf496b31b444f" + "reference": "9875feea0ac4bc3c9f308c62bae4727669d6052a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ajgarlag/AjglBreakpointTwigExtension/zipball/bb419d13775d8fb5cd03b31012eaf496b31b444f", - "reference": "bb419d13775d8fb5cd03b31012eaf496b31b444f", + "url": "https://api.github.com/repos/ajgarlag/AjglBreakpointTwigExtension/zipball/9875feea0ac4bc3c9f308c62bae4727669d6052a", + "reference": "9875feea0ac4bc3c9f308c62bae4727669d6052a", "shasum": "" }, "require": { "php": ">=5.6", - "twig/twig": "^1.14|^2.0" + "twig/twig": "^1.34|^2.0|^3.0" }, "require-dev": { - "symfony/framework-bundle": "^2.7|^3.2|^4.1", - "symfony/phpunit-bridge": "^3.4|^4.1", - "symfony/twig-bundle": "^2.7|^3.2|^4.1" + "friendsofphp/php-cs-fixer": "^2.18", + "symfony/framework-bundle": "^2.7|^3.4|^4.4|^5.2", + "symfony/phpunit-bridge": "^4.4|^5.2", + "symfony/twig-bundle": "^2.7|^3.4|^4.4|^5.2" }, "suggest": { "ext-xdebug": "The Xdebug extension is required for the breakpoint to work", @@ -1156,7 +1961,11 @@ "breakpoint", "twig" ], - "time": "2018-12-10T08:22:36+00:00" + "support": { + "issues": "https://github.com/ajgarlag/AjglBreakpointTwigExtension/issues", + "source": "https://github.com/ajgarlag/AjglBreakpointTwigExtension/tree/0.3.5" + }, + "time": "2021-02-08T10:48:05+00:00" }, { "name": "aptoma/twig-markdown", @@ -1213,20 +2022,24 @@ "markdown", "twig" ], + "support": { + "issues": "https://github.com/aptoma/twig-markdown/issues", + "source": "https://github.com/aptoma/twig-markdown/tree/master" + }, "time": "2015-10-23T20:27:08+00:00" }, { "name": "asm89/twig-cache-extension", - "version": "1.3.2", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/asm89/twig-cache-extension.git", - "reference": "630ea7abdc3fc62ba6786c02590a1560e449cf55" + "reference": "13787226956ec766f4770722082288097aebaaf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/asm89/twig-cache-extension/zipball/630ea7abdc3fc62ba6786c02590a1560e449cf55", - "reference": "630ea7abdc3fc62ba6786c02590a1560e449cf55", + "url": "https://api.github.com/repos/asm89/twig-cache-extension/zipball/13787226956ec766f4770722082288097aebaaf3", + "reference": "13787226956ec766f4770722082288097aebaaf3", "shasum": "" }, "require": { @@ -1234,7 +2047,8 @@ "twig/twig": "^1.0|^2.0" }, "require-dev": { - "doctrine/cache": "~1.0" + "doctrine/cache": "~1.0", + "phpunit/phpunit": "^5.0 || ^4.8.10" }, "suggest": { "psr/cache-implementation": "To make use of PSR-6 cache implementation via PsrCacheAdapter." @@ -1242,7 +2056,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -1267,24 +2081,29 @@ "extension", "twig" ], - "time": "2017-01-10T22:04:15+00:00" + "support": { + "issues": "https://github.com/asm89/twig-cache-extension/issues", + "source": "https://github.com/asm89/twig-cache-extension/tree/1.4.0" + }, + "abandoned": "twig/cache-extension", + "time": "2020-01-01T20:47:37+00:00" }, { "name": "cakephp/bake", - "version": "1.9.2", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/cakephp/bake.git", - "reference": "9949a6a867a17cf30996dfc9daceab1c63a7a9c1" + "reference": "b1fa1d2d4f3a6b74c69ab24c90c880dcc1f8751c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/bake/zipball/9949a6a867a17cf30996dfc9daceab1c63a7a9c1", - "reference": "9949a6a867a17cf30996dfc9daceab1c63a7a9c1", + "url": "https://api.github.com/repos/cakephp/bake/zipball/b1fa1d2d4f3a6b74c69ab24c90c880dcc1f8751c", + "reference": "b1fa1d2d4f3a6b74c69ab24c90c880dcc1f8751c", "shasum": "" }, "require": { - "cakephp/cakephp": "^3.7.0", + "cakephp/cakephp": "~3.7.0", "cakephp/plugin-installer": "^1.0", "php": ">=5.6.0", "wyrihaximus/twig-view": "^4.3.7" @@ -1315,20 +2134,26 @@ "bake", "cakephp" ], - "time": "2019-01-02T12:59:40+00:00" + "support": { + "forum": "http://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/bake/issues", + "source": "https://github.com/cakephp/bake" + }, + "time": "2019-07-01T21:34:33+00:00" }, { "name": "cakephp/cakephp-codesniffer", - "version": "3.1.1", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/cakephp/cakephp-codesniffer.git", - "reference": "682e79fda294c4383e094a2a881e16dcf1130750" + "reference": "7998a191e787fd5b68cb635d7050cb0d7b55e1a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/cakephp-codesniffer/zipball/682e79fda294c4383e094a2a881e16dcf1130750", - "reference": "682e79fda294c4383e094a2a881e16dcf1130750", + "url": "https://api.github.com/repos/cakephp/cakephp-codesniffer/zipball/7998a191e787fd5b68cb635d7050cb0d7b55e1a1", + "reference": "7998a191e787fd5b68cb635d7050cb0d7b55e1a1", "shasum": "" }, "require": { @@ -1341,7 +2166,7 @@ "type": "phpcodesniffer-standard", "autoload": { "psr-4": { - "CakePHP\\": "CakePHP" + "CakePHP\\": "CakePHP/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1355,37 +2180,44 @@ } ], "description": "CakePHP CodeSniffer Standards", - "homepage": "http://cakephp.org", + "homepage": "https://cakephp.org", "keywords": [ "codesniffer", "framework" ], - "time": "2018-11-30T16:04:05+00:00" + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/cakephp-codesniffer/issues", + "source": "https://github.com/cakephp/cakephp-codesniffer" + }, + "time": "2019-12-07T03:02:34+00:00" }, { "name": "cakephp/debug_kit", - "version": "3.17.0", + "version": "3.23.0", "source": { "type": "git", "url": "https://github.com/cakephp/debug_kit.git", - "reference": "6a9023ecc4ac0983c184cedf8e6142ab8ea4a3ff" + "reference": "49506b55d0b7becf4803e895b07a8cd8599ab1e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/debug_kit/zipball/6a9023ecc4ac0983c184cedf8e6142ab8ea4a3ff", - "reference": "6a9023ecc4ac0983c184cedf8e6142ab8ea4a3ff", + "url": "https://api.github.com/repos/cakephp/debug_kit/zipball/49506b55d0b7becf4803e895b07a8cd8599ab1e4", + "reference": "49506b55d0b7becf4803e895b07a8cd8599ab1e4", "shasum": "" }, "require": { "cakephp/cakephp": "^3.7.0", "cakephp/chronos": "^1.0.0", - "cakephp/plugin-installer": "^1.0.0", - "composer/composer": "^1.3.0", + "composer/composer": "^1.3 | ^2.0", "jdorn/sql-formatter": "^1.2.0", "php": ">=5.6.0" }, "require-dev": { + "cakephp/authorization": "^1.3.2", "cakephp/cakephp-codesniffer": "^3.0", + "cakephp/plugin-installer": "^1.3", "phpunit/phpunit": "^5.7.14|^6.0" }, "suggest": { @@ -1394,8 +2226,8 @@ "type": "cakephp-plugin", "autoload": { "psr-4": { - "DebugKit\\": "src", - "DebugKit\\Test\\Fixture\\": "tests\\Fixture" + "DebugKit\\": "src/", + "DebugKit\\Test\\Fixture\\": "tests/Fixture/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1405,7 +2237,7 @@ "authors": [ { "name": "Mark Story", - "homepage": "http://mark-story.com", + "homepage": "https://mark-story.com", "role": "Author" }, { @@ -1420,36 +2252,43 @@ "debug", "kit" ], - "time": "2018-12-02T03:27:26+00:00" + "support": { + "forum": "http://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/debug_kit/issues", + "source": "https://github.com/cakephp/debug_kit" + }, + "time": "2021-05-16T04:58:57+00:00" }, { "name": "composer/ca-bundle", - "version": "1.1.4", + "version": "1.3.2", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d" + "reference": "fd5dd441932a7e10ca6e5b490e272d34c8430640" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d", - "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/fd5dd441932a7e10ca6e5b490e272d34c8430640", + "reference": "fd5dd441932a7e10ca6e5b490e272d34c8430640", "shasum": "" }, "require": { "ext-openssl": "*", "ext-pcre": "*", - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "phpstan/phpstan": "^0.12.55", "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0" + "symfony/phpunit-bridge": "^4.2 || ^5", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -1476,43 +2315,68 @@ "ssl", "tls" ], - "time": "2019-01-28T09:30:10+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:56:16+00:00" }, { "name": "composer/composer", - "version": "1.8.4", + "version": "2.3.7", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "bc364c2480c17941e2135cfc568fa41794392534" + "reference": "10cd375cf85dede2ff417ceab517ef9a0dc55407" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/bc364c2480c17941e2135cfc568fa41794392534", - "reference": "bc364c2480c17941e2135cfc568fa41794392534", + "url": "https://api.github.com/repos/composer/composer/zipball/10cd375cf85dede2ff417ceab517ef9a0dc55407", + "reference": "10cd375cf85dede2ff417ceab517ef9a0dc55407", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", + "composer/metadata-minifier": "^1.0", + "composer/pcre": "^2 || ^3", + "composer/semver": "^3.0", "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0", + "composer/xdebug-handler": "^2.0.2 || ^3.0.3", + "justinrainbow/json-schema": "^5.2.11", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "react/promise": "^2.8", "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0" - }, - "conflict": { - "symfony/console": "2.8.38" + "seld/phar-utils": "^1.2", + "symfony/console": "^5.4.7 || ^6.0.7", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/polyfill-php73": "^1.24", + "symfony/polyfill-php80": "^1.24", + "symfony/process": "^5.4 || ^6.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1", + "phpstan/phpstan-symfony": "^1.1", + "symfony/phpunit-bridge": "^6.0" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -1525,7 +2389,12 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-main": "2.3-dev" + }, + "phpstan": { + "includes": [ + "phpstan/rules.neon" + ] } }, "autoload": { @@ -1541,48 +2410,207 @@ { "name": "Nils Adermann", "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" + "homepage": "https://www.naderman.de" }, { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", "homepage": "https://getcomposer.org/", "keywords": [ "autoload", "dependency", "package" ], - "time": "2019-02-11T09:52:10+00:00" + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/composer/issues", + "source": "https://github.com/composer/composer/tree/2.3.7" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-06-06T14:43:28+00:00" + }, + { + "name": "composer/metadata-minifier", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/metadata-minifier.git", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "composer/composer": "^2", + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\MetadataMinifier\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Small utility library that handles metadata minification and expansion.", + "keywords": [ + "composer", + "compression" + ], + "support": { + "issues": "https://github.com/composer/metadata-minifier/issues", + "source": "https://github.com/composer/metadata-minifier/tree/1.0.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2021-04-07T13:37:33+00:00" + }, + { + "name": "composer/pcre", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.0.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-02-25T20:21:48+00:00" }, { "name": "composer/semver", - "version": "1.4.2", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -1618,33 +2646,52 @@ "validation", "versioning" ], - "time": "2016-08-30T16:08:34+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-04-01T19:23:25+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.0", + "version": "1.5.7", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2" + "reference": "c848241796da2abf65837d51dce1fae55a960149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7a9556b22bd9d4df7cad89876b00af58ef20d3a2", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", + "reference": "c848241796da2abf65837d51dce1fae55a960149", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -1679,28 +2726,50 @@ "spdx", "validator" ], - "time": "2018-11-01T09:45:54+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/spdx-licenses/issues", + "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-05-23T07:37:50+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.3.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "d17708133b6c276d6e42ef887a877866b909d892" + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", - "reference": "d17708133b6c276d6e42ef887a877866b909d892", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" }, "type": "library", "autoload": { @@ -1718,76 +2787,60 @@ "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Restarts a process without xdebug.", + "description": "Restarts a process without Xdebug.", "keywords": [ "Xdebug", "performance" ], - "time": "2019-01-28T20:25:53+00:00" - }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "0.1", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", - "shasum": "" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "@stable" - }, - "type": "project", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" ], - "description": "implementation of xdg base directory specification for php", - "time": "2014-10-24T07:27:01+00:00" + "time": "2022-02-25T21:32:43+00:00" }, { "name": "doctrine/instantiator", - "version": "1.1.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" @@ -1801,104 +2854,34 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "homepage": "https://ocramius.github.io/" } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2017-07-22T11:58:36+00:00" - }, - { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ + "funding": [ { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "time": "2018-09-29T17:23:10+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" } ], - "description": "Highlight PHP code in terminal", - "time": "2018-09-29T18:48:56+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "jasny/twig-extensions", @@ -1958,6 +2941,10 @@ "text", "time" ], + "support": { + "issues": "https://github.com/jasny/twig-extensions/issues", + "source": "https://github.com/jasny/twig-extensions" + }, "time": "2017-09-13T07:38:01+00:00" }, { @@ -2008,6 +2995,10 @@ "highlight", "sql" ], + "support": { + "issues": "https://github.com/jdorn/sql-formatter/issues", + "source": "https://github.com/jdorn/sql-formatter/tree/master" + }, "time": "2014-01-12T16:20:24+00:00" }, { @@ -2061,27 +3052,31 @@ "dotenv", "php" ], + "support": { + "issues": "https://github.com/josegonzalez/php-dotenv/issues", + "source": "https://github.com/josegonzalez/php-dotenv/tree/master" + }, "time": "2017-09-19T15:49:58+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.8", + "version": "5.2.12", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4" + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/dcb6e1006bb5fd1e392b4daa68932880f37550d4", - "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20", + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", "json-schema/json-schema-test-suite": "1.2.0", "phpunit/phpunit": "^4.8.35" }, @@ -2127,20 +3122,24 @@ "json", "schema" ], - "time": "2019-01-14T23:55:14+00:00" + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + }, + "time": "2022-04-13T08:02:27+00:00" }, { "name": "m1/env", - "version": "2.1.2", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/m1/Env.git", - "reference": "294addeedf15e1149eeb96ec829f2029d2017d39" + "reference": "5c296e3e13450a207e12b343f3af1d7ab569f6f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/m1/Env/zipball/294addeedf15e1149eeb96ec829f2029d2017d39", - "reference": "294addeedf15e1149eeb96ec829f2029d2017d39", + "url": "https://api.github.com/repos/m1/Env/zipball/5c296e3e13450a207e12b343f3af1d7ab569f6f3", + "reference": "5c296e3e13450a207e12b343f3af1d7ab569f6f3", "shasum": "" }, "require": { @@ -2185,41 +3184,46 @@ "parser", "support" ], - "time": "2018-06-19T18:55:08+00:00" + "support": { + "issues": "https://github.com/m1/Env/issues", + "source": "https://github.com/m1/Env/tree/2.2.0" + }, + "time": "2020-02-19T09:02:13+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.8.1", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2233,20 +3237,30 @@ "object", "object graph" ], - "time": "2018-06-11T23:09:50+00:00" + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nikic/php-parser", - "version": "v4.2.0", + "version": "v4.14.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "594bcae1fc0bccd3993d2f0d61a018e26ac2865a" + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/594bcae1fc0bccd3993d2f0d61a018e26ac2865a", - "reference": "594bcae1fc0bccd3993d2f0d61a018e26ac2865a", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", "shasum": "" }, "require": { @@ -2254,7 +3268,8 @@ "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^6.5 || ^7.0" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2262,7 +3277,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.9-dev" } }, "autoload": { @@ -2284,7 +3299,11 @@ "parser", "php" ], - "time": "2019-01-12T16:31:37+00:00" + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + }, + "time": "2022-05-31T20:59:12+00:00" }, { "name": "phar-io/manifest", @@ -2339,6 +3358,10 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/master" + }, "time": "2017-03-05T18:14:27+00:00" }, { @@ -2386,39 +3409,38 @@ } ], "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/master" + }, "time": "2017-03-05T17:38:23+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2440,44 +3462,46 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2488,44 +3512,50 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "reference": "77a32518733312af16a44300404e945338981de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2538,42 +3568,47 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, + "time": "2022-03-15T21:29:03+00:00" }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "v1.10.3", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", + "phpspec/phpspec": "^2.5 || ^3.2", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" + "dev-master": "1.10.x-dev" } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -2601,7 +3636,11 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.10.3" + }, + "time": "2020-03-05T15:02:03+00:00" }, { "name": "phpunit/php-code-coverage", @@ -2664,6 +3703,10 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/5.3" + }, "time": "2018-04-06T15:36:58+00:00" }, { @@ -2711,6 +3754,11 @@ "filesystem", "iterator" ], + "support": { + "irc": "irc://irc.freenode.net/phpunit", + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5" + }, "time": "2017-11-27T13:52:08+00:00" }, { @@ -2752,6 +3800,10 @@ "keywords": [ "template" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + }, "time": "2015-06-21T13:50:34+00:00" }, { @@ -2801,6 +3853,10 @@ "keywords": [ "timer" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/master" + }, "time": "2017-02-26T11:10:40+00:00" }, { @@ -2850,6 +3906,11 @@ "keywords": [ "tokenizer" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" + }, + "abandoned": true, "time": "2017-11-27T05:48:46+00:00" }, { @@ -2934,6 +3995,10 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/6.5.14" + }, "time": "2019-02-01T05:22:47+00:00" }, { @@ -2993,43 +4058,46 @@ "mock", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues", + "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/5.0.10" + }, + "abandoned": true, "time": "2018-08-09T05:50:03+00:00" }, { "name": "psy/psysh", - "version": "v0.9.9", + "version": "v0.11.5", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e" + "reference": "c23686f9c48ca202710dbb967df8385a952a2daf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", - "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/c23686f9c48ca202710dbb967df8385a952a2daf", + "reference": "c23686f9c48ca202710dbb967df8385a952a2daf", "shasum": "" }, "require": { - "dnoegel/php-xdg-base-dir": "0.1", "ext-json": "*", "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0" + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" + "bamarni/composer-bin-plugin": "^1.2" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." }, "bin": [ "bin/psysh" @@ -3037,7 +4105,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.9.x-dev" + "dev-main": "0.11.x-dev" } }, "autoload": { @@ -3067,27 +4135,107 @@ "interactive", "shell" ], - "time": "2018-10-13T15:16:03+00:00" + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.11.5" + }, + "time": "2022-05-27T18:03:49+00:00" + }, + { + "name": "react/promise", + "version": "v2.9.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/234f8fd1023c9158e2314fa9d7d0e6a83db42910", + "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v2.9.0" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-02-11T10:27:51+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -3112,7 +4260,17 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:15:22+00:00" }, { "name": "sebastian/comparator", @@ -3176,6 +4334,10 @@ "compare", "equality" ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/master" + }, "time": "2018-02-01T13:46:46+00:00" }, { @@ -3228,6 +4390,10 @@ "keywords": [ "diff" ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/master" + }, "time": "2017-08-03T08:09:46+00:00" }, { @@ -3278,29 +4444,33 @@ "environment", "hhvm" ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/master" + }, "time": "2017-07-01T08:51:00+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.0", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0c32ea2e40dbf59de29f3b49bf375176ce7dd8db", + "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db", "shasum": "" }, "require": { - "php": "^7.0", + "php": ">=7.0", "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -3318,6 +4488,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -3326,17 +4500,13 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -3345,7 +4515,17 @@ "export", "exporter" ], - "time": "2017-04-03T13:19:02+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-11-11T13:51:24+00:00" }, { "name": "sebastian/global-state", @@ -3396,24 +4576,28 @@ "keywords": [ "global state" ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" + }, "time": "2017-04-27T15:39:26+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", "shasum": "" }, "require": { - "php": "^7.0", + "php": ">=7.0", "sebastian/object-reflector": "^1.1.1", "sebastian/recursion-context": "^3.0" }, @@ -3443,24 +4627,34 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:40:27+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.0" }, "require-dev": { "phpunit/phpunit": "^6.0" @@ -3488,24 +4682,34 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:37:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.0" }, "require-dev": { "phpunit/phpunit": "^6.0" @@ -3526,14 +4730,14 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, { "name": "Adam Harvey", "email": "aharvey@php.net" @@ -3541,7 +4745,17 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:34:24+00:00" }, { "name": "sebastian/resource-operations", @@ -3583,6 +4797,10 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/master" + }, "time": "2015-07-28T20:34:47+00:00" }, { @@ -3626,27 +4844,32 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/master" + }, "time": "2016-10-03T07:35:21+00:00" }, { "name": "seld/jsonlint", - "version": "1.7.1", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38" + "reference": "4211420d25eba80712bff236a98960ef68b866b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38", - "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/4211420d25eba80712bff236a98960ef68b866b7", + "reference": "4211420d25eba80712bff236a98960ef68b866b7", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0" + "php": "^5.3 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" }, "bin": [ "bin/jsonlint" @@ -3675,20 +4898,34 @@ "parser", "validator" ], - "time": "2018-01-24T12:46:19+00:00" + "support": { + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.9.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2022-04-01T13:37:23+00:00" }, { "name": "seld/phar-utils", - "version": "1.0.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" + "reference": "9f3452c93ff423469c0d56450431562ca423dcee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/9f3452c93ff423469c0d56450431562ca423dcee", + "reference": "9f3452c93ff423469c0d56450431562ca423dcee", "shasum": "" }, "require": { @@ -3717,22 +4954,26 @@ ], "description": "PHAR file format utilities, for when PHP phars you up", "keywords": [ - "phra" + "phar" ], - "time": "2015-10-13T18:44:15+00:00" + "support": { + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/1.2.0" + }, + "time": "2021-12-10T11:20:11+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.4.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "379deb987e26c7cd103a7b387aea178baec96e48" + "reference": "a2cd51b45bcaef9c1f2a4bda48f2dd2fa2b95563" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48", - "reference": "379deb987e26c7cd103a7b387aea178baec96e48", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/a2cd51b45bcaef9c1f2a4bda48f2dd2fa2b95563", + "reference": "a2cd51b45bcaef9c1f2a4bda48f2dd2fa2b95563", "shasum": "" }, "require": { @@ -3765,36 +5006,38 @@ } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", "standards" ], - "time": "2018-12-19T23:57:18+00:00" + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2022-06-13T06:31:38+00:00" }, { "name": "symfony/finder", - "version": "v4.2.3", + "version": "v5.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ef71816cbb264988bb57fe6a73f610888b9aa70c" + "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ef71816cbb264988bb57fe6a73f610888b9aa70c", - "reference": "ef71816cbb264988bb57fe6a73f610888b9aa70c", + "url": "https://api.github.com/repos/symfony/finder/zipball/9b630f3427f3ebe7cd346c277a1408b00249dad9", + "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Finder\\": "" @@ -3817,88 +5060,46 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", - "time": "2019-01-16T20:35:37+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } + "support": { + "source": "https://github.com/symfony/finder/tree/v5.4.8" }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "url": "https://github.com/fabpot", + "type": "github" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2022-04-15T08:07:45+00:00" }, { "name": "symfony/process", - "version": "v4.2.3", + "version": "v5.4.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad" + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/6c05edb11fbeff9e2b324b4270ecb17911a8b7ad", - "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Process\\": "" @@ -3921,38 +5122,56 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", - "time": "2019-01-24T22:05:03+00:00" + "support": { + "source": "https://github.com/symfony/process/tree/v5.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.2.3", + "version": "v5.4.9", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "223bda89f9be41cf7033eeaf11bc61a280489c17" + "reference": "af52239a330fafd192c773795520dc2dd62b5657" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/223bda89f9be41cf7033eeaf11bc61a280489c17", - "reference": "223bda89f9be41cf7033eeaf11bc61a280489c17", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/af52239a330fafd192c773795520dc2dd62b5657", + "reference": "af52239a330fafd192c773795520dc2dd62b5657", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5" + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "twig/twig": "~1.34|~2.4" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", @@ -3963,11 +5182,6 @@ "Resources/bin/var-dump-server" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { "files": [ "Resources/functions/dump.php" @@ -3993,33 +5207,50 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony mechanism for exploring and dumping PHP variables", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", "keywords": [ "debug", "dump" ], - "time": "2019-01-30T11:44:30+00:00" + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-21T10:24:18+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -4039,35 +5270,44 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" }, { "name": "twig/twig", - "version": "v1.37.1", + "version": "v1.44.6", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "66be9366c76cbf23e82e7171d47cbfa54a057a62" + "reference": "ae39480f010ef88adc7938503c9b02d3baf2f3b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/66be9366c76cbf23e82e7171d47cbfa54a057a62", - "reference": "66be9366c76cbf23e82e7171d47cbfa54a057a62", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/ae39480f010ef88adc7938503c9b02d3baf2f3b3", + "reference": "ae39480f010ef88adc7938503c9b02d3baf2f3b3", "shasum": "" }, "require": { - "php": ">=5.4.0", + "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "psr/container": "^1.0", - "symfony/debug": "^2.7", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + "symfony/phpunit-bridge": "^4.4.9|^5.0.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.37-dev" + "dev-master": "1.44-dev" } }, "autoload": { @@ -4089,15 +5329,14 @@ "homepage": "http://fabien.potencier.org", "role": "Lead Developer" }, + { + "name": "Twig Team", + "role": "Contributors" + }, { "name": "Armin Ronacher", "email": "armin.ronacher@active-4.com", "role": "Project Founder" - }, - { - "name": "Twig Team", - "homepage": "https://twig.symfony.com/contributors", - "role": "Contributors" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", @@ -4105,7 +5344,21 @@ "keywords": [ "templating" ], - "time": "2019-01-14T14:59:29+00:00" + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v1.44.6" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-11-25T13:31:46+00:00" }, { "name": "umpirsky/twig-php-function", @@ -4146,34 +5399,41 @@ } ], "description": "Call (almost) any PHP function from your Twig templates.", + "support": { + "issues": "https://github.com/umpirsky/twig-php-function/issues", + "source": "https://github.com/umpirsky/twig-php-function/tree/master" + }, "time": "2016-03-12T16:36:32+00:00" }, { "name": "webmozart/assert", - "version": "1.4.0", + "version": "1.11.0", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^8.5.13" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.10-dev" } }, "autoload": { @@ -4197,27 +5457,31 @@ "check", "validate" ], - "time": "2018-12-25T11:19:39+00:00" + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" }, { "name": "wyrihaximus/twig-view", - "version": "4.3.8", + "version": "4.4.0", "source": { "type": "git", - "url": "https://github.com/WyriHaximus/TwigView.git", - "reference": "a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45" + "url": "https://github.com/cakephp/legacy-twig-view.git", + "reference": "463e1a6ed493d4fe99eaeaaf39d80172b51fc0fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/TwigView/zipball/a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45", - "reference": "a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45", + "url": "https://api.github.com/repos/cakephp/legacy-twig-view/zipball/463e1a6ed493d4fe99eaeaaf39d80172b51fc0fb", + "reference": "463e1a6ed493d4fe99eaeaaf39d80172b51fc0fb", "shasum": "" }, "require": { "ajgl/breakpoint-twig-extension": "^0.3.0", "aptoma/twig-markdown": "^2.0", "asm89/twig-cache-extension": "^1.0", - "cakephp/cakephp": "^3.6", + "cakephp/cakephp": "^3.7", "jasny/twig-extensions": "^1.0", "php": "^5.6 || ^7.0", "twig/twig": "^1.27", @@ -4226,9 +5490,9 @@ "require-dev": { "cakephp/bake": "^1.5", "cakephp/debug_kit": "^3.0", - "phake/phake": "^1.0.4", + "phake/phake": "^2.3.2", "phpunit/phpunit": "^5.7.14", - "squizlabs/php_codesniffer": "^1.5.6", + "squizlabs/php_codesniffer": "^3.4.0", "wyrihaximus/phpunit-class-reflection-helpers": "dev-master" }, "type": "cakephp-plugin", @@ -4255,7 +5519,11 @@ "twig", "view" ], - "time": "2018-12-17T21:08:25+00:00" + "support": { + "issues": "https://github.com/cakephp/legacy-twig-view/issues", + "source": "https://github.com/cakephp/legacy-twig-view/tree/4.4.0" + }, + "time": "2021-04-06T15:42:50+00:00" } ], "aliases": [], @@ -4268,5 +5536,6 @@ "platform": { "php": ">=5.6" }, - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "2.3.0" } diff --git a/src/Controller/AppController.php b/src/Controller/AppController.php index db1fcbb..25bdb9f 100644 --- a/src/Controller/AppController.php +++ b/src/Controller/AppController.php @@ -42,11 +42,12 @@ public function initialize() parent::initialize(); // INSERT API KEY AND SECRET - define('API_KEY', ''); // Pass API Key - define('API_SECRET', ''); // Pass API Secret Key + define('LR_API_KEY', ''); // Pass API Key + define('LR_API_SECRET', ''); // Pass API Secret Key define('API_REQUEST_SIGNING', ''); // Pass boolean true/false for enable/disable define('AUTH_FLOW', ''); // Pass optional/disabled, if email verification flow optional or disabled, no need to mention if required flow - + + $this->loadComponent('RequestHandler', [ 'enableBeforeRedirect' => false, ]); diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index 3a7f631..dfbd4bf 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -1,159 +1,168 @@ viewBuilder()->setLayout('minimallayout'); - - } - public function minimal(){} - public function loginScreen(){} - public function registrationView(){} - public function forgotPasswordView(){} + { + parent::initialize(); + $this->viewBuilder()->setLayout('minimallayout'); + } + public function minimal() + { + } + public function loginScreen() + { + } + public function registrationView() + { + } + public function forgotPasswordView() + { + } /** * manage all login action */ - public function login() { - $this->autoRender=false; - $action=$this->request->data('action'); - if(method_exists($this,$action)) - { + public function login() + { + $this->autoRender = false; + $action = $this->request->getdata('action'); + if (method_exists($this, $action)) { $this->$action(); - } -} + } /** - * function for login by email - */ -public function loginByEmail() -{ + * function for login by email + */ + public function loginByEmail() + { $this->autoRender = false; - $email = $this->request->data('email'); - $password = $this->request->data('password'); + $email = $this->request->getdata('email'); + $password = $this->request->getdata('password'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($email)) { $response['message'] = 'The Email Id field is required.'; - } - else if (empty($password)) { + } else if (empty($password)) { $response['message'] = 'The Password field is required.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $payload = array('email' => $email, 'password' => $password); - $result = $authenticationObj->authLoginByEmail($payload); - if (isset($result->access_token) && $result->access_token != '') { - $response['data'] = $result; - $response['message'] = "Logged in successfully"; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; + } else { + $authenticationAPI = new AuthenticationAPI(); + $payload = array('email' => $email, 'password' => $password); + $result = $authenticationAPI->loginByEmail($payload); + if (isset($result->access_token) && $result->access_token != '') { + $response['data'] = $result; + $response['message'] = "Logged in successfully"; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; } } - echo json_encode($response); exit; -} + } - /** - * function for multifactor authentication - */ + /** + * function for multifactor authentication + */ - public function mfaLogin() { + public function mfaLogin() + { - $email = $this->request->data('email'); - $password = $this->request->data('password'); + $email = $this->request->getdata('email'); + $password = $this->request->getdata('password'); + $emailTemplate = '';//Optional + $fields = ''; //Optional + $loginUrl = ''; //Optional + $smsTemplate = ''; //Optional + $smsTemplate2FA = ''; //Optional + $verificationUrl = ''; //Optional + $emailTemplate2FA = ''; //Optional $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($email)) { $response['message'] = 'The Email Id field is required.'; - } - elseif (empty($password)) { + } elseif (empty($password)) { $response['message'] = 'The Password field is required.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $payload = array('email' => $email, 'password' => $password); - $result = $authenticationObj->mfaEmailLogin($payload); - $response['data'] = $result; - $response['message'] = "Mfa login successfully"; - $response['status'] = 'success'; - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; + } else { + $authenticationAPI = new MultiFactorAuthenticationAPI(); + + //$payload = array('email' => $email, 'password' => $password); No need of payload in this API + $result = $authenticationAPI->mfaLoginByEmail($email, $password, $emailTemplate, $fields, $loginUrl, $smsTemplate, $smsTemplate2FA, $verificationUrl, $emailTemplate2FA); + $response['data'] = $result; + $response['message'] = "Mfa login successfully"; + $response['status'] = 'success'; + if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; $response['status'] = "error"; } } echo json_encode($response); exit; } - + /** * function for multifactor validation */ - public function mfaValidate() { + public function mfaValidate() + { - $secondFactorAuthenticationToken = $this->request->data('secondFactorAuthenticationToken'); - $googleAuthCode = $this->request->data('googleAuthCode'); + $secondFactorAuthenticationToken = $this->request->getdata('secondFactorAuthenticationToken'); + $googleAuthCode = $this->request->getdata('googleAuthCode'); + $fields = null; //Optional + $rbaBrowserEmailTemplate = ''; //Optional + $rbaCityEmailTemplate = ''; //Optional + $rbaCountryEmailTemplate = ''; //Optional + $rbaIpEmailTemplate = ''; //Optional $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($secondFactorAuthenticationToken)) { $response['message'] = 'second factor auth token is required'; - } - elseif (empty($googleAuthCode)) { + } elseif (empty($googleAuthCode)) { $response['message'] = 'google auth code is required'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->mfaValidateGoogleAuthCode($secondFactorAuthenticationToken, $googleAuthCode); - if ((isset($result->access_token) && $result->access_token != '')) { - $response['data'] = $result; - $response['message'] = "Mfa validate google auth code."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; + } else { + $authenticationAPI = new MultiFactorAuthenticationAPI(); + + $result = $authenticationAPI->mfaValidateGoogleAuthCode($googleAuthCode,$secondFactorAuthenticationToken,$fields,$rbaBrowserEmailTemplate,$rbaCityEmailTemplate,$rbaCountryEmailTemplate,$rbaIpEmailTemplate); + if ((isset($result->access_token) && $result->access_token != '')) { + $response['data'] = $result; + $response['message'] = "Mfa validate google auth code."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; $response['status'] = "error"; } } echo json_encode($response); exit; } - + /** * function for password less login */ - public function pwLessLogin() { + public function pwLessLogin() + { - $email = $this->request->data('email'); + $email = $this->request->getdata('email'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($email)) { $response['message'] = 'The Email Id field is required.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->passwordLessLoginByEmail($email, $this->request->data('verificationurl')); - if ((isset($result->IsPosted) && $result->IsPosted)) { - $response['message'] = "One time login link has been sent to your provided email id, check email for further instruction."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; + } else { + $authenticationAPI = new PasswordLessLoginAPI(); + + $result = $authenticationAPI->passwordLessLoginByEmail($email, $this->request->getdata('verificationurl')); + if ((isset($result->IsPosted) && $result->IsPosted)) { + $response['message'] = "One time login link has been sent to your provided email id, check email for further instruction."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; $response['status'] = "error"; } } @@ -164,90 +173,90 @@ public function pwLessLogin() { /** * function for password less link verify */ - public function pwLessLinkVerify() { + public function pwLessLinkVerify() + { - $token =$this->request->data('token'); + $token = $this->request->getdata('token'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($token)) { $response['message'] = 'Token is required'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->passwordLessLoginVerification($token); - if ((isset($result->access_token) && $result->access_token != '')) { - $response['data'] = $result; - $response['message'] = "Link has been verified."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; + } else { + $passwordLessLoginAPI = new PasswordLessLoginAPI(); + + $result = $passwordLessLoginAPI->passwordLessLoginVerification($token); + if ((isset($result->access_token) && $result->access_token != '')) { + $response['data'] = $result; + $response['message'] = "Link has been verified."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; $response['status'] = "error"; } } echo json_encode($response); exit; } - function emailVerify() { + public function emailVerify() + { - $this->autoRender=false; - $vtoken = $this->request->data('vtoken'); + $this->autoRender = false; + $vtoken = $this->request->getdata('vtoken'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($vtoken)) { $response['message'] = 'Verification token is required'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->verifyEmail($vtoken); - if ((isset($result->IsPosted) && $result->IsPosted)) { - $response['message'] = "Your email has been verified successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; + } else { + $authenticationAPI = new AuthenticationAPI(); + + $result = $authenticationAPI->verifyEmail($vtoken); + if ((isset($result->IsPosted) && $result->IsPosted)) { + $response['message'] = "Your email has been verified successfully."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; $response['status'] = "error"; } } - echo json_encode($response); - exit; + echo json_encode($response); + exit; } - public function registration() { + public function registration() + { - $this->autoRender=false; - $email=$this->request->data('email'); - $password=$this->request->data('password'); + $this->autoRender = false; + $email = $this->request->getdata('email'); + $password = $this->request->getdata('password'); $response = array('status' => 'error', 'message' => 'an error occoured'); - + if (empty($email)) { $response['message'] = 'The Email Id field is required.'; - } - elseif (empty($password)) { + } elseif (empty($password)) { $response['message'] = 'The Password field is required.'; - } - else { - - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $payload = array('Email' => array(array('Type' => 'Primary', 'Value' => $email)), 'password' => $password); - - $result = $authenticationObj->registerByEmail($payload, $this->request->data('verificationurl')); - if ((isset($result->EmailVerified) && $result->EmailVerified) || AUTH_FLOW == 'optional' || AUTH_FLOW == 'disabled') { - $response['result'] = $result; - $response['message'] = "You have successsfully registered."; - $response['status'] = 'success'; - } - else { - $response['message'] = "You have successfully registered, Please check your email."; - - $response['status'] = 'registered'; - } + } else { + + $authenticationAPI = new AuthenticationAPI(); + + $payload = array('Email' => array(array('Type' => 'Primary', 'Value' => $email)), 'password' => $password); + $sottObj = new SottAPI(); + $sott = $sottObj->generateSott(); + + + if (!is_object($sott)) { + $sott = json_decode($sott); } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; + $verificationUrl=$this->request->getdata('verificationUrl'); + + $result = $authenticationAPI->userRegistrationByEmail($payload, $sott->Sott,$verificationUrl ); + + if ((isset($result->EmailVerified) && $result->EmailVerified) || AUTH_FLOW == 'optional' || AUTH_FLOW == 'disabled') { + $response['result'] = $result; + $response['message'] = "Successfully registered."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; $response['status'] = "error"; + } else { + $response['message'] = "Successfully registered, please check your email to verify your account."; + $response['status'] = 'registered'; } } echo json_encode($response); @@ -255,59 +264,51 @@ public function registration() { - public function forgotPassword() { + public function forgotPassword() + { - $this->autoRender=false; - $email =$this->request->data('email'); + $this->autoRender = false; + $email = $this->request->getdata('email'); + $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($email)) { $response['message'] = 'The Email Id field is required.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->forgotPassword($email, $this->request->data('resetPasswordUrl')); - if ((isset($result->IsPosted) && $result->IsPosted)) { - $response['message'] = "We'll email you an instruction on how to reset your password"; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; + } else { + $authenticationAPI = new AuthenticationAPI(); + + $result = $authenticationAPI->forgotPassword($email, $this->request->getdata('resetPasswordUrl')); + if ((isset($result->IsPosted) && $result->IsPosted)) { + $response['message'] = "We'll email you an instruction on how to reset your password"; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; $response['status'] = "error"; } } echo json_encode($response); } - public function resetPassword(){ - - $this->autoRender=false; - $token = $this->request->data('resettoken'); - $password = $this->request->data('password'); - $response = array('status' => 'error', 'message' => 'an error occoured'); + public function resetPassword() + { + $this->autoRender = false; + $token = $this->request->getdata('resettoken'); + $password = $this->request->getdata('password'); + $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($token)) { $response['message'] = 'Reset token is required'; - } - elseif (empty($password)) { + } elseif (empty($password)) { $response['message'] = 'The Password field is required.'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->resetPassword($token, $password); - if ((isset($result->IsPosted) && $result->IsPosted)) { - $response['message'] = "Password has been reset successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; + } else { + $authenticationAPI = new AuthenticationAPI(); + + $payload = array('password' => $password, 'resetToken' => $token); + $result = $authenticationAPI->resetPasswordByResetToken($payload); + if ((isset($result->IsPosted) && $result->IsPosted)) { + $response['message'] = "Password has been reset successfully."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; $response['status'] = "error"; } } - echo json_encode($response); + echo json_encode($response); } - } - - -?> \ No newline at end of file diff --git a/src/Controller/ProfileController.php b/src/Controller/ProfileController.php index 2f9508f..7951b02 100644 --- a/src/Controller/ProfileController.php +++ b/src/Controller/ProfileController.php @@ -1,70 +1,78 @@ viewBuilder()->setLayout('profilelayout'); - } - - - public function profileView(){} - public function changePasswordView(){} - public function setPasswordView(){} - public function accountView(){} - public function accountLinkingView(){} - public function customObjectView(){} - public function resetMultifactorView(){} - public function roleView(){} - /** - * manage all profile action] - */ - public function profile(){ - $this->autoRender=false; - $action=$this->request->data('action'); - if(method_exists($this,$action)) - { + public function profileView() + { + } + public function changePasswordView() + { + } + public function setPasswordView() + { + } + public function accountView() + { + } + public function accountLinkingView() + { + } + public function customObjectView() + { + } + public function resetMultifactorView() + { + } + public function roleView() + { + } + /** + * manage all profile action] + */ + public function profile() + { + $this->autoRender = false; + $action = $this->request->getdata('action'); + if (method_exists($this, $action)) { $this->$action(); - } } - - public function getProfileByUid(){ - $this->autoRender=false; - $uid = $this->request->data('uid'); + public function getProfileByUid() + { + $this->autoRender = false; + $uid = $this->request->getdata('uid'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($uid)) { $response['message'] = 'uid is required field'; - } - else { - - $accountObj = new AccountAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $accountObj->getProfileByUid($uid); - - if ((isset($result->Uid) && $result->Uid != '')) { - $response['data'] = $result; - - $response['message'] = "fetched profile"; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->getMessage(); + } else { + + $accountObject = new AccountAPI(); + + $result = $accountObject->getAccountProfileByUid($uid); + + if ((isset($result->Uid) && $result->Uid != '')) { + $response['data'] = $result; + + $response['message'] = "fetched profile"; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; $response['status'] = "error"; } } @@ -73,242 +81,221 @@ public function getProfileByUid(){ } - public function getProfile() { - $this->autoRender=false; - $token= $this->request->data('token'); + public function getProfile() + { + $this->autoRender = false; + $token = $this->request->getdata('token'); + $fields = null; //Optional + $emailTemplate = ''; //Optional + $verificationUrl = ''; //Optional + $welcomeEmailTemplate = ''; //Optional $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($token)) { $response['message'] = 'Token is required'; + } else { + $authenticationAPI = new AuthenticationAPI(); + + $result = $authenticationAPI->getProfileByAccessToken($token,$fields,$emailTemplate,$verificationUrl,$welcomeEmailTemplate); + + $response['data'] = $result; + $response['message'] = "Profile fetched"; + $response['status'] = 'success'; } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $authenticationObj->getProfile($token); - - $response['data'] = $result; - $response['message'] = "Profile fetched"; - $response['status'] = 'success'; - - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = "error"; - } - } - - echo json_encode($response); - exit; + + echo json_encode($response); + exit; } -/** - * function to change password - */ + /** + * function to change password + */ - public function changePassword() { - $token =$this->request->data('token'); - $oldpassword =$this->request->data('oldpassword'); - $newpassword =$this->request->data('newpassword'); + public function changePassword() + { + $token = $this->request->getdata('token'); + $oldpassword = $this->request->getdata('oldpassword'); + $newpassword = $this->request->getdata('newpassword'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($oldpassword)) { $response['message'] = 'Old password is required'; - } - elseif (empty($newpassword)) { + } elseif (empty($newpassword)) { $response['message'] = 'New password is required'; - } - else { - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json')); - try { - $result = $authenticationObj->changeAccountPassword($token, $oldpassword, $newpassword); - if (isset($result->IsPosted) && $result->IsPosted) { - $response['message'] = "Password has been changed successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; + } else { + $authenticationAPI = new AuthenticationAPI(); + + $result = $authenticationAPI->changePassword($token, $newpassword, $oldpassword); + if (isset($result->IsPosted) && $result->IsPosted) { + $response['message'] = "Password has been changed successfully."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; } + + echo json_encode($response); } - echo json_encode($response); } - /** + /* * function to set account password */ - public function setPassword() { - $uid = $this->request->data('uid'); - $newpassword =$this->request->data('newpassword'); + public function setPassword() + { + $uid = $this->request->getdata('uid'); + $newpassword = $this->request->getdata('newpassword'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($newpassword)) { $response['message'] = 'New password field is required'; - } - else { - $accountObj = new AccountAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $accountObj->setPassword($uid, $newpassword); - if (isset($result->PasswordHash) && $result->PasswordHash != '') { - $response['message'] = "The password has been set successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; + } else { + $accountObject = new AccountAPI(); + + $result = $accountObject->setAccountPasswordByUid($newpassword, $uid); + if (isset($result->PasswordHash) && $result->PasswordHash != '') { + $response['message'] = "The password has been set successfully."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; } } echo json_encode($response); } - public function updateAccount() { - $firstname =$this->request->data('firstname'); - $lastname =$this->request->data('lastname'); - $about = $this->request->data('about'); + public function updateAccount() + { + $firstname = $this->request->getdata('firstname'); + $lastname = $this->request->getdata('lastname'); + $about = $this->request->getdata('about'); $response = array('status' => 'error', 'message' => 'an error occoured'); - - $authenticationObj = new UserAPI(API_KEY, API_SECRET, array('output_format' => 'json')); - try { - $payload = array('FirstName' => $firstname, 'LastName' => $lastname, 'About' => $about); - - $result = $authenticationObj->updateProfile($this->request->data('token'), $payload); - if (isset($result->IsPosted) && $result->IsPosted) { - - $response['message'] = "Profile has been updated successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; + $authenticationObj = new AuthenticationAPI(); + + $payload = array('FirstName' => $firstname, 'LastName' => $lastname, 'About' => $about); + + $result = $authenticationObj->updateProfileByAccessToken($this->request->getdata('token'), $payload); + if (isset($result->IsPosted) && $result->IsPosted) { + + $response['message'] = "Profile has been updated successfully."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; } echo json_encode($response); } - + /** * function to create custom pbject */ - public function createCustomObjects() { - $token=$this->request->data('token'); - $objectName = $this->request->data('objectName'); + public function createCustomObjects() + { + $token = $this->request->getdata('token'); + $objectName = $this->request->getdata('objectName'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($objectName)) { $response['message'] = 'Object name is required.'; - } - else { - $customObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - - try { - - $result = $customObj->createCustomObject($token, $objectName, $this->request->data('payload')); - - - if (isset($result->Uid) && $result->Uid != '') { - - $response['message'] = "Custom object created successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; + } else { + $customObj = new CustomObjectAPI(); + + $result = $customObj->createCustomObjectByToken($token, $objectName, $this->request->getdata('payload')); + + + if (isset($result->Uid) && $result->Uid != '') { + + $response['message'] = "Custom object created successfully."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; } } echo json_encode($response); } - + /** - *function to get custom object + *function to get custom object - */ - public function getCustomObjects() { - $token=$this->request->data('token'); - $objectName = $this->request->data('objectName'); + */ + public function getCustomObjects() + { + $token = $this->request->getdata('token'); + $objectName = $this->request->getdata('objectName'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($objectName)) { $response['message'] = 'Object name is required.'; - } - else { - $customObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $customObj->getCustomObjectSetsByToken($token, $objectName); - if (isset($result->Count) && $result->Count != '0') { - $response['result'] = $result; - $response['status'] = 'success'; - } - else { - $response['status'] = 'empty'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; + } else { + $customObj = new CustomObjectAPI(); + + $result = $customObj->getCustomObjectByToken($token, $objectName); + if (isset($result->Count) && $result->Count != '0') { + $response['result'] = $result; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; + } else { + $response['status'] = 'empty'; } } echo json_encode($response); } /** - *function to update custom object + *function to update custom object - */ - - public function updateCustomObjects() { - $token=$this->request->data('token'); - $objectName = $this->request->data('objectName'); - $objectRecordId = $this->request->data('objectRecordId'); + */ + + public function updateCustomObjects() + { + $token = $this->request->getdata('token'); + $objectName = $this->request->getdata('objectName'); + $objectRecordId = $this->request->getdata('objectRecordId'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($objectName)) { $response['message'] = 'Object name is required'; - } - elseif (empty($objectRecordId)) { + } elseif (empty($objectRecordId)) { $response['message'] = 'Object Id is required'; - } - else { - $customObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $customObj->updateCustomObjectData($token, $objectName, $objectRecordId, 'replace', $this->request->data('payload')); - - if (isset($result->Uid) && $result->Uid != '') { - $response['message'] = "Custom object updated successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; + } else { + $customObj = new CustomObjectAPI(); + + $result = $customObj->updateCustomObjectByToken($token, $objectName, $objectRecordId, $this->request->getdata('payload')); + + if (isset($result->Uid) && $result->Uid != '') { + $response['message'] = "Custom object updated successfully."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; } } - echo json_encode($response); + echo json_encode($response); } /** - *function to delete custom object + *function to delete custom object - */ - public function deleteCustomObjects() { - $token=$this->request->data('token'); - $objectName = $this->request->data('objectName'); - $objectRecordId =$this->request->data('objectRecordId'); + */ + public function deleteCustomObjects() + { + $token = $this->request->getdata('token'); + $objectName = $this->request->getdata('objectName'); + $objectRecordId = $this->request->getdata('objectRecordId'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($objectName)) { $response['message'] = 'Object name is required'; - } - elseif (empty($objectRecordId)) { + } elseif (empty($objectRecordId)) { $response['message'] = 'Object Id is required'; - } - else { - $customObj = new AuthCustomObjectAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $customObj->deleteCustomObjectSet($token, $objectName, $objectRecordId); - if (isset($result->IsDeleted) && $result->IsDeleted) { - $response['message'] = "Custom object deleted successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; + } else { + $customObj = new CustomObjectAPI(); + + $result = $customObj->deleteCustomObjectByToken($token,$objectName,$objectRecordId); + if (isset($result->IsDeleted) && $result->IsDeleted) { + $response['message'] = "Custom object deleted successfully."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; } } echo json_encode($response); @@ -316,154 +303,142 @@ public function deleteCustomObjects() { /** * function to reset multi factor authentication */ - public function resetMultifactor() { - $accountObj = new AccountAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $accountObj->mfaResetGoogleAuthenticatorByUid($this->request->data('uid'), true); - if (isset($result->IsDeleted) && $result->IsDeleted) { - $response['message'] = "Reset successfully."; - $response['status'] = 'success'; - } - else { - $response['message'] = "Reset Failed."; - $response['status'] = 'error'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; + public function resetMultifactor() + { + $accountObject = new MultiFactorAuthenticationAPI(); + $googleauthenticator = "true"; //Required + $result = $accountObject->mfaResetGoogleAuthenticatorByUid($googleauthenticator, $this->request->getdata('uid')); + if (isset($result->IsDeleted) && $result->IsDeleted) { + $response['message'] = "Reset successfully."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; + } else { + $response['message'] = "Reset Failed."; $response['status'] = 'error'; } echo json_encode($response); } /** - *function to create Role + *function to create Role - */ - public function handleCreateRole() { - $roles = $this->request->data('roles'); + */ + public function handleCreateRole() + { + $roles = $this->request->getdata('roles'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($roles)) { $response['message'] = 'Roles field is required'; - } - else { - $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $roleObj->create($roles); - if (isset($result->Count) && $result->Count != '') { - $response['message'] = "Roles has been created."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; + } else { + $roleObj = new RoleAPI(); + + $result = $roleObj->createRoles($roles); + if (isset($result->Count) && $result->Count != '') { + $response['message'] = "Roles has been created."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; } } echo json_encode($response); } + + /** - *function to delete role + *function to delete role - */ - - function handleDeleteRole() { - $roles = $this->request->data('roles'); + */ + + public function handleDeleteRole() + { + $roles = $this->request->getdata('roles'); $response = array('status' => 'error', 'message' => 'an error occoured'); if (empty($roles)) { $response['message'] = 'Roles field is required'; - } - else { - $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $roleObj->delete($roles); - if (isset($result->IsDeleted) && $result->IsDeleted) { - $response['message'] = "Role has been deleted."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; + } else { + $roleObj = new RoleAPI(); + + $result = $roleObj->deleteRole($roles); + if (isset($result->IsDeleted) && $result->IsDeleted) { + $response['message'] = "Role has been deleted."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; } } echo json_encode($response); } - + /** - *function to assign user role + *function to assign user role - */ - public function handleAssignUserRole() { - $uid = $this->request->data('uid'); - $roles = $this->request->data('roles'); + */ + public function handleAssignUserRole() + { + $uid = $this->request->getdata('uid'); + $payload = $this->request->getdata('roles'); $response = array('status' => 'error', 'message' => 'an error occoured'); - if (empty($roles)) { + if (empty($payload)) { $response['message'] = 'Roles field is required'; - } - else { - $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $roleObj->assignRolesByUid($uid, $roles); - if (isset($result->Roles) && $result->Roles != '') { - $response['message'] = "Role assigned successfully."; - $response['status'] = 'success'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->error_response->Description; - $response['status'] = 'error'; + } else { + $roleObj = new RoleAPI(); + + $result = $roleObj->assignRolesByUid($payload, $uid); + if (isset($result->Roles) && $result->Roles != '') { + $response['message'] = "Role assigned successfully."; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; } } echo json_encode($response); } - - /** - *function to fetch all role + + /** + *function to fetch all role - */ - - public function getAllRoles() { - $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $roleObj->get(); - if (isset($result->Count) && $result->Count != '0') { - $response['result'] = $result; - $response['status'] = 'success'; - } - else { - $response['message'] = 'Roles is empty'; - $response['status'] = 'rolesempty'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->getMessage(); - $response['status'] = 'error'; + */ + + public function getAllRoles() + { + $roleObj = new RoleAPI(); + + $result = $roleObj->getRolesList(); + if (isset($result->Count) && $result->Count != '0') { + $response['result'] = $result; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; + } else { + $response['message'] = 'Roles is empty'; + $response['status'] = 'rolesempty'; } + echo json_encode($response); } - public function getUserRoles() { - $roleObj = new RoleAPI(API_KEY, API_SECRET, array('output_format' => 'json', 'api_request_signing' => API_REQUEST_SIGNING)); - try { - $result = $roleObj->getAccountRolesByUid($this->request->data('uid')); - if (isset($result->Roles) && $result->Roles != '') { - $response['data'] = $result; - $response['status'] = 'success'; - } - else { - $response['message'] = 'user roles is empty'; - $response['status'] = 'userrolesempty'; - } - } - catch (LoginRadiusException $e) { - $response['message'] = $e->getMessage(); - $response['status'] = 'error'; + public function getUserRoles() + { + $roleObj = new RoleAPI(); + + $result = $roleObj->getRolesByUid($this->request->getdata('uid')); + if (isset($result->Roles) && $result->Roles != '') { + $response['data'] = $result; + $response['status'] = 'success'; + } else if (isset($result->error_response)) { + $response['message'] = $result->error_response->Description; + $response['status'] = "error"; + } else { + $response['message'] = 'user roles is empty'; + $response['status'] = 'userrolesempty'; } echo json_encode($response); } - - - -} \ No newline at end of file +} diff --git a/src/Template/Layout/profilelayout.ctp b/src/Template/Layout/profilelayout.ctp index 2de075a..3f20338 100644 --- a/src/Template/Layout/profilelayout.ctp +++ b/src/Template/Layout/profilelayout.ctp @@ -24,10 +24,7 @@ Html->image('lr-logo.png')?> CakePhp Web Demo -

+
Profile diff --git a/webroot/js/LoginRadiusLoginScreen.1.0.0.js b/webroot/js/LoginRadiusLoginScreen.1.0.0.js index a7c1d58..ac238dc 100644 --- a/webroot/js/LoginRadiusLoginScreen.1.0.0.js +++ b/webroot/js/LoginRadiusLoginScreen.1.0.0.js @@ -1624,7 +1624,7 @@ if (document.getElementsByClassName("loginradius-otpsignin")[0]) { document.getElementsByClassName("loginradius-otpsignin")[0].style.display = "none"; - document.getElementById("loginradius-otpsignin-send-an-otp-to-sign-in").style.display = "none"; + //document.getElementById("loginradius-otpsignin-send-an-otp-to-sign-in").style.display = "none"; //diabled because causing error in login screen } if(document.getElementById('lr-forgotpw-btn')){ var passwordNode = document.getElementsByClassName('content-loginradius-password')[0]; diff --git a/webroot/js/empty b/webroot/js/empty deleted file mode 100644 index e69de29..0000000 diff --git a/webroot/js/options.js b/webroot/js/options.js index 7b4cbbc..48617f2 100644 --- a/webroot/js/options.js +++ b/webroot/js/options.js @@ -7,5 +7,5 @@ commonOptions.hashTemplate = true; commonOptions.sott = ""; commonOptions.formValidationMessage = true; commonOptions.verificationUrl = domainName+""; -commonOptions.resetPasswordUrl =domainName+"/forgot"; +commonOptions.resetPasswordUrl =domainName+""; var LRObject = new LoginRadiusV2(commonOptions); \ No newline at end of file
' + ' ' + - '

' + + '

' + '
' + '
'+ ((options.content && options.content.tabLabels) ? options.content.tabLabels[2] : "Forgot Password?")+ @@ -1501,7 +1480,7 @@ ' '+ ' '; } - // + function renderJS(cb, options, lrCallingObj) { function lrlserroraction(errors) { window.scrollTo(0, 0); @@ -1553,26 +1532,24 @@ 'loginradiuscustom_tmpl1'); var sl_options = {}; sl_options.onSuccess = function(response) { - localStorage.removeItem("LrEmailStatus"); if(response.access_token){ - redirect(response); + + getProfile(response.access_token, response.Profile.Uid); } cb(response, "socialLogin"); }; sl_options.onError = function(errors) { - localStorage.setItem("LrEmailStatus", 'unverified'); lrlserroraction(errors); cb(errors, "socialLogin"); }; sl_options.container = "sociallogin-container"; var login_options = {}; login_options.onSuccess = function(response) { - localStorage.removeItem("LrEmailStatus"); document.getElementById("lr-ls-status-area").style.display = "none"; cb(response, "login"); //safely redirect if(response.access_token){ - redirect(response); + getProfile(response.access_token, response.Profile.Uid); } }; login_options.onError = function(errors) { @@ -1582,7 +1559,6 @@ login_options.container = "login-container"; var registration_options = {} registration_options.onSuccess = function(response) { - localStorage.removeItem("LrEmailStatus"); lrlssuccessaction(response); document.getElementById("lr-ls-divisionsuccess").innerHTML = ((options.content && options.content.signupandForgotPwrequest) ? options.content.signupandForgotPwrequest : "Please check your email!"); if(response.Data){ @@ -1596,7 +1572,7 @@ cb(response, "registration"); if(response.access_token){ document.getElementById("lr-ls-divisionsuccess").innerHTML = ((options.content && options.content.emailVerifiedMessage) ? options.content.emailVerifiedMessage : "You have successfully registered, you now may log in with this email"); - redirect(response); + getProfile(response.access_token, response.Profile.Uid); } }; registration_options.onError = function(errors) { @@ -1610,11 +1586,6 @@ forgotpassword_options.onSuccess = function(response) { lrlssuccessaction(response); document.getElementById("lr-ls-divisionsuccess").innerHTML = ((options.content && options.content.signupandForgotPwrequest) ? options.content.signupandForgotPwrequest : "Please check your email!"); - if(response.Data){ - if(response.Data.AccountSid && response.Data.Sid) { - document.getElementById("lr-ls-divisionsuccess").innerHTML = ((options.content && options.content.signupandForgotPwrequestPhone) ? options.content.signupandForgotPwrequestPhone : "Please check your phone!"); - } - } if(document.getElementsByName("loginradius-forgotpassword")[0]){ document.getElementsByName("loginradius-forgotpassword")[0].reset(); } @@ -1635,12 +1606,10 @@ resetpassword_options.container = "resetpassword-container"; resetpassword_options.onSuccess = function(response) { lrlssuccessaction(response); - if(response.Data == null){ - setTimeout(function() { - window.location.href = ((options.redirecturl && options.redirecturl.afterreset) ? options.redirecturl.afterreset : - window.location.origin); - }, 2000); - } + setTimeout(function() { + window.location.href = ((options.redirecturl && options.redirecturl.afterreset) ? options.redirecturl.afterreset : + window.location.origin); + }, 2000); cb(response, "resetPassword"); }; resetpassword_options.onError = function(errors) { @@ -1716,10 +1685,10 @@ verifyemail_options.onSuccess = function(response) { document.getElementById("lr-ls-divisionsuccess").innerHTML = ((options.content && options.content.emailVerifiedMessage) ? options.content.emailVerifiedMessage : "You have successfully registered, you now may log in with this email"); lrlssuccessaction(response); - localStorage.setItem("LrEmailStatus", "verified"); + console.log(response); cb(response, "verifyEmail"); if(response.access_token){ - redirect(response); + getProfile(response.access_token, response.Profile.Uid); } }; verifyemail_options.onError = function(errors) { @@ -1752,10 +1721,11 @@ function registrationSchema(regSchema, userProfile) { if(userProfile){ - document.getElementById("registration-container").style.display = "none"; - document.getElementById("interfacecontainerdiv").style.display = "none"; + document.getElementById("login-container").style.display = "none"; + document.getElementById("interfacecontainerdivL").style.display = "none"; document.getElementById("lr-ls-sectiondivider").style.display = "none"; - } + document.getElementById("lr-forgotpw-btn").style.display = "none"; + } } lrCallingObj.$hooks.register('startProcess', function() { document.getElementById("loader").style.display = "block"; @@ -1763,10 +1733,6 @@ lrCallingObj.$hooks.register('endProcess', function() { document.getElementById("loader").style.display = "none"; }); - lrCallingObj.$hooks.register('socialLoginFormRender',function(){ - //on social login form render - document.getElementById("tab2").checked = true; - }); if (!options.language){ lrCallingObj.$hooks.call('setButtonsName', { login: "LOG IN", diff --git a/public/js/account.js b/public/js/account.js new file mode 100644 index 0000000..60d0248 --- /dev/null +++ b/public/js/account.js @@ -0,0 +1,74 @@ +var stringVariable = window.location.href; +var currentToken = $('meta[name="csrf-token"]').attr('content'); +domainName = stringVariable.substring(0, stringVariable.lastIndexOf('/')); +$(function () { + getProfileByUid(); + handleUpdateAccount(); +}); + +function getProfileByUid(getProfileByUid) { + + var uid = localStorage.getItem("LRUserID"); + $.ajax({ + type: 'POST', + url: "/profile", + dataType: "json", + data: $.param({ + uid: uid, + action: "getProfileByUid", + _token: currentToken + }), + success: function (response) { + + if (response.status == "success") { + if (typeof (response.data.FirstName) != "undefined" && response.data.FirstName !== null) { + $("#user-updateaccount-firstname").val(response.data.FirstName); + localStorage.setItem('UserName', response.data.FullName); + } + if (typeof (response.data.LastName) != "undefined" && response.data.LastName !== null) { + $("#user-updateaccount-lastname").val(response.data.LastName); + localStorage.setItem('UserName', response.data.FullName); + } + if (typeof (response.data.About) != "undefined" && response.data.About !== null) { + $("#user-updateaccount-about").val(response.data.About); + } + } + } + }); +} + +function handleUpdateAccount() { + $('#btn-user-updateaccount').on('click', function () { + $("#user-updateaccount-errorMsg").text(""); + $("#user-updateaccount-successMsg").text(""); + + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: "/profile", + dataType: "json", + data: $.param({ + token: localStorage.getItem("LRTokenKey"), + firstname: $("#user-updateaccount-firstname").val(), + lastname: $("#user-updateaccount-lastname").val(), + about: $("#user-updateaccount-about").val(), + action: "updateAccount", + _token: currentToken + }), + success: function (res) { + + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#user-updateaccount-errorMsg").text(res.message); + } else if (res.status == 'success') { + $("#user-updateaccount-successMsg").text(res.message); + getProfileByUid(); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-updateaccount-errorMsg").text(xhr.responseText); + } + }); + }); +} \ No newline at end of file diff --git a/public/js/accountlinking.js b/public/js/accountlinking.js new file mode 100644 index 0000000..cbe43ae --- /dev/null +++ b/public/js/accountlinking.js @@ -0,0 +1,38 @@ +$(function() { + var la_options = {}; + la_options.container = "interfacecontainerdiv"; + la_options.templateName = 'loginradiuscustom_tmpl_link'; + la_options.onSuccess = function(response) { + if (response.IsPosted == true) { + $("#accountlinking-message").attr('style', 'color:green'); + $("#accountlinking-message").text("Account linked successfully"); + window.setTimeout(function () { + window.location.reload(); + }, 3000); + } + }; + la_options.onError = function(errors) { + $("#accountlinking-message").attr('style', 'color:red'); + $("#accountlinking-message").text(errors[0].Description); + }; + + var unlink_options = {}; + unlink_options.onSuccess = function(response) { + if (response.IsDeleted == true) { + $("#accountlinking-message").attr('style', 'color:green'); + $("#accountlinking-message").text("Account unlinked successfully"); + window.setTimeout(function () { + window.location.reload(); + }, 3000); + } + }; + unlink_options.onError = function(errors) { + $("#accountlinking-message").attr('style', 'color:red'); + $("#accountlinking-message").text(errors[0].Description); + }; + + LRObject.util.ready(function() { + LRObject.init("linkAccount", la_options); + LRObject.init("unLinkAccount", unlink_options); + }); +}); \ No newline at end of file diff --git a/public/js/emailverification.js b/public/js/emailverification.js new file mode 100644 index 0000000..6af0309 --- /dev/null +++ b/public/js/emailverification.js @@ -0,0 +1,81 @@ +var stringVariable = window.location.href; +var currentToken = $('meta[name="csrf-token"]').attr('content'); +domainName = stringVariable.substring(0, stringVariable.lastIndexOf('/')); +$(function() { + if (getUrlParameter("vtype") == "oneclicksignin") { + $("#lr-loading").show(); + $("#emailverification-message").text(""); + $.ajax({ + type: "POST", + url: '/minimal', + data: $.param({ + token: getUrlParameter("vtoken"), + action: "pwLessLinkVerify", + _token: currentToken + }), + dataType: "json", + success: function(res) { + console.log(res); + $("#lr-loading").hide(); + if (res.status == 'success') { + + getProfile(res.data.access_token, res.data.Profile.Uid); + + } else if(res.status == 'error'){ + $("#emailverification-message").attr('style', 'color:red'); + $("#emailverification-message").text(res.message); + } + }, + error: function(xhr, status, error) { + $("#lr-loading").hide(); + console.log(xhr.responseText); + $("#emailverification-message").attr('style', 'color:red'); + $("#emailverification-message").text("Pwless Login failed"); + } + }); + } else if (getUrlParameter("vtype") == "emailverification") { + $("#lr-loading").show(); + $("#emailverification-message").text(""); + $.ajax({ + url: '/minimal', + type: 'POST', + dataType: "json", + data: $.param({ + vtoken: getUrlParameter("vtoken"), + action: "emailVerify", + _token: currentToken + }), + success: function(res) { + $("#lr-loading").hide(); + if (res.status == 'success') { + $("#emailverification-message").attr('style', 'color:green'); + $("#emailverification-message").text(res.message); + } else if (res.status == 'error') { + $("#emailverification-message").attr('style', 'color:red'); + $("#emailverification-message").text(res.message); + } + }, + error: function(xhr, status, error) { + $("#lr-loading").hide(); + console.log(xhr.responseText); + $("#emailverification-message").attr('style', 'color:red'); + $("#emailverification-message").text("Email verification failed"); + } + }); + } +}); + +function getUrlParameter(sParam) { + var sPageURL = decodeURIComponent(window.location.search.substring(1)), + sURLVariables = sPageURL.split('&'), + sParameterName, + i; + + for (i = 0; i < sURLVariables.length; i++) { + sParameterName = sURLVariables[i].split('='); + + if (sParameterName[0] === sParam) { + return sParameterName[1] === undefined ? true : sParameterName[1]; + } + } +} \ No newline at end of file diff --git a/public/js/index.js b/public/js/index.js new file mode 100644 index 0000000..f587662 --- /dev/null +++ b/public/js/index.js @@ -0,0 +1,384 @@ +var stringVariable = window.location.href; +var currentToken = $('meta[name="csrf-token"]').attr('content'); +domainName = stringVariable.substring(0, stringVariable.lastIndexOf('/')); +$(function () { + var accesstoken = localStorage.getItem("LRTokenKey"); + var lruid= localStorage.getItem("LRUserID"); + + + if (accesstoken != "" && accesstoken != null && lruid != "" && lruid != null) { + + window.location.href = "/profile"; + } + handleLogin(); + handleMFALogin(); + handlePwLessLogin(); + handleSignup(); + handleForgotPassword(); + handleResetPassword(); + + var vtype = getUrlParameter("vtype"); + if (vtype == 'reset') { + + jQuery('.lrforgotpassword').hide(); + jQuery('.lrrestpassword').show(); + } + $("#lr-loading").click(function () { + $("#lr-loading").hide(); + }); +}); + +function getProfile(access_token, profile_uid) { + localStorage.setItem('LRTokenKey', access_token); + localStorage.setItem('LRUserID', profile_uid); + + $.ajax({ + type: 'POST', + url: '/profile', + + dataType: "json", + data: $.param({ + token: access_token, + action: "getProfile", + _token: currentToken + }), + success: function (response) { + if (response.status == "success") { + localStorage.setItem('EmailId', response.data.Email[0].Value); + if (typeof (response.data.FullName) != "undefined" && response.data.FullName !== null) { + localStorage.setItem('UserName', response.data.FullName); + } + localStorage.setItem('ImageUrl', response.data.ImageUrl); + localStorage.setItem('LastLoginTime', response.data.LastLoginDate); + + window.location.href = "/profile"; + } else { + $("#minimal-login-errorMsg").text(response.message); + } + } + }); +} + +function handleLogin() { + + $('#btn-minimal-login').on('click', function () { + $("#minimal-login-errorMsg").text(""); + if ($('#minimal-login-email').val().trim() == '') { + $("#minimal-login-errorMsg").text("The Email Id field is required."); + return; + } else if ($('#minimal-login-password').val().trim() == '') { + $("#minimal-login-errorMsg").text("The Password field is required."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: "/minimal", + dataType: "json", + data:$.param({ + email: $("#minimal-login-email").val(), + password: $("#minimal-login-password").val(), + action: "loginByEmail", + _token: currentToken + }), + + success: function (response) { + + console.log(response); + $("#lr-loading").hide(); + if (response.status == 'error') { + $("#minimal-login-errorMsg").text(response.message); + } else if (response.status == 'success') { + $("#minimal-login-email").val(""); + $("#minimal-login-password").val(""); + getProfile(response.data.access_token, response.data.Profile.Uid); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + console.log("Login err::", xhr.responseText); + $("#minimal-login-errorMsg").text("an error occurred"); + } + }); + }); +} + +function handlePwLessLogin() { + $('#btn-minimal-pwless').on('click', function () { + $("#minimal-pwless-successMsg").text(""); + $("#minimal-pwless-errorMsg").text(""); + if ($('#minimal-pwless-email').val().trim() == '') { + $("#minimal-pwless-errorMsg").text("The Email Id field is required."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: '/minimal', + data: $.param({ + email: $("#minimal-pwless-email").val(), + verificationurl: domainName+"/minimal", + action: "pwLessLogin", + _token: currentToken + }), + dataType: "json", + success: function (response) { + $("#lr-loading").hide(); + if (response.status == 'error') { + $("#minimal-pwless-errorMsg").text(response.message); + } else if (response.status == 'success') { + $("#minimal-pwless-email").val(""); + $("#minimal-pwless-successMsg").text(response.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#minimal-pwless-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function handleMFALogin() { + $('#btn-minimal-mfalogin-next').on('click', function () { + $("#minimal-mfalogin-successMsg").text(""); + $("#minimal-mfalogin-errorMsg").text(""); + if ($('#minimal-mfalogin-email').val().trim() == '') { + $("#minimal-mfalogin-errorMsg").text("The Email Id field is required."); + return; + } else if ($('#minimal-mfalogin-password').val().trim() == '') { + $("#minimal-mfalogin-errorMsg").text("The Password field is required."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url:'/minimal', + data: $.param({ + email: $("#minimal-mfalogin-email").val(), + password: $("#minimal-mfalogin-password").val(), + action: "mfaLogin", + _token: currentToken + }), + dataType: "json", + success: function (res) { + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#minimal-mfalogin-errorMsg").text(res.message); + } else if(res.status == 'success'){ + $("#minimal-mfalogin-email").val(""); + $("#minimal-mfalogin-password").val(""); + if (typeof (res.data.SecondFactorAuthentication) != "undefined" && res.data.SecondFactorAuthentication!= null) { + + var secondFactorAuthenticationToken = res.data.SecondFactorAuthentication.SecondFactorAuthenticationToken; + + var qrHtml = ''; + var qrCode = res.data.SecondFactorAuthentication.QRCode; + if (!res.data.SecondFactorAuthentication.IsGoogleAuthenticatorVerified) { + qrHtml = '
'; + } else { + qrHtml = ''; + } + $('#minimal-mfalogin-login').html(qrHtml + "Google Auth Code:

"); + + $('#btn-minimal-mfalogin-login').on('click', function () { + if ($('#minimal-mfalogin-googlecode').val().trim() == '') { + $("#minimal-mfalogin-errorMsg").text("Google code required."); + return; + } + validateGoogleCode(secondFactorAuthenticationToken); + }); + } else { + $("#minimal-mfalogin-email").val(""); + $("#minimal-mfalogin-password").val(""); + getProfile(res.data.access_token, res.data.Profile.Uid); + } + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#minimal-mfalogin-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function validateGoogleCode(token) { + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: '/minimal', + data: $.param({ + secondFactorAuthenticationToken: token, + googleAuthCode: $("#minimal-mfalogin-googlecode").val(), + action: "mfaValidate", + _token: currentToken + }), + dataType: "json", + success: function (res) { + $("#lr-loading").hide(); + $("#minimal-mfalogin-errorMsg").text(""); + if (res.status == 'success') { + getProfile(res.data.access_token, res.data.Profile.Uid); + } else if (res.status == 'error') { + $("#minimal-mfalogin-errorMsg").text(res.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#minimal-mfalogin-errorMsg").text(xhr.responseText); + } + }); +} + +function handleSignup() { + $('#btn-minimal-signup').on('click', function () { + $("#minimal-signup-successMsg").text(""); + $("#minimal-signup-errorMsg").text(""); + if ($('#minimal-signup-email').val().trim() == '') { + $("#minimal-signup-errorMsg").text("The Email Id field is required."); + return; + } else if ($('#minimal-signup-password').val().trim() == '') { + $("#minimal-signup-errorMsg").text("The Password field is required."); + return; + } else if ($('#minimal-signup-password').val().trim().length < '6') { + $("#minimal-signup-errorMsg").text("The Password field must be at least 6 characters in length."); + return; + } else if ($("#minimal-signup-password").val() != $("#minimal-signup-confirmpassword").val()) { + $("#minimal-signup-errorMsg").text("Passwords do not match."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: "/signup", + dataType: "json", + data: $.param({ + email: $("#minimal-signup-email").val(), + password: $("#minimal-signup-password").val(), + verificationurl: domainName, + action: "registration", + _token: currentToken + }), + success: function (res) { + console.log(res); + + $("#lr-loading").hide(); + if (res.status == 'registered') { + $("#minimal-signup-successMsg").text(res.message); + $("#minimal-signup-email").val(''); + $("#minimal-signup-password").val(''); + $("#minimal-signup-confirmpassword").val(''); + } else if (res.status == 'success') { + $("#minimal-signup-email").val(''); + $("#minimal-signup-password").val(''); + $("#minimal-signup-confirmpassword").val(''); + getProfile(res.result.Data.access_token, res.result.Data.Profile.Uid); + } else if (res.status == 'error') { + $("#minimal-signup-errorMsg").text(res.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#minimal-signup-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function handleForgotPassword() { + $('#btn-minimal-forgotpassword').on('click', function () { + $("#minimal-forgotpassword-successMsg").text(""); + $("#minimal-forgotpassword-errorMsg").text(""); + if ($('#minimal-forgotpassword-email').val().trim() == '') { + $("#minimal-forgotpassword-errorMsg").text("The Email Id field is required."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: '/profile', + + dataType: "json", + data: $.param({ + email: $("#minimal-forgotpassword-email").val(), + resetPasswordUrl: domainName + "/forgot", + action: "forgotPassword", + _token: currentToken + }), + success: function (response) { + $("#lr-loading").hide(); + if (response.status == 'success') { + $("#minimal-forgotpassword-email").val(""); + $("#minimal-forgotpassword-successMsg").text(response.message); + } else if (response.status == 'error') { + $("#minimal-forgotpassword-errorMsg").text(response.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#minimal-forgotpassword-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function handleResetPassword() { + $('#btn-minimal-resetpassword').on('click', function () { + $("#minimal-resetpassword-successMsg").text(""); + $("#minimal-resetpassword-errorMsg").text(""); + if ($('#minimal-resetpassword-password').val().trim() == '') { + $("#minimal-resetpassword-errorMsg").text("The Password field is required."); + return; + }else if ($('#minimal-resetpassword-password').val().trim().length < '6') { + $("#minimal-resetpassword-errorMsg").text("The Password field must be at least 6 characters in length."); + return; + } + else if ($('#minimal-resetpassword-password').val() != $('#minimal-resetpassword-confirmpassword').val()) { + $("#minimal-resetpassword-errorMsg").text("Passwords do not match."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: '/profile', + dataType: "json", + data: $.param({ + resettoken: getUrlParameter("vtoken"), + password: $("#minimal-resetpassword-password").val(), + action: "resetPassword", + _token: currentToken + }), + success: function (response) { + + $("#lr-loading").hide(); + if (response.status == 'success') { + $("#minimal-resetpassword-password").val(""); + $("#minimal-resetpassword-confirmpassword").val(""); + $("#minimal-resetpassword-successMsg").text(response.message); + } else if (response.status == 'error') { + $("#minimal-resetpassword-errorMsg").text(response.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#minimal-resetpassword-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function getUrlParameter(sParam) { + var sPageURL = decodeURIComponent(window.location.search.substring(1)), + sURLVariables = sPageURL.split('&'), + sParameterName, + i; + + for (i = 0; i < sURLVariables.length; i++) { + sParameterName = sURLVariables[i].split('='); + + if (sParameterName[0] === sParam) { + return sParameterName[1] === undefined ? true : sParameterName[1]; + } + } +} \ No newline at end of file diff --git a/public/js/jquery.min.js b/public/js/jquery.min.js new file mode 100644 index 0000000..6334d0d --- /dev/null +++ b/public/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v@1.8.0 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;jq&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;ai){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="
",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/public/js/logout.js b/public/js/logout.js new file mode 100644 index 0000000..798997c --- /dev/null +++ b/public/js/logout.js @@ -0,0 +1,33 @@ +var stringVariable = window.location.href; +domainName = stringVariable.substring(0, stringVariable.lastIndexOf('/')); +$(function () { + + handleLogout(); + var accesstoken = localStorage.getItem("LRTokenKey"); + var lruseruid = localStorage.getItem("LRUserID"); + var emailId = localStorage.getItem("EmailId"); + var username = localStorage.getItem("UserName"); + var lastlogintime = localStorage.getItem("LastLoginTime"); + + if (accesstoken != "" && accesstoken !== null) { + if(username!= "" && username != null){ + jQuery('.lr-user-name').text(username); + } + jQuery('.emailid').text(emailId); + jQuery('.useruid').text(lruseruid); + jQuery('.lastlogin').text(lastlogintime); + } else { + window.location.href = domainName + "/login"; + } +}); + +function handleLogout() { + $('#menu-user-logout').on('click', function () { + localStorage.setItem("LRTokenKey", ""); + localStorage.setItem("LRUserID", ""); + localStorage.setItem("EmailId", ""); + localStorage.setItem("UserName", ""); + localStorage.setItem("ImageUrl", ""); + localStorage.setItem("LastLoginTime", ""); + }); +} \ No newline at end of file diff --git a/public/js/options.js b/public/js/options.js new file mode 100644 index 0000000..16458e5 --- /dev/null +++ b/public/js/options.js @@ -0,0 +1,11 @@ +var stringVariable = window.location.href; +domainName = stringVariable.substring(0, stringVariable.lastIndexOf('/')); +var commonOptions = {}; +commonOptions.apiKey = ""; +commonOptions.appName = ""; +commonOptions.hashTemplate = true; +commonOptions.sott = ""; +commonOptions.formValidationMessage = true; +commonOptions.verificationUrl = domainName+""; +commonOptions.resetPasswordUrl = domainName+""; +var LRObject = new LoginRadiusV2(commonOptions); \ No newline at end of file diff --git a/public/js/profile.js b/public/js/profile.js new file mode 100644 index 0000000..6a284ff --- /dev/null +++ b/public/js/profile.js @@ -0,0 +1,510 @@ +var stringVariable = window.location.href; +var currentToken = $('meta[name="csrf-token"]').attr('content'); +domainName = stringVariable.substring(0, stringVariable.lastIndexOf('/')); +$(function () { + handleSetPassword(); + handleChangePassword(); + resetMultifactor(); + + createCustomObjects(); + getCustomObjects(); + updateCustomObjects(); + deleteCustomObjects(); + + getAllRoles(); + getUserRoles(); + handleCreateRole(); + handleDeleteRole(); + handleAssignUserRole(); +}); + +function handleSetPassword() { + $('#btn-user-setpassword').on('click', function () { + $("#user-setpassword-errorMsg").text(""); + $("#user-setpassword-successMsg").text(""); + if ($('#user-setpassword-password').val().trim() == '') { + $("#user-setpassword-errorMsg").text("The password field is required."); + return; + } else if ($('#user-setpassword-password').val().trim().length < '6') { + $("#user-setpassword-errorMsg").text("The Password field must be at least 6 characters in length."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url:'/profile', + dataType: "json", + data: $.param({ + uid: localStorage.getItem("LRUserID"), + newpassword: $("#user-setpassword-password").val(), + action: "setPassword", + _token: currentToken + }), + success: function (res) { + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#user-setpassword-errorMsg").text(res.message); + } else if (res.status == 'success') { + $("#user-setpassword-password").val(""); + $("#user-setpassword-successMsg").text(res.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-setpassword-errorMsg").text(xhr.responseText); + } + }); + + }); +} + +function handleChangePassword() { + $('#btn-user-changepassword').on('click', function () { + $("#user-changepassword-errorMsg").text(""); + $("#user-changepassword-successMsg").text(""); + if ($('#user-changepassword-oldpassword').val().trim() == '' || $('#user-changepassword-newpassword').val().trim() == '') { + $("#user-changepassword-errorMsg").text("The password field is required."); + return; + } else if ($('#user-changepassword-newpassword').val().trim().length < '6') { + $("#user-changepassword-errorMsg").text("The New Password field must be at least 6 characters in length."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url:'/profile', + dataType: "json", + data: $.param({ + token: localStorage.getItem("LRTokenKey"), + oldpassword: $("#user-changepassword-oldpassword").val(), + newpassword: $("#user-changepassword-newpassword").val(), + action: "changePassword", + _token: currentToken + }), + success: function (res) { + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#user-changepassword-errorMsg").text(res.message); + } else if (res.status == 'success') { + $("#user-changepassword-oldpassword").val(""); + $("#user-changepassword-newpassword").val(""); + $("#user-changepassword-successMsg").text(res.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-changepassword-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function createCustomObjects() { + $('#btn-user-createcustomobj').on('click', function () { + $("#user-createcustomobj-successMsg").text(""); + $("#user-createcustomobj-errorMsg").text(""); + var input = $("#user-createcustomobj-data").val(); + if ($('#user-createcustomobj-objectname').val().trim() == '') { + $("#user-createcustomobj-errorMsg").text("The Object Name field is required."); + return; + } else if ($('#user-createcustomobj-data').val().trim() == '') { + $("#user-createcustomobj-errorMsg").text("The Data field is required."); + return; + } else if (!IsJsonString(input)) { + $("#user-createcustomobj-errorMsg").text("Invalid json in Data field."); + return; + } + + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: '/profile', + dataType: "json", + data: $.param({ + token: localStorage.getItem("LRTokenKey"), + objectName: $("#user-createcustomobj-objectname").val(), + payload: input, + action: "createCustomObjects", + _token: currentToken + }), + success: function (res) { + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#user-createcustomobj-errorMsg").text(res.message); + } else if (res.status == 'success') { + $("#user-createcustomobj-objectname").val(""); + $("#user-createcustomobj-data").val(""); + $("#user-createcustomobj-successMsg").text(res.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-createcustomobj-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function getCustomObjects() { + $('#btn-user-getcustomobj').on('click', function () { + $("#user-getcustomobj-errorMsg").text(""); + $("#user-getcustomobj-successMsg").text(""); + if ($("#user-getcustomobj-objectname").val().trim() == ''){ + $("#user-getcustomobj-errorMsg").text("The Object Name field is required."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: '/profile', + dataType: "json", + data: $.param({ + token: localStorage.getItem("LRTokenKey"), + objectName: $("#user-getcustomobj-objectname").val(), + action: "getCustomObjects", + _token: currentToken + }), + success: function (res) { + $("#lr-loading").hide(); + $("#user-getcustomobj-errorMsg").text(""); + if (res.status == 'error') { + $("#user-getcustomobj-errorMsg").text(res.message); + $('#customobj-table').html(''); + } else if (res.status == 'success') { + $("#user-getcustomobj-objectname").val(""); + + $('#customobj-table').html(''); + $('#customobj-table').append('
'); + for (var i = 0; i < res.result.data.length; i++) { + var id = res.result.data[i].Id; + var custobj = res.result.data[i].CustomObject; + $('#customobj-table').append(''); + } + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-getcustomobj-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function updateCustomObjects() { + $('#btn-user-updatecustomobj').on('click', function () { + $("#user-updatecustomobj-errorMsg").text(""); + $("#user-updatecustomobj-successMsg").text(""); + var input = $("#user-updatecustomobj-data").val(); + if ($('#user-updatecustomobj-objectname').val().trim() == '') { + $("#user-updatecustomobj-errorMsg").text("The Object Name field is required."); + return; + } else if ($('#user-updatecustomobj-objectrecordid').val().trim() == '') { + $("#user-updatecustomobj-errorMsg").text("The Object Record Id field is required."); + return; + }else if ($('#user-updatecustomobj-data').val().trim() == '') { + $("#user-updatecustomobj-errorMsg").text("The Data field is required."); + return; + } else if (!IsJsonString(input)) { + $("#user-updatecustomobj-errorMsg").text("Invalid json in Data field"); + return; + } + + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: '/profile', + dataType: "json", + data: $.param({ + token: localStorage.getItem("LRTokenKey"), + objectName: $("#user-updatecustomobj-objectname").val(), + objectRecordId: $("#user-updatecustomobj-objectrecordid").val(), + payload: input, + action: "updateCustomObjects", + _token: currentToken + }), + + success: function (res) { + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#user-updatecustomobj-errorMsg").text(res.message); + } else if (res.status == 'success') { + $("#user-updatecustomobj-objectname").val(""); + $("#user-updatecustomobj-objectrecordid").val(""); + $("#user-updatecustomobj-data").val(""); + $("#user-updatecustomobj-successMsg").text(res.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-updatecustomobj-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function deleteCustomObjects() { + $('#btn-user-deletecustomobj').on('click', function () { + $("#user-deletecustomobj-errorMsg").text(""); + $("#user-deletecustomobj-successMsg").text(""); + if ($('#user-deletecustomobj-objectname').val().trim() == '') { + $("#user-deletecustomobj-errorMsg").text("The Object Name field is required."); + return; + } else if ($('#user-deletecustomobj-objectrecordid').val().trim() == '') { + $("#user-deletecustomobj-errorMsg").text("The Object Record Id is required."); + return; + } + + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url:'/profile', + dataType: "json", + data: $.param({ + token: localStorage.getItem("LRTokenKey"), + objectName: $("#user-deletecustomobj-objectname").val(), + objectRecordId: $("#user-deletecustomobj-objectrecordid").val(), + action: "deleteCustomObjects", + _token: currentToken + }), + success: function (res) { + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#user-deletecustomobj-errorMsg").text(res.message); + } else if (res.status == 'success') { + $("#user-deletecustomobj-objectname").val(""); + $("#user-deletecustomobj-objectrecordid").val(""); + $("#user-deletecustomobj-successMsg").text(res.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-deletecustomobj-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function resetMultifactor() { + $('#btn-user-mfa-resetgoogle').on('click', function () { + $("#user-mfa-successMsg").text(""); + $("#user-mfa-errorMsg").text(""); + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url:'/profile', + dataType: "json", + data: $.param({ + uid: localStorage.getItem("LRUserID"), + action: "resetMultifactor", + _token: currentToken + }), + success: function (res) { + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#user-mfa-errorMsg").text(res.message); + } else if (res.status == 'success') { + $("#user-mfa-successMsg").text(res.message); + } + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-mfa-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function handleCreateRole() { + $('#btn-user-createrole').on('click', function () { + $("#user-createrole-errorMsg").text(""); + $("#user-createrole-successMsg").text(""); + if ($("#user-roles-createrole").val().trim() == '') { + $("#user-createrole-errorMsg").text("The Role field is required."); + return; + } + var input = $("#user-roles-createrole").val(); + if (!IsJsonString(input)) { + $("#user-createrole-errorMsg").text("Invalid json in Role field."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: '/profile', + dataType: "json", + data: $.param({ + roles: $("#user-roles-createrole").val(), + action: "handleCreateRole", + _token: currentToken + }), + success: function (res) { + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#user-createrole-errorMsg").text(res.message); + } else if (res.status == 'success') { + $("#user-createrole-successMsg").text(res.message); + $("#user-roles-createrole").val(''); + } + getAllRoles(); // re-render table + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-createrole-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function handleDeleteRole() { + $('#btn-user-deleterole').on('click', function () { + $("#user-deleterole-errorMsg").text(""); + $("#user-deleterole-successMsg").text(""); + if ($("#user-roles-deleterole").val().trim() == '') { + $("#user-deleterole-errorMsg").text("The Role field is required."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url: '/profile', + dataType: "json", + data: $.param({ + roles: $("#user-roles-deleterole").val(), + action: "handleDeleteRole", + _token: currentToken + }), + success: function (res) { + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#user-deleterole-errorMsg").text(res.message); + } else if (res.status == 'success') { + $("#user-deleterole-successMsg").text(res.message); + $("#user-roles-deleterole").val(''); + } + getAllRoles(); + getUserRoles(); + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-deleterole-errorMsg").text(xhr.responseText); + $("#user-deleterole-successMsg").text(""); + } + }); + }); +} + +function handleAssignUserRole() { + $('#btn-user-assignrole').on('click', function () { + $("#user-assignrole-errorMsg").text(""); + $("#user-assignrole-successMsg").text(""); + if ($("#user-roles-assignrole").val().trim() == '') { + $("#user-assignrole-errorMsg").text("The Role field is required."); + return; + } + var input = $("#user-roles-assignrole").val(); + if (!IsJsonString(input)) { + $("#user-assignrole-errorMsg").text("Invalid json in Role field."); + return; + } + $("#lr-loading").show(); + $.ajax({ + type: "POST", + url:'/profile', + dataType: "json", + data: $.param({ + uid: localStorage.getItem("LRUserID"), + roles: $("#user-roles-assignrole").val(), + action: "handleAssignUserRole", + _token: currentToken + }), + success: function (res) { + $("#lr-loading").hide(); + if (res.status == 'error') { + $("#user-assignrole-errorMsg").text(res.message); + } else if (res.status == 'success') { + $("#user-assignrole-successMsg").text(res.message); + $("#user-roles-assignrole").val(''); + } + getUserRoles(); + }, + error: function (xhr, status, error) { + $("#lr-loading").hide(); + $("#user-assignrole-errorMsg").text(xhr.responseText); + } + }); + }); +} + +function getAllRoles() { + $.ajax({ + type: "POST", + url:'/profile', + dataType: "json", + data: $.param({ + action: "getAllRoles", + _token: currentToken + }), + success: function (res) { + if (res.status == 'error') { + console.log("Get All Roles err::", res.message); + } else if (res.status == 'success') { + $('#table-allroles').html(''); + $('#table-allroles').append(''); + + if (res.result.data == null) + return; + for (var i = 0; i < res.result.data.length; i++) { + var name = res.result.data[i].Name; + $('#table-allroles').append(''); + } + } else if (res.status == 'rolesempty') { + $('#table-allroles').html(''); + } + }, + error: function (xhr, status, error) { + console.log("Get All Roles err::", xhr.responseText); + } + }); +} + +function getUserRoles() { + $.ajax({ + type: "POST", + url: '/profile', + data: $.param({ + uid: localStorage.getItem("LRUserID"), + action: "getUserRoles", + _token: currentToken + }), + dataType: "json", + success: function (res) { + if (res.status == 'error') { + console.log("Get User Roles success::", res.message); + } else if (res.status == 'success') { + $('#table-userroles').html(''); + $('#table-userroles').append(''); + + if (res.data.Roles == null) + return; + for (var i = 0; i < res.data.Roles.length; i++) { + var name = res.data.Roles[i]; + $('#table-userroles').append(''); + } + } else if (res.status == 'userrolesempty') { + $('#table-userroles').html(''); + } + }, + error: function (xhr, status, error) { + console.log("Get User Roles err::", xhr.responseText); + } + }); +} + +function IsJsonString(str) { + try { + JSON.parse(str); + } catch (e) { + return false; + } + return true; +} \ No newline at end of file diff --git a/public/js/sociallogin.js b/public/js/sociallogin.js new file mode 100644 index 0000000..f305761 --- /dev/null +++ b/public/js/sociallogin.js @@ -0,0 +1,29 @@ +var custom_interface_option = {}; +custom_interface_option.templateName = 'loginradiuscustom_tmpl'; +LRObject.util.ready(function () { + LRObject.customInterface(".interfacecontainerdiv", custom_interface_option); +}); + +if (getUrlParameter("vtype") != "oneclicksignin" && getUrlParameter("vtype") != "emailverification") { + LRObject.$hooks.register('startProcess', function () { + jQuery('#lr-loading').show(); + }); + LRObject.$hooks.register('endProcess', function () { + jQuery('#lr-loading').hide(); + }); +} +var sl_options = {}; +sl_options.onSuccess = function (res) { + if(res.access_token){ + getProfile(res.access_token, res.Profile.Uid); + } +}; +sl_options.onError = function (errors) { + $("#emailverification-message").attr('style', 'color:red'); + $("#emailverification-message").text(errors[0].Description); +}; +sl_options.container = "sociallogin-container"; + +LRObject.util.ready(function () { + LRObject.init('socialLogin', sl_options); +}); \ No newline at end of file diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/public/web.config b/public/web.config new file mode 100644 index 0000000..624c176 --- /dev/null +++ b/public/web.config @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js new file mode 100644 index 0000000..c1620c1 --- /dev/null +++ b/resources/assets/js/app.js @@ -0,0 +1,22 @@ + +/** + * First we will load all of this project's JavaScript dependencies which + * includes Vue and other libraries. It is a great starting point when + * building robust, powerful web applications using Vue and Laravel. + */ + +require('./bootstrap'); + +window.Vue = require('vue'); + +/** + * Next, we will create a fresh Vue application instance and attach it to + * the page. Then, you may begin adding components to this application + * or customize the JavaScript scaffolding to fit your unique needs. + */ + +Vue.component('example', require('./components/Example.vue')); + +const app = new Vue({ + el: '#app' +}); diff --git a/resources/assets/js/bootstrap.js b/resources/assets/js/bootstrap.js new file mode 100644 index 0000000..8e0f04e --- /dev/null +++ b/resources/assets/js/bootstrap.js @@ -0,0 +1,53 @@ + +window._ = require('lodash'); + +/** + * We'll load jQuery and the Bootstrap jQuery plugin which provides support + * for JavaScript based Bootstrap features such as modals and tabs. This + * code may be modified to fit the specific needs of your application. + */ + +try { + window.$ = window.jQuery = require('jquery'); + + require('bootstrap-sass'); +} catch (e) {} + +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +window.axios = require('axios'); + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Next we will register the CSRF Token as a common header with Axios so that + * all outgoing HTTP requests automatically have it attached. This is just + * a simple convenience so we don't have to attach every token manually. + */ + +let token = document.head.querySelector('meta[name="csrf-token"]'); + +if (token) { + window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; +} else { + console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'); +} + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo' + +// window.Pusher = require('pusher-js'); + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: 'your-pusher-key' +// }); diff --git a/resources/assets/js/components/Example.vue b/resources/assets/js/components/Example.vue new file mode 100644 index 0000000..601e61c --- /dev/null +++ b/resources/assets/js/components/Example.vue @@ -0,0 +1,23 @@ + + + diff --git a/resources/assets/sass/_variables.scss b/resources/assets/sass/_variables.scss new file mode 100644 index 0000000..53202ac --- /dev/null +++ b/resources/assets/sass/_variables.scss @@ -0,0 +1,38 @@ + +// Body +$body-bg: #f5f8fa; + +// Borders +$laravel-border-color: darken($body-bg, 10%); +$list-group-border: $laravel-border-color; +$navbar-default-border: $laravel-border-color; +$panel-default-border: $laravel-border-color; +$panel-inner-border: $laravel-border-color; + +// Brands +$brand-primary: #3097D1; +$brand-info: #8eb4cb; +$brand-success: #2ab27b; +$brand-warning: #cbb956; +$brand-danger: #bf5329; + +// Typography +$icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/"; +$font-family-sans-serif: "Raleway", sans-serif; +$font-size-base: 14px; +$line-height-base: 1.6; +$text-color: #636b6f; + +// Navbar +$navbar-default-bg: #fff; + +// Buttons +$btn-default-color: $text-color; + +// Inputs +$input-border: lighten($text-color, 40%); +$input-border-focus: lighten($brand-primary, 25%); +$input-color-placeholder: lighten($text-color, 30%); + +// Panels +$panel-default-heading-bg: #fff; diff --git a/resources/assets/sass/app.scss b/resources/assets/sass/app.scss new file mode 100644 index 0000000..63633fc --- /dev/null +++ b/resources/assets/sass/app.scss @@ -0,0 +1,9 @@ + +// Fonts +@import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600"); + +// Variables +@import "variables"; + +// Bootstrap +@import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap"; diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php new file mode 100644 index 0000000..e5506df --- /dev/null +++ b/resources/lang/en/auth.php @@ -0,0 +1,19 @@ + 'These credentials do not match our records.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/resources/lang/en/pagination.php b/resources/lang/en/pagination.php new file mode 100644 index 0000000..d481411 --- /dev/null +++ b/resources/lang/en/pagination.php @@ -0,0 +1,19 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php new file mode 100644 index 0000000..e5544d2 --- /dev/null +++ b/resources/lang/en/passwords.php @@ -0,0 +1,22 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => "We can't find a user with that e-mail address.", + +]; diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php new file mode 100644 index 0000000..edc036d --- /dev/null +++ b/resources/lang/en/validation.php @@ -0,0 +1,121 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; diff --git a/demo/README.md b/resources/views/README.md similarity index 73% rename from demo/README.md rename to resources/views/README.md index 2c0c6d6..f1c1ede 100644 --- a/demo/README.md +++ b/resources/views/README.md @@ -20,29 +20,13 @@ This document contains information and examples regarding the LoginRadius PHP SD # LoginRadius -A demo PHP web application using the PHP SDK. The following features are included: - -* Traditional Email Login -* Multi-Factor Email Login -* Passwordless Login -* Social Login -* Registration -* Email Verification -* Forgot Password -* Reset Password -* Change Password -* Set Password -* Update Account -* Multi-Factor Configuration -* Account Linking -* Custom Object Management -* Roles Management +A demo PHP web application using the PHP SDK. ## Configuration -1. Download the demo, src/LoginRadiusSDK from php sdk repo or clone the whole repo. +1. Download the demo, src/loginradiusSDK from php sdk repo or clone the whole repo. 2. Upload these on server and wrapped in one directory. 3. Set your LoginRadius credentials on the client and server side: * Server side: `demo/ajax_handler/config.php` - * Client side: `demo/js/options.js` -4. Demo will appear on `//demo` + * Client side: `demo/assets/js/options.js` +4. Demo will appear on `http://localhost/test/demo` diff --git a/resources/views/account.blade.php b/resources/views/account.blade.php new file mode 100644 index 0000000..83931e9 --- /dev/null +++ b/resources/views/account.blade.php @@ -0,0 +1,17 @@ +@extends('layouts.profile.home') +@section('content') +
+
+
+
Object IDCustom Object
' + id + '' + JSON.stringify(custobj) + '
Role
' + name + '
Role
' + name + '
+ + + +
First Name:
Last Name:
About:
+
+ + +
+ +
- -