diff --git a/.gitignore b/.gitignore
index 466b5d2..4dc1707 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
/node_modules
+/public/build
/public/hot
/public/storage
/storage/*.key
diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results
index ac44944..e8ae2f2 100644
--- a/.phpunit.cache/test-results
+++ b/.phpunit.cache/test-results
@@ -1 +1 @@
-{"version":1,"defects":{"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testCreate":5,"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testIndex":5,"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testDestroy":5,"Tests\\Feature\\Controllers\\Ajax\\FileUploadControllerTest::testFileUpload":8,"Tests\\Feature\\Controllers\\Ajax\\SubscriptionControllerTest::testCreateSubsciption":1,"Tests\\Feature\\Controllers\\Ajax\\SubscriptionControllerTest::testUpdatePaymentMethod":1,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingSubscribe":1,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingGetDetails":1,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingPaymentMethod":1,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingCoupon":1,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testTwoFactorEmail":8,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testGoogleTwoFactor":5,"Tests\\Feature\\Controllers\\Auth\\TwoFactorControllerTest::testGetTwoFactorPage":8,"Tests\\Feature\\Controllers\\Auth\\TwoFactorControllerTest::testVerifyTwoFactorEmail":8,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testCreate":8,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testDestroy":8,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testAuthenticatorTwoFactor":8,"Tests\\Feature\\Controllers\\Auth\\RegistrationControllerTest::testPostRegistration":8,"Tests\\Feature\\Controllers\\Auth\\RecoveryControllerTest::testVerifyRecovery":8,"Tests\\Feature\\Controllers\\Ajax\\FileUploadControllerTest::testImageUpload":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testLeaveTeam":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testRemoveTeamMember":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testDelete":8,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testAccept":8,"Tests\\Feature\\Controllers\\User\\ChangePasswordControllerTest::testSecurity":8,"Tests\\Feature\\Controllers\\User\\ChangePasswordControllerTest::testUpdatePassword":8,"Tests\\Unit\\InviteServiceTest::testValidateInvitation":8,"Tests\\Feature\\Controllers\\InvitesControllerTest::testResend":8,"Tests\\Feature\\Controllers\\InvitesControllerTest::testRevoke":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testShow":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testEditMember":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testUpdateMember":8,"Tests\\Unit\\ActivityServiceTest::testLog":8,"Tests\\Unit\\InviteServiceTest::testCreate":8,"Tests\\Unit\\TeamServiceTest::testCreate":8,"Tests\\Unit\\TeamServiceTest::testUpdate":8,"Tests\\Unit\\TeamServiceTest::testInvite":8,"Tests\\Unit\\TeamServiceTest::testLeaveTeam":8,"Tests\\Unit\\TeamServiceTest::testRemoveMember":8,"Tests\\Unit\\TeamServiceTest::testDeleteTeam":8,"Tests\\Feature\\Controllers\\Admin\\DashboardControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testCreate":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testStore":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testEdit":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testUpdate":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testDelete":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testSearch":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testGetInvite":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testPostInvite":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testEdit":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testUpdate":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testLoginAsUser":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testReturnToLoginFromUser":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testDelete":8,"Tests\\Feature\\Controllers\\Ajax\\CookiePolicyControllerTest::testAccept":8,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testMe":8,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testMeWithBearerToken":8,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testUpdate":8,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testDestroy":8,"Tests\\Feature\\Controllers\\Auth\\ConfirmsPasswordControllerTest::testGetConfirmPasswordPage":8,"Tests\\Feature\\Controllers\\Auth\\ForgotPasswordControllerTest::testGetForgotPassword":8,"Tests\\Feature\\Controllers\\Auth\\LoginControllerTest::testGetLoginPage":8,"Tests\\Feature\\Controllers\\Auth\\RecoveryControllerTest::testGetRecoveryPage":8,"Tests\\Feature\\Controllers\\Auth\\RegistrationControllerTest::testGetRegistration":8,"Tests\\Feature\\Controllers\\Auth\\ResetPasswordControllerTest::testGetResetPasswordPage":8,"Tests\\Feature\\Controllers\\Auth\\VerificationControllerTest::testGetVerificationPage":8,"Tests\\Feature\\Controllers\\DashboardControllerTest::testDashboard":8,"Tests\\Feature\\Controllers\\PagesControllerTest::testHome":8,"Tests\\Feature\\Controllers\\PagesControllerTest::testSupport":8,"Tests\\Feature\\Controllers\\PagesControllerTest::testPrivacyPolicy":8,"Tests\\Feature\\Controllers\\PagesControllerTest::testTermsOfService":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testInviteMember":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testIndexWithSubcription":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testCreate":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testStore":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testEdit":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testUpdate":8,"Tests\\Feature\\Controllers\\User\\DestroyControllerTest::testDestroy":8,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testReject":8,"Tests\\Feature\\Controllers\\User\\LogoutSessionsControllerTest::testSessionLogout":8,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testMarkAsRead":8,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testDelete":8,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testDeleteAll":8,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testSettings":8,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testUpdateSettings":8,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testUpdateUserAvatar":8,"Tests\\Feature\\Helpers\\ActivityHelperTest::testActivityLog":8,"Tests\\Feature\\Helpers\\NotificationHelperTest::testAppNotify":8,"Tests\\Feature\\Helpers\\NotificationHelperTest::testEmailNotifyDisabled":8,"Tests\\Feature\\Helpers\\NotificationHelperTest::testPusherGeneral":8,"Tests\\Feature\\Helpers\\NotificationHelperTest::testPusherUser":8,"Tests\\Feature\\Resources\\UserResourceTest::testUserResource":8},"times":{"Tests\\Unit\\ActivityServiceTest::testLog":0.003,"Tests\\Unit\\InviteServiceTest::testCreate":0.005,"Tests\\Unit\\InviteServiceTest::testValidateInvitation":0.001,"Tests\\Unit\\TeamServiceTest::testCreate":0,"Tests\\Unit\\TeamServiceTest::testUpdate":0.001,"Tests\\Unit\\TeamServiceTest::testInvite":0.001,"Tests\\Unit\\TeamServiceTest::testLeaveTeam":0.001,"Tests\\Unit\\TeamServiceTest::testRemoveMember":0.001,"Tests\\Unit\\TeamServiceTest::testDeleteTeam":0.002,"Tests\\Feature\\Controllers\\Admin\\DashboardControllerTest::testIndex":0.044,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testIndex":0.014,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testCreate":0.014,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testStore":0.005,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testEdit":0.014,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testUpdate":0.002,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testDelete":0.002,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testIndex":0.013,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testSearch":0.013,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testGetInvite":0.013,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testPostInvite":0.031,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testEdit":0.014,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testUpdate":0.002,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testLoginAsUser":0.002,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testReturnToLoginFromUser":0.003,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testDelete":0.002,"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testCreate":0.008,"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testIndex":0.001,"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testDestroy":0.001,"Tests\\Feature\\Controllers\\Ajax\\CookiePolicyControllerTest::testAccept":0.001,"Tests\\Feature\\Controllers\\Ajax\\FileUploadControllerTest::testFileUpload":0.01,"Tests\\Feature\\Controllers\\Ajax\\SubscriptionControllerTest::testCreateSubsciption":0.003,"Tests\\Feature\\Controllers\\Ajax\\SubscriptionControllerTest::testUpdatePaymentMethod":0.001,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testMe":0.012,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testMeWithBearerToken":0.005,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testUpdate":0.004,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testDestroy":0.002,"Tests\\Feature\\Controllers\\Auth\\ConfirmsPasswordControllerTest::testGetConfirmPasswordPage":0.012,"Tests\\Feature\\Controllers\\Auth\\ForgotPasswordControllerTest::testGetForgotPassword":0.004,"Tests\\Feature\\Controllers\\Auth\\LoginControllerTest::testGetLoginPage":0.005,"Tests\\Feature\\Controllers\\Auth\\RegistrationControllerTest::testGetRegistration":0.004,"Tests\\Feature\\Controllers\\Auth\\ResetPasswordControllerTest::testGetResetPasswordPage":0.003,"Tests\\Feature\\Controllers\\Auth\\VerificationControllerTest::testGetVerificationPage":0.001,"Tests\\Feature\\Controllers\\DashboardControllerTest::testDashboard":0.02,"Tests\\Feature\\Controllers\\InvitesControllerTest::testResend":0.002,"Tests\\Feature\\Controllers\\InvitesControllerTest::testRevoke":0.002,"Tests\\Feature\\Controllers\\PagesControllerTest::testHome":0.006,"Tests\\Feature\\Controllers\\PagesControllerTest::testSupport":0.012,"Tests\\Feature\\Controllers\\PagesControllerTest::testPrivacyPolicy":0.012,"Tests\\Feature\\Controllers\\PagesControllerTest::testTermsOfService":0.011,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testShow":0.019,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testEditMember":0.014,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testUpdateMember":0.004,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testInviteMember":0.002,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testLeaveTeam":0.002,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testRemoveTeamMember":0.003,"Tests\\Feature\\Controllers\\TeamsControllerTest::testIndex":0.012,"Tests\\Feature\\Controllers\\TeamsControllerTest::testIndexWithSubcription":0.012,"Tests\\Feature\\Controllers\\TeamsControllerTest::testCreate":0.013,"Tests\\Feature\\Controllers\\TeamsControllerTest::testStore":0.002,"Tests\\Feature\\Controllers\\TeamsControllerTest::testEdit":0.017,"Tests\\Feature\\Controllers\\TeamsControllerTest::testUpdate":0.003,"Tests\\Feature\\Controllers\\TeamsControllerTest::testDelete":0.003,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingSubscribe":0,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingGetDetails":0,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingPaymentMethod":0.001,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingCoupon":0.001,"Tests\\Feature\\Controllers\\User\\ChangePasswordControllerTest::testSecurity":0.014,"Tests\\Feature\\Controllers\\User\\ChangePasswordControllerTest::testUpdatePassword":0.087,"Tests\\Feature\\Controllers\\User\\DestroyControllerTest::testDestroy":0.006,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testIndex":0.012,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testAccept":0.002,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testReject":0.01,"Tests\\Feature\\Controllers\\User\\LogoutSessionsControllerTest::testSessionLogout":0.004,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testIndex":0.012,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testMarkAsRead":0.002,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testDelete":0.002,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testDeleteAll":0.002,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testSettings":0.018,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testUpdateSettings":0.002,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testUpdateUserAvatar":0.003,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testTwoFactorEmail":0.002,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testGoogleTwoFactor":0,"Tests\\Feature\\Helpers\\ActivityHelperTest::testActivityLog":0.001,"Tests\\Feature\\Helpers\\NotificationHelperTest::testAppNotify":0,"Tests\\Feature\\Helpers\\NotificationHelperTest::testEmailNotifyDisabled":0,"Tests\\Feature\\Helpers\\NotificationHelperTest::testPusherGeneral":0.001,"Tests\\Feature\\Helpers\\NotificationHelperTest::testPusherUser":0,"Tests\\Feature\\Resources\\UserResourceTest::testUserResource":0,"Tests\\Feature\\Controllers\\Auth\\TwoFactorControllerTest::testGetTwoFactorPage":0.006,"Tests\\Feature\\Controllers\\Auth\\TwoFactorControllerTest::testVerifyTwoFactorEmail":0.002,"Tests\\Feature\\Controllers\\Auth\\RecoveryControllerTest::testGetRecoveryPage":0.006,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testCreate":0.002,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testIndex":0.016,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testDestroy":0.003,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testAuthenticatorTwoFactor":0.002,"Tests\\Feature\\Controllers\\Auth\\RegistrationControllerTest::testPostRegistration":0.004,"Tests\\Feature\\Controllers\\Auth\\RecoveryControllerTest::testVerifyRecovery":0.004,"Tests\\Feature\\Controllers\\Ajax\\FileUploadControllerTest::testImageUpload":0.005}}
\ No newline at end of file
+{"version":1,"defects":{"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testCreate":5,"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testIndex":5,"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testDestroy":5,"Tests\\Feature\\Controllers\\Ajax\\FileUploadControllerTest::testFileUpload":8,"Tests\\Feature\\Controllers\\Ajax\\SubscriptionControllerTest::testCreateSubsciption":1,"Tests\\Feature\\Controllers\\Ajax\\SubscriptionControllerTest::testUpdatePaymentMethod":1,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingSubscribe":1,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingGetDetails":1,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingPaymentMethod":1,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingCoupon":1,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testTwoFactorEmail":8,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testGoogleTwoFactor":5,"Tests\\Feature\\Controllers\\Auth\\TwoFactorControllerTest::testGetTwoFactorPage":8,"Tests\\Feature\\Controllers\\Auth\\TwoFactorControllerTest::testVerifyTwoFactorEmail":8,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testCreate":8,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testDestroy":8,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testAuthenticatorTwoFactor":8,"Tests\\Feature\\Controllers\\Auth\\RegistrationControllerTest::testPostRegistration":8,"Tests\\Feature\\Controllers\\Auth\\RecoveryControllerTest::testVerifyRecovery":8,"Tests\\Feature\\Controllers\\Ajax\\FileUploadControllerTest::testImageUpload":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testLeaveTeam":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testRemoveTeamMember":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testDelete":8,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testAccept":8,"Tests\\Feature\\Controllers\\User\\ChangePasswordControllerTest::testSecurity":8,"Tests\\Feature\\Controllers\\User\\ChangePasswordControllerTest::testUpdatePassword":8,"Tests\\Unit\\InviteServiceTest::testValidateInvitation":8,"Tests\\Feature\\Controllers\\InvitesControllerTest::testResend":8,"Tests\\Feature\\Controllers\\InvitesControllerTest::testRevoke":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testShow":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testEditMember":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testUpdateMember":8,"Tests\\Unit\\ActivityServiceTest::testLog":8,"Tests\\Unit\\InviteServiceTest::testCreate":8,"Tests\\Unit\\TeamServiceTest::testCreate":8,"Tests\\Unit\\TeamServiceTest::testUpdate":8,"Tests\\Unit\\TeamServiceTest::testInvite":8,"Tests\\Unit\\TeamServiceTest::testLeaveTeam":8,"Tests\\Unit\\TeamServiceTest::testRemoveMember":8,"Tests\\Unit\\TeamServiceTest::testDeleteTeam":8,"Tests\\Feature\\Controllers\\Admin\\DashboardControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testCreate":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testStore":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testEdit":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testUpdate":8,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testDelete":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testSearch":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testGetInvite":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testPostInvite":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testEdit":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testUpdate":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testLoginAsUser":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testReturnToLoginFromUser":8,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testDelete":8,"Tests\\Feature\\Controllers\\Ajax\\CookiePolicyControllerTest::testAccept":8,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testMe":8,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testMeWithBearerToken":8,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testUpdate":8,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testDestroy":8,"Tests\\Feature\\Controllers\\Auth\\ConfirmsPasswordControllerTest::testGetConfirmPasswordPage":8,"Tests\\Feature\\Controllers\\Auth\\ForgotPasswordControllerTest::testGetForgotPassword":8,"Tests\\Feature\\Controllers\\Auth\\LoginControllerTest::testGetLoginPage":8,"Tests\\Feature\\Controllers\\Auth\\RecoveryControllerTest::testGetRecoveryPage":8,"Tests\\Feature\\Controllers\\Auth\\RegistrationControllerTest::testGetRegistration":8,"Tests\\Feature\\Controllers\\Auth\\ResetPasswordControllerTest::testGetResetPasswordPage":8,"Tests\\Feature\\Controllers\\Auth\\VerificationControllerTest::testGetVerificationPage":8,"Tests\\Feature\\Controllers\\DashboardControllerTest::testDashboard":8,"Tests\\Feature\\Controllers\\PagesControllerTest::testHome":8,"Tests\\Feature\\Controllers\\PagesControllerTest::testSupport":8,"Tests\\Feature\\Controllers\\PagesControllerTest::testPrivacyPolicy":8,"Tests\\Feature\\Controllers\\PagesControllerTest::testTermsOfService":8,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testInviteMember":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testIndexWithSubcription":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testCreate":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testStore":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testEdit":8,"Tests\\Feature\\Controllers\\TeamsControllerTest::testUpdate":8,"Tests\\Feature\\Controllers\\User\\DestroyControllerTest::testDestroy":8,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testReject":8,"Tests\\Feature\\Controllers\\User\\LogoutSessionsControllerTest::testSessionLogout":8,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testIndex":8,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testMarkAsRead":8,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testDelete":8,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testDeleteAll":8,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testSettings":8,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testUpdateSettings":8,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testUpdateUserAvatar":8,"Tests\\Feature\\Helpers\\ActivityHelperTest::testActivityLog":8,"Tests\\Feature\\Helpers\\NotificationHelperTest::testAppNotify":8,"Tests\\Feature\\Helpers\\NotificationHelperTest::testEmailNotifyDisabled":8,"Tests\\Feature\\Helpers\\NotificationHelperTest::testPusherGeneral":8,"Tests\\Feature\\Helpers\\NotificationHelperTest::testPusherUser":8,"Tests\\Feature\\Resources\\UserResourceTest::testUserResource":8},"times":{"Tests\\Unit\\ActivityServiceTest::testLog":0.003,"Tests\\Unit\\InviteServiceTest::testCreate":0.005,"Tests\\Unit\\InviteServiceTest::testValidateInvitation":0.001,"Tests\\Unit\\TeamServiceTest::testCreate":0,"Tests\\Unit\\TeamServiceTest::testUpdate":0.001,"Tests\\Unit\\TeamServiceTest::testInvite":0.001,"Tests\\Unit\\TeamServiceTest::testLeaveTeam":0.001,"Tests\\Unit\\TeamServiceTest::testRemoveMember":0.001,"Tests\\Unit\\TeamServiceTest::testDeleteTeam":0.002,"Tests\\Feature\\Controllers\\Admin\\DashboardControllerTest::testIndex":0.044,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testIndex":0.014,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testCreate":0.013,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testStore":0.005,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testEdit":0.013,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testUpdate":0.002,"Tests\\Feature\\Controllers\\Admin\\RoleControllerTest::testDelete":0.002,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testIndex":0.014,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testSearch":0.013,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testGetInvite":0.014,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testPostInvite":0.031,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testEdit":0.013,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testUpdate":0.002,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testLoginAsUser":0.002,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testReturnToLoginFromUser":0.003,"Tests\\Feature\\Controllers\\Admin\\UserControllerTest::testDelete":0.002,"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testCreate":0.008,"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testIndex":0.001,"Tests\\Feature\\Controllers\\Ajax\\ApiTokenControllerTest::testDestroy":0.001,"Tests\\Feature\\Controllers\\Ajax\\CookiePolicyControllerTest::testAccept":0.001,"Tests\\Feature\\Controllers\\Ajax\\FileUploadControllerTest::testFileUpload":0.01,"Tests\\Feature\\Controllers\\Ajax\\SubscriptionControllerTest::testCreateSubsciption":0.003,"Tests\\Feature\\Controllers\\Ajax\\SubscriptionControllerTest::testUpdatePaymentMethod":0.001,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testMe":0.011,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testMeWithBearerToken":0.006,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testUpdate":0.005,"Tests\\Feature\\Controllers\\Api\\UsersControllerTest::testDestroy":0.002,"Tests\\Feature\\Controllers\\Auth\\ConfirmsPasswordControllerTest::testGetConfirmPasswordPage":0.012,"Tests\\Feature\\Controllers\\Auth\\ForgotPasswordControllerTest::testGetForgotPassword":0.004,"Tests\\Feature\\Controllers\\Auth\\LoginControllerTest::testGetLoginPage":0.005,"Tests\\Feature\\Controllers\\Auth\\RegistrationControllerTest::testGetRegistration":0.005,"Tests\\Feature\\Controllers\\Auth\\ResetPasswordControllerTest::testGetResetPasswordPage":0.003,"Tests\\Feature\\Controllers\\Auth\\VerificationControllerTest::testGetVerificationPage":0.001,"Tests\\Feature\\Controllers\\DashboardControllerTest::testDashboard":0.02,"Tests\\Feature\\Controllers\\InvitesControllerTest::testResend":0.002,"Tests\\Feature\\Controllers\\InvitesControllerTest::testRevoke":0.002,"Tests\\Feature\\Controllers\\PagesControllerTest::testHome":0.006,"Tests\\Feature\\Controllers\\PagesControllerTest::testSupport":0.011,"Tests\\Feature\\Controllers\\PagesControllerTest::testPrivacyPolicy":0.011,"Tests\\Feature\\Controllers\\PagesControllerTest::testTermsOfService":0.01,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testShow":0.02,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testEditMember":0.014,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testUpdateMember":0.003,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testInviteMember":0.003,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testLeaveTeam":0.002,"Tests\\Feature\\Controllers\\TeamMembersControllerTest::testRemoveTeamMember":0.002,"Tests\\Feature\\Controllers\\TeamsControllerTest::testIndex":0.012,"Tests\\Feature\\Controllers\\TeamsControllerTest::testIndexWithSubcription":0.011,"Tests\\Feature\\Controllers\\TeamsControllerTest::testCreate":0.012,"Tests\\Feature\\Controllers\\TeamsControllerTest::testStore":0.002,"Tests\\Feature\\Controllers\\TeamsControllerTest::testEdit":0.016,"Tests\\Feature\\Controllers\\TeamsControllerTest::testUpdate":0.002,"Tests\\Feature\\Controllers\\TeamsControllerTest::testDelete":0.003,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingSubscribe":0,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingGetDetails":0,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingPaymentMethod":0.001,"Tests\\Feature\\Controllers\\User\\BillingControllerTest::testBillingCoupon":0.001,"Tests\\Feature\\Controllers\\User\\ChangePasswordControllerTest::testSecurity":0.015,"Tests\\Feature\\Controllers\\User\\ChangePasswordControllerTest::testUpdatePassword":0.406,"Tests\\Feature\\Controllers\\User\\DestroyControllerTest::testDestroy":0.01,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testIndex":0.012,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testAccept":0.002,"Tests\\Feature\\Controllers\\User\\InvitesControllerTest::testReject":0.01,"Tests\\Feature\\Controllers\\User\\LogoutSessionsControllerTest::testSessionLogout":0.004,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testIndex":0.012,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testMarkAsRead":0.002,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testDelete":0.002,"Tests\\Feature\\Controllers\\User\\NotificationControllerTest::testDeleteAll":0.002,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testSettings":0.019,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testUpdateSettings":0.002,"Tests\\Feature\\Controllers\\User\\SettingsControllerTest::testUpdateUserAvatar":0.002,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testTwoFactorEmail":0.002,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testGoogleTwoFactor":0,"Tests\\Feature\\Helpers\\ActivityHelperTest::testActivityLog":0.001,"Tests\\Feature\\Helpers\\NotificationHelperTest::testAppNotify":0,"Tests\\Feature\\Helpers\\NotificationHelperTest::testEmailNotifyDisabled":0,"Tests\\Feature\\Helpers\\NotificationHelperTest::testPusherGeneral":0.001,"Tests\\Feature\\Helpers\\NotificationHelperTest::testPusherUser":0,"Tests\\Feature\\Resources\\UserResourceTest::testUserResource":0,"Tests\\Feature\\Controllers\\Auth\\TwoFactorControllerTest::testGetTwoFactorPage":0.006,"Tests\\Feature\\Controllers\\Auth\\TwoFactorControllerTest::testVerifyTwoFactorEmail":0.002,"Tests\\Feature\\Controllers\\Auth\\RecoveryControllerTest::testGetRecoveryPage":0.006,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testCreate":0.002,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testIndex":0.016,"Tests\\Feature\\Controllers\\User\\ApiTokenControllerTest::testDestroy":0.003,"Tests\\Feature\\Controllers\\User\\UserTwoFactorTest::testAuthenticatorTwoFactor":0.002,"Tests\\Feature\\Controllers\\Auth\\RegistrationControllerTest::testPostRegistration":0.004,"Tests\\Feature\\Controllers\\Auth\\RecoveryControllerTest::testVerifyRecovery":0.004,"Tests\\Feature\\Controllers\\Ajax\\FileUploadControllerTest::testImageUpload":0.005}}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 27d50a4..337844e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,11 @@ All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
----
+## [v2.20.2] - 2024-09-12
+
+### Added
+- Enhancement for response times
+
## [v2.20.1] - 2024-08-27
### Fixed
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index 1e2b5c4..0ccb72e 100644
--- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -36,6 +36,7 @@ class LoginController extends Controller
public function __construct()
{
$this->middleware('guest')->except('logout');
+ $this->middleware('auth')->only('logout');
}
/**
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index f29a968..48803be 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -23,6 +23,7 @@ class Kernel extends HttpKernel
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\Bepsvpt\SecureHeaders\SecureHeadersMiddleware::class,
+ \Fahlisaputra\Minify\Middleware\MinifyHtml::class,
];
/**
diff --git a/composer.json b/composer.json
index dd10754..c822363 100644
--- a/composer.json
+++ b/composer.json
@@ -15,6 +15,7 @@
"barryvdh/laravel-debugbar": "^3.6",
"bepsvpt/secure-headers": "^7.2",
"dedoc/scramble": "^0.9.0",
+ "fahlisaputra/laravel-minify": "^1.1",
"grafite/auth": "^1.0",
"grafite/blacksmith": "^1.0",
"grafite/charts": "^2.0",
diff --git a/composer.lock b/composer.lock
index 894f2e1..5601e64 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "c0dfe7056097e488bc2a95d2fa3e3c7b",
+ "content-hash": "aaed042e25c59eac934b5e9a20cf02b3",
"packages": [
{
"name": "aws/aws-crt-php",
@@ -1530,6 +1530,72 @@
],
"time": "2023-10-06T06:47:41+00:00"
},
+ {
+ "name": "fahlisaputra/laravel-minify",
+ "version": "v1.1.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fahlisaputra/laravel-minify.git",
+ "reference": "6246821a15b70a5f91928c7b684837fa63bf0081"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fahlisaputra/laravel-minify/zipball/6246821a15b70a5f91928c7b684837fa63bf0081",
+ "reference": "6246821a15b70a5f91928c7b684837fa63bf0081",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/http": "^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0",
+ "illuminate/support": "^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0",
+ "illuminate/view": "^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0",
+ "php": "^7.2.5 || ^8.0 || ^8.1 || ^8.2 || ^8.3"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Fahlisaputra\\Minify\\MinifyServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Helpers.php"
+ ],
+ "psr-4": {
+ "Fahlisaputra\\Minify\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "fahlisaputra",
+ "email": "saputra@fahli.net"
+ }
+ ],
+ "description": "Minify your blade views, html, css and js files on the fly for Laravel 6, 7, 8, 9 and 10",
+ "keywords": [
+ "css-minifier",
+ "html-minifier",
+ "js-minifier",
+ "js-obfuscate",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/fahlisaputra/laravel-minify/issues",
+ "source": "https://github.com/fahlisaputra/laravel-minify/tree/v1.1.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/fahlisaputra",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-14T02:52:29+00:00"
+ },
{
"name": "fruitcake/php-cors",
"version": "v1.3.0",
diff --git a/phpunit.xml b/phpunit.xml
index e161dfe..ed26c3f 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -13,6 +13,7 @@
+