daevin 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/Daevin_test/.editorconfig +15 -0
  2. package/Daevin_test/.env.example +92 -0
  3. package/Daevin_test/.gitattributes +10 -0
  4. package/Daevin_test/CODE_OF_CONDUCT.md +3 -0
  5. package/Daevin_test/CONTRIBUTING.md +3 -0
  6. package/Daevin_test/LICENSE +21 -0
  7. package/Daevin_test/README.md +314 -0
  8. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/ApiLoginProxyForWebClientAction.php +52 -0
  9. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/ApiLogoutAction.php +23 -0
  10. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/ApiRefreshProxyForWebClientAction.php +47 -0
  11. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/ForgotPasswordAction.php +43 -0
  12. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/GetAuthenticatedUserAction.php +19 -0
  13. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/RegisterUserAction.php +39 -0
  14. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/ResetPasswordAction.php +61 -0
  15. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/SendVerificationEmailAction.php +19 -0
  16. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/VerifyEmailAction.php +43 -0
  17. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/WebLoginAction.php +46 -0
  18. package/Daevin_test/app/Containers/AppSection/Authentication/Actions/WebLogoutAction.php +17 -0
  19. package/Daevin_test/app/Containers/AppSection/Authentication/Classes/LoginCustomAttribute.php +97 -0
  20. package/Daevin_test/app/Containers/AppSection/Authentication/Configs/appSection-authentication.php +117 -0
  21. package/Daevin_test/app/Containers/AppSection/Authentication/Exceptions/EmailNotVerifiedException.php +12 -0
  22. package/Daevin_test/app/Containers/AppSection/Authentication/Exceptions/InvalidEmailVerificationDataException.php +12 -0
  23. package/Daevin_test/app/Containers/AppSection/Authentication/Exceptions/InvalidResetPasswordTokenException.php +12 -0
  24. package/Daevin_test/app/Containers/AppSection/Authentication/Exceptions/LoginFailedException.php +12 -0
  25. package/Daevin_test/app/Containers/AppSection/Authentication/Exceptions/RefreshTokenMissingException.php +12 -0
  26. package/Daevin_test/app/Containers/AppSection/Authentication/Mails/ForgotPassword.php +32 -0
  27. package/Daevin_test/app/Containers/AppSection/Authentication/Mails/Templates/forgot-password.blade.php +73 -0
  28. package/Daevin_test/app/Containers/AppSection/Authentication/Middlewares/RedirectIfAuthenticated.php +35 -0
  29. package/Daevin_test/app/Containers/AppSection/Authentication/Notifications/EmailVerified.php +26 -0
  30. package/Daevin_test/app/Containers/AppSection/Authentication/Notifications/PasswordReset.php +26 -0
  31. package/Daevin_test/app/Containers/AppSection/Authentication/Notifications/VerifyEmail.php +49 -0
  32. package/Daevin_test/app/Containers/AppSection/Authentication/Notifications/Welcome.php +25 -0
  33. package/Daevin_test/app/Containers/AppSection/Authentication/Providers/AuthServiceProvider.php +76 -0
  34. package/Daevin_test/app/Containers/AppSection/Authentication/Providers/MainServiceProvider.php +32 -0
  35. package/Daevin_test/app/Containers/AppSection/Authentication/Providers/MiddlewareServiceProvider.php +19 -0
  36. package/Daevin_test/app/Containers/AppSection/Authentication/README.md +1 -0
  37. package/Daevin_test/app/Containers/AppSection/Authentication/Tasks/CallOAuthServerTask.php +36 -0
  38. package/Daevin_test/app/Containers/AppSection/Authentication/Tasks/CreatePasswordResetTokenTask.php +14 -0
  39. package/Daevin_test/app/Containers/AppSection/Authentication/Tasks/CreateUserByCredentialsTask.php +34 -0
  40. package/Daevin_test/app/Containers/AppSection/Authentication/Tasks/LoginTask.php +14 -0
  41. package/Daevin_test/app/Containers/AppSection/Authentication/Tasks/MakeRefreshCookieTask.php +25 -0
  42. package/Daevin_test/app/Containers/AppSection/Authentication/Tasks/SendVerificationEmailTask.php +16 -0
  43. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Stubs/oauth-private.key +51 -0
  44. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Stubs/oauth-public.key +14 -0
  45. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/TestCase.php +18 -0
  46. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Unit/CreatePasswordResetTokenTaskTest.php +27 -0
  47. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Unit/CreateUserByCredentialsTaskTest.php +42 -0
  48. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Unit/ForgotPasswordActionTest.php +28 -0
  49. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Unit/LoginCustomAttributeTest.php +48 -0
  50. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Unit/RedirectIfAuthenticatedMiddlewareTest.php +44 -0
  51. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Unit/RegisterUserActionTest.php +64 -0
  52. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Unit/ResetPasswordActionTest.php +83 -0
  53. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Unit/SendVerificationEmailTaskTest.php +40 -0
  54. package/Daevin_test/app/Containers/AppSection/Authentication/Tests/Unit/WebLoginActionTest.php +75 -0
  55. package/Daevin_test/app/Containers/AppSection/Authentication/Traits/AuthenticationTrait.php +25 -0
  56. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Controllers/ForgotPasswordController.php +24 -0
  57. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Controllers/GetAuthenticatedUserController.php +24 -0
  58. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Controllers/LoginProxyForWebClientController.php +33 -0
  59. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Controllers/LogoutController.php +25 -0
  60. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Controllers/RefreshProxyForWebClientController.php +35 -0
  61. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Controllers/RegisterUserController.php +24 -0
  62. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Controllers/ResetPasswordController.php +30 -0
  63. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Controllers/SendVerificationEmailController.php +22 -0
  64. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Controllers/VerifyEmailController.php +26 -0
  65. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Requests/ForgotPasswordRequest.php +50 -0
  66. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Requests/GetAuthenticatedUserRequest.php +45 -0
  67. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Requests/LoginProxyPasswordGrantRequest.php +57 -0
  68. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Requests/LogoutRequest.php +51 -0
  69. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Requests/RefreshProxyRequest.php +51 -0
  70. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Requests/RegisterUserRequest.php +61 -0
  71. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Requests/ResetPasswordRequest.php +55 -0
  72. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Requests/SendVerificationEmailRequest.php +56 -0
  73. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Requests/VerifyEmailRequest.php +51 -0
  74. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/ForgotPassword.v1.public.php +26 -0
  75. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/GetAuthenticatedUser.v1.private.php +23 -0
  76. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/LoginProxyForWebClient.v1.public.php +30 -0
  77. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/LoginUsingCredentialGrant.v1.public.php +29 -0
  78. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/LoginUsingPasswordGrant.v1.private.php +31 -0
  79. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/Logout.v1.public.php +26 -0
  80. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/RefreshProxyForWebClient.v1.public.php +29 -0
  81. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/RegisterUser.v1.private.php +38 -0
  82. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/ResetPassword.v1.public.php +37 -0
  83. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/SendVerificationEmail.v1.public.php +32 -0
  84. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Routes/VerifyEmail.v1.public.php +35 -0
  85. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/ApiTestCase.php +74 -0
  86. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/ApiLoginProxyForWebClientTest.php +129 -0
  87. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/ApiLogoutTest.php +28 -0
  88. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/ApiRefreshProxyForWebClientTest.php +86 -0
  89. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/ForgotPasswordTest.php +56 -0
  90. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/GetAuthenticatedUserTest.php +76 -0
  91. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/RegisterUserTest.php +208 -0
  92. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/ResetPasswordTest.php +79 -0
  93. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/SendVerificationEmailTest.php +95 -0
  94. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/Stubs/oauth-private.key +51 -0
  95. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/Stubs/oauth-public.key +14 -0
  96. package/Daevin_test/app/Containers/AppSection/Authentication/UI/API/Tests/Functional/VerifyEmailTest.php +84 -0
  97. package/Daevin_test/app/Containers/AppSection/Authentication/UI/WEB/Controllers/LoginController.php +39 -0
  98. package/Daevin_test/app/Containers/AppSection/Authentication/UI/WEB/Controllers/LogoutController.php +25 -0
  99. package/Daevin_test/app/Containers/AppSection/Authentication/UI/WEB/Requests/LoginRequest.php +54 -0
  100. package/Daevin_test/app/Containers/AppSection/Authentication/UI/WEB/Requests/LogoutRequest.php +50 -0
  101. package/Daevin_test/app/Containers/AppSection/Authentication/UI/WEB/Routes/GetLogin.v1.public.php +8 -0
  102. package/Daevin_test/app/Containers/AppSection/Authentication/UI/WEB/Routes/PostLogin.v1.public.php +8 -0
  103. package/Daevin_test/app/Containers/AppSection/Authentication/UI/WEB/Routes/PostLogout.php +7 -0
  104. package/Daevin_test/app/Containers/AppSection/Authentication/UI/WEB/Views/login.blade.php +121 -0
  105. package/Daevin_test/app/Containers/AppSection/Authentication/composer.json +11 -0
  106. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/AssignRolesToUserAction.php +32 -0
  107. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/AttachPermissionsToRoleAction.php +31 -0
  108. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/AttachPermissionsToUserAction.php +31 -0
  109. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/CreatePermissionAction.php +22 -0
  110. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/CreateRoleAction.php +22 -0
  111. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/DeleteRoleAction.php +22 -0
  112. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/DetachPermissionsFromRoleAction.php +30 -0
  113. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/DetachPermissionsFromUserAction.php +31 -0
  114. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/FindPermissionAction.php +22 -0
  115. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/FindRoleAction.php +22 -0
  116. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/GetAllPermissionsAction.php +21 -0
  117. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/GetAllRolesAction.php +21 -0
  118. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/GetRolePermissionsAction.php +23 -0
  119. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/GetUserPermissionsAction.php +23 -0
  120. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/GetUserRolesAction.php +23 -0
  121. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/RevokeRolesFromUserAction.php +40 -0
  122. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/SyncPermissionsOnRoleAction.php +33 -0
  123. package/Daevin_test/app/Containers/AppSection/Authorization/Actions/SyncUserRolesAction.php +33 -0
  124. package/Daevin_test/app/Containers/AppSection/Authorization/Configs/appSection-authorization.php +24 -0
  125. package/Daevin_test/app/Containers/AppSection/Authorization/Configs/permission.php +161 -0
  126. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Factories/PermissionFactory.php +19 -0
  127. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Factories/RoleFactory.php +28 -0
  128. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Migrations/2016_12_29_201047_create_permission_tables.php +141 -0
  129. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Migrations/2017_04_22_122453_add_extra_fields_to_permissions_tale.php +30 -0
  130. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Migrations/2017_04_22_122522_add_extra_fields_to_roles_table.php +30 -0
  131. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Repositories/PermissionRepository.php +19 -0
  132. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Repositories/RoleRepository.php +19 -0
  133. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Seeders/AuthorizationDefaultUsersSeeder_4.php +36 -0
  134. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Seeders/AuthorizationGivePermissionsToRolesSeeder_3.php +24 -0
  135. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Seeders/AuthorizationPermissionsSeeder_1.php +27 -0
  136. package/Daevin_test/app/Containers/AppSection/Authorization/Data/Seeders/AuthorizationRolesSeeder_2.php +21 -0
  137. package/Daevin_test/app/Containers/AppSection/Authorization/Models/Permission.php +27 -0
  138. package/Daevin_test/app/Containers/AppSection/Authorization/Models/Role.php +27 -0
  139. package/Daevin_test/app/Containers/AppSection/Authorization/Providers/MainServiceProvider.php +27 -0
  140. package/Daevin_test/app/Containers/AppSection/Authorization/README.md +1 -0
  141. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/AssignRolesToUserTask.php +21 -0
  142. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/CreatePermissionTask.php +41 -0
  143. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/CreateRoleTask.php +41 -0
  144. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/DeleteRoleTask.php +35 -0
  145. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/DetachPermissionsFromRoleTask.php +24 -0
  146. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/DetachPermissionsFromUserTask.php +24 -0
  147. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/FindPermissionTask.php +49 -0
  148. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/FindRoleTask.php +49 -0
  149. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/GetAllPermissionsTask.php +40 -0
  150. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/GetAllRolesTask.php +40 -0
  151. package/Daevin_test/app/Containers/AppSection/Authorization/Tasks/RevokeRoleFromUserTask.php +21 -0
  152. package/Daevin_test/app/Containers/AppSection/Authorization/Tests/TestCase.php +18 -0
  153. package/Daevin_test/app/Containers/AppSection/Authorization/Tests/Unit/CreatePermissionTaskTest.php +29 -0
  154. package/Daevin_test/app/Containers/AppSection/Authorization/Tests/Unit/CreateRoleTaskTest.php +29 -0
  155. package/Daevin_test/app/Containers/AppSection/Authorization/Tests/Unit/DeleteRoleTaskTest.php +36 -0
  156. package/Daevin_test/app/Containers/AppSection/Authorization/Tests/Unit/FindPermissionTaskTest.php +44 -0
  157. package/Daevin_test/app/Containers/AppSection/Authorization/Tests/Unit/FindRoleTaskTest.php +44 -0
  158. package/Daevin_test/app/Containers/AppSection/Authorization/Tests/Unit/PermissionFactoryTest.php +22 -0
  159. package/Daevin_test/app/Containers/AppSection/Authorization/Tests/Unit/PermissionMigrationTest.php +95 -0
  160. package/Daevin_test/app/Containers/AppSection/Authorization/Tests/Unit/RoleFactoryTest.php +33 -0
  161. package/Daevin_test/app/Containers/AppSection/Authorization/Traits/AuthorizationTrait.php +11 -0
  162. package/Daevin_test/app/Containers/AppSection/Authorization/Traits/IsResourceOwnerTrait.php +19 -0
  163. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/AssignRolesToUserController.php +26 -0
  164. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/AttachPermissionsToRoleController.php +26 -0
  165. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/AttachPermissionsToUserController.php +27 -0
  166. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/CreateRoleController.php +27 -0
  167. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/DeleteRoleController.php +26 -0
  168. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/DetachPermissionsFromRoleController.php +26 -0
  169. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/DetachPermissionsFromUserController.php +26 -0
  170. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/FindPermissionController.php +26 -0
  171. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/FindRoleController.php +26 -0
  172. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/GetAllPermissionsController.php +28 -0
  173. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/GetAllRolesController.php +28 -0
  174. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/GetRolePermissionsController.php +26 -0
  175. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/GetUserPermissionsController.php +26 -0
  176. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/GetUserRolesController.php +27 -0
  177. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/RevokeRolesFromUserController.php +26 -0
  178. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/SyncPermissionOnRoleController.php +26 -0
  179. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Controllers/SyncUserRolesController.php +26 -0
  180. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/AssignRolesToUserRequest.php +48 -0
  181. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/AttachPermissionsToRoleRequest.php +48 -0
  182. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/AttachPermissionsToUserRequest.php +53 -0
  183. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/CreateRoleRequest.php +47 -0
  184. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/DeleteRoleRequest.php +45 -0
  185. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/DetachPermissionsFromRoleRequest.php +48 -0
  186. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/DetachPermissionsFromUserRequest.php +53 -0
  187. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/FindPermissionRequest.php +45 -0
  188. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/FindRoleRequest.php +45 -0
  189. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/GetAllPermissionsRequest.php +45 -0
  190. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/GetAllRolesRequest.php +45 -0
  191. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/GetRolePermissionsRequest.php +51 -0
  192. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/GetUserPermissionsRequest.php +51 -0
  193. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/GetUserRolesRequest.php +51 -0
  194. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/RevokeRolesFromUserRequest.php +48 -0
  195. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/SyncPermissionsOnRoleRequest.php +48 -0
  196. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Requests/SyncUserRolesRequest.php +48 -0
  197. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/AssignRolesToUser.v1.private.php +29 -0
  198. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/AttachPermissionsToRole.v1.private.php +29 -0
  199. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/AttachPermissionsToUser.v1.private.php +27 -0
  200. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/CreateRole.v1.private.php +25 -0
  201. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/DeleteRole.v1.private.php +28 -0
  202. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/DetachPermissionsFromRole.v1.private.php +29 -0
  203. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/DetachPermissionsFromUser.v1.private.php +27 -0
  204. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/FindPermission.v1.private.php +23 -0
  205. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/FindRole.v1.private.php +23 -0
  206. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/GetAllPermissions.v1.private.php +21 -0
  207. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/GetAllRoles.v1.private.php +21 -0
  208. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/GetRolePermissions.v1.private.php +25 -0
  209. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/GetUserPermissions.v1.private.php +25 -0
  210. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/GetUserRoles.v1.private.php +25 -0
  211. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/RevokeRolesFromUser.v1.private.php +29 -0
  212. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/SyncPermissionOnRole.v1.private.php +26 -0
  213. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/SyncUserRoles.v1.private.php +27 -0
  214. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/_permission.v1.public.php +25 -0
  215. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/_role.v1.public.php +43 -0
  216. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Routes/_userPermissions.v1.public.php +48 -0
  217. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/ApiTestCase.php +15 -0
  218. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/AssignRolesToUserTest.php +71 -0
  219. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/AttachPermissionToUserTest.php +114 -0
  220. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/AttachPermissionsToRoleTest.php +115 -0
  221. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/CreateRoleTest.php +65 -0
  222. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/DeleteRoleTest.php +40 -0
  223. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/DetachPermissionFromUserTest.php +120 -0
  224. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/DetachPermissionsFromRoleTest.php +115 -0
  225. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/FindPermissionTest.php +42 -0
  226. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/FindRoleTest.php +42 -0
  227. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/GetAllPermissionsTest.php +30 -0
  228. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/GetAllRolesTest.php +32 -0
  229. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/GetRolePermissionsTest.php +39 -0
  230. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/GetUserPermissionsTest.php +40 -0
  231. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/GetUserRolesTest.php +40 -0
  232. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/RevokeRolesFromUserTest.php +115 -0
  233. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/SyncPermissionsOnRoleTest.php +92 -0
  234. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Tests/Functional/SyncUserRolesTest.php +93 -0
  235. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Transformers/PermissionTransformer.php +28 -0
  236. package/Daevin_test/app/Containers/AppSection/Authorization/UI/API/Transformers/RoleTransformer.php +34 -0
  237. package/Daevin_test/app/Containers/AppSection/Authorization/UI/WEB/Controllers/UnauthorizedController.php +19 -0
  238. package/Daevin_test/app/Containers/AppSection/Authorization/UI/WEB/Requests/UnauthorizedRequest.php +49 -0
  239. package/Daevin_test/app/Containers/AppSection/Authorization/UI/WEB/Routes/GetUnauthorized.php +7 -0
  240. package/Daevin_test/app/Containers/AppSection/Authorization/UI/WEB/Views/unauthorized.blade.php +43 -0
  241. package/Daevin_test/app/Containers/AppSection/Authorization/composer.json +11 -0
  242. package/Daevin_test/app/Containers/AppSection/Posts/Actions/CreatePostsAction.php +26 -0
  243. package/Daevin_test/app/Containers/AppSection/Posts/Actions/DeletePostsAction.php +18 -0
  244. package/Daevin_test/app/Containers/AppSection/Posts/Actions/FindPostsByIdAction.php +18 -0
  245. package/Daevin_test/app/Containers/AppSection/Posts/Actions/GetAllPostsAction.php +23 -0
  246. package/Daevin_test/app/Containers/AppSection/Posts/Actions/UpdatePostsAction.php +26 -0
  247. package/Daevin_test/app/Containers/AppSection/Posts/Configs/appSection-posts.php +14 -0
  248. package/Daevin_test/app/Containers/AppSection/Posts/Data/Factories/PostsFactory.php +22 -0
  249. package/Daevin_test/app/Containers/AppSection/Posts/Data/Migrations/2023_2_19_55939_create_posts_migration.php +30 -0
  250. package/Daevin_test/app/Containers/AppSection/Posts/Data/Repositories/PostsRepository.php +17 -0
  251. package/Daevin_test/app/Containers/AppSection/Posts/Models/Posts.php +42 -0
  252. package/Daevin_test/app/Containers/AppSection/Posts/Posts.json +7 -0
  253. package/Daevin_test/app/Containers/AppSection/Posts/README.md +194 -0
  254. package/Daevin_test/app/Containers/AppSection/Posts/Tasks/CreatePostsTask.php +34 -0
  255. package/Daevin_test/app/Containers/AppSection/Posts/Tasks/DeletePostsTask.php +35 -0
  256. package/Daevin_test/app/Containers/AppSection/Posts/Tasks/FindPostsByIdTask.php +33 -0
  257. package/Daevin_test/app/Containers/AppSection/Posts/Tasks/GetAllPostsTask.php +31 -0
  258. package/Daevin_test/app/Containers/AppSection/Posts/Tasks/UpdatePostsTask.php +33 -0
  259. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Controllers/Controller.php +94 -0
  260. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Requests/CreatePostsRequest.php +54 -0
  261. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Requests/DeletePostsRequest.php +54 -0
  262. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Requests/FindPostsByIdRequest.php +53 -0
  263. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Requests/GetAllPostsRequest.php +54 -0
  264. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Requests/UpdatePostsRequest.php +56 -0
  265. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Routes/CreatePostsRoute.v1.private.php +52 -0
  266. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Routes/DeletePostsRoute.v1.private.php +31 -0
  267. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Routes/FindPostsByIdRoute.v1.private.php +52 -0
  268. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Routes/GetAllPostsRoute.v1.private.php +74 -0
  269. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Routes/UpdatePostsRoute.v1.private.php +52 -0
  270. package/Daevin_test/app/Containers/AppSection/Posts/UI/API/Transformers/PostsTransformer.php +49 -0
  271. package/Daevin_test/app/Containers/AppSection/Posts/composer.json +7 -0
  272. package/Daevin_test/app/Containers/AppSection/User/Actions/CreateAdminAction.php +39 -0
  273. package/Daevin_test/app/Containers/AppSection/User/Actions/DeleteUserAction.php +22 -0
  274. package/Daevin_test/app/Containers/AppSection/User/Actions/FindUserByIdAction.php +22 -0
  275. package/Daevin_test/app/Containers/AppSection/User/Actions/GetAllUsersAction.php +21 -0
  276. package/Daevin_test/app/Containers/AppSection/User/Actions/UpdateUserAction.php +33 -0
  277. package/Daevin_test/app/Containers/AppSection/User/Actions/UpdateUserPasswordAction.php +35 -0
  278. package/Daevin_test/app/Containers/AppSection/User/Configs/appSection-user.php +5 -0
  279. package/Daevin_test/app/Containers/AppSection/User/Data/Factories/UserFactory.php +44 -0
  280. package/Daevin_test/app/Containers/AppSection/User/Data/Migrations/2000_01_01_000001_create_users_table.php +34 -0
  281. package/Daevin_test/app/Containers/AppSection/User/Data/Migrations/2000_01_01_000002_create_password_resets_table.php +28 -0
  282. package/Daevin_test/app/Containers/AppSection/User/Data/Repositories/UserRepository.php +21 -0
  283. package/Daevin_test/app/Containers/AppSection/User/Data/Seeders/UserPermissionsSeeder_1.php +26 -0
  284. package/Daevin_test/app/Containers/AppSection/User/Models/User.php +58 -0
  285. package/Daevin_test/app/Containers/AppSection/User/Notifications/PasswordUpdatedNotification.php +28 -0
  286. package/Daevin_test/app/Containers/AppSection/User/Providers/MainServiceProvider.php +39 -0
  287. package/Daevin_test/app/Containers/AppSection/User/README.md +1 -0
  288. package/Daevin_test/app/Containers/AppSection/User/Tasks/DeleteUserTask.php +35 -0
  289. package/Daevin_test/app/Containers/AppSection/User/Tasks/FindUserByEmailTask.php +28 -0
  290. package/Daevin_test/app/Containers/AppSection/User/Tasks/FindUserByIdTask.php +31 -0
  291. package/Daevin_test/app/Containers/AppSection/User/Tasks/GetAllUsersTask.php +26 -0
  292. package/Daevin_test/app/Containers/AppSection/User/Tasks/UpdateUserTask.php +42 -0
  293. package/Daevin_test/app/Containers/AppSection/User/Tests/TestCase.php +18 -0
  294. package/Daevin_test/app/Containers/AppSection/User/Tests/Unit/CreateAdminActionTest.php +50 -0
  295. package/Daevin_test/app/Containers/AppSection/User/Tests/Unit/DeleteUserTaskTest.php +35 -0
  296. package/Daevin_test/app/Containers/AppSection/User/Tests/Unit/FindUserByIdTaskTest.php +35 -0
  297. package/Daevin_test/app/Containers/AppSection/User/Tests/Unit/PasswordResetsMigrationTest.php +28 -0
  298. package/Daevin_test/app/Containers/AppSection/User/Tests/Unit/UpdateUserTaskTest.php +52 -0
  299. package/Daevin_test/app/Containers/AppSection/User/Tests/Unit/UserFactoryTest.php +36 -0
  300. package/Daevin_test/app/Containers/AppSection/User/Tests/Unit/UsersMigrationTest.php +34 -0
  301. package/Daevin_test/app/Containers/AppSection/User/UI/API/Controllers/DeleteUserController.php +26 -0
  302. package/Daevin_test/app/Containers/AppSection/User/UI/API/Controllers/FindUserByIdController.php +26 -0
  303. package/Daevin_test/app/Containers/AppSection/User/UI/API/Controllers/GetAllUsersController.php +28 -0
  304. package/Daevin_test/app/Containers/AppSection/User/UI/API/Controllers/UpdateUserController.php +30 -0
  305. package/Daevin_test/app/Containers/AppSection/User/UI/API/Controllers/UpdateUserPasswordController.php +30 -0
  306. package/Daevin_test/app/Containers/AppSection/User/UI/API/Requests/DeleteUserRequest.php +48 -0
  307. package/Daevin_test/app/Containers/AppSection/User/UI/API/Requests/FindUserByIdRequest.php +45 -0
  308. package/Daevin_test/app/Containers/AppSection/User/UI/API/Requests/GetAllUsersRequest.php +45 -0
  309. package/Daevin_test/app/Containers/AppSection/User/UI/API/Requests/UpdateUserPasswordRequest.php +56 -0
  310. package/Daevin_test/app/Containers/AppSection/User/UI/API/Requests/UpdateUserRequest.php +50 -0
  311. package/Daevin_test/app/Containers/AppSection/User/UI/API/Routes/DeleteUser.v1.private.php +26 -0
  312. package/Daevin_test/app/Containers/AppSection/User/UI/API/Routes/FindUserById.v1.private.php +24 -0
  313. package/Daevin_test/app/Containers/AppSection/User/UI/API/Routes/GetAllUsers.v1.private.php +23 -0
  314. package/Daevin_test/app/Containers/AppSection/User/UI/API/Routes/UpdateUser.v1.private.php +27 -0
  315. package/Daevin_test/app/Containers/AppSection/User/UI/API/Routes/UpdateUserPassword.v1.private.php +36 -0
  316. package/Daevin_test/app/Containers/AppSection/User/UI/API/Routes/_user.v1.public.php +25 -0
  317. package/Daevin_test/app/Containers/AppSection/User/UI/API/Tests/ApiTestCase.php +15 -0
  318. package/Daevin_test/app/Containers/AppSection/User/UI/API/Tests/Functional/DeleteUserTest.php +50 -0
  319. package/Daevin_test/app/Containers/AppSection/User/UI/API/Tests/Functional/FindUserByIdTest.php +80 -0
  320. package/Daevin_test/app/Containers/AppSection/User/UI/API/Tests/Functional/GetAllUsersTest.php +88 -0
  321. package/Daevin_test/app/Containers/AppSection/User/UI/API/Tests/Functional/UpdateUserPasswordTest.php +126 -0
  322. package/Daevin_test/app/Containers/AppSection/User/UI/API/Tests/Functional/UpdateUserTest.php +80 -0
  323. package/Daevin_test/app/Containers/AppSection/User/UI/API/Transformers/UserTransformer.php +52 -0
  324. package/Daevin_test/app/Containers/AppSection/User/UI/CLI/Commands/CreateAdminCommand.php +37 -0
  325. package/Daevin_test/app/Containers/AppSection/User/composer.json +7 -0
  326. package/Daevin_test/app/Containers/AppSection/Users/Actions/CreateUsersAction.php +26 -0
  327. package/Daevin_test/app/Containers/AppSection/Users/Actions/DeleteUsersAction.php +18 -0
  328. package/Daevin_test/app/Containers/AppSection/Users/Actions/FindUsersByIdAction.php +18 -0
  329. package/Daevin_test/app/Containers/AppSection/Users/Actions/GetAllUsersAction.php +23 -0
  330. package/Daevin_test/app/Containers/AppSection/Users/Actions/UpdateUsersAction.php +26 -0
  331. package/Daevin_test/app/Containers/AppSection/Users/Configs/appSection-users.php +14 -0
  332. package/Daevin_test/app/Containers/AppSection/Users/Data/Factories/UsersFactory.php +22 -0
  333. package/Daevin_test/app/Containers/AppSection/Users/Data/Migrations/2023_2_19_55939_create_users_migration.php +31 -0
  334. package/Daevin_test/app/Containers/AppSection/Users/Data/Repositories/UsersRepository.php +17 -0
  335. package/Daevin_test/app/Containers/AppSection/Users/Models/Users.php +44 -0
  336. package/Daevin_test/app/Containers/AppSection/Users/README.md +194 -0
  337. package/Daevin_test/app/Containers/AppSection/Users/Tasks/CreateUsersTask.php +34 -0
  338. package/Daevin_test/app/Containers/AppSection/Users/Tasks/DeleteUsersTask.php +35 -0
  339. package/Daevin_test/app/Containers/AppSection/Users/Tasks/FindUsersByIdTask.php +33 -0
  340. package/Daevin_test/app/Containers/AppSection/Users/Tasks/GetAllUsersTask.php +31 -0
  341. package/Daevin_test/app/Containers/AppSection/Users/Tasks/UpdateUsersTask.php +33 -0
  342. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Controllers/Controller.php +94 -0
  343. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Requests/CreateUsersRequest.php +55 -0
  344. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Requests/DeleteUsersRequest.php +54 -0
  345. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Requests/FindUsersByIdRequest.php +53 -0
  346. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Requests/GetAllUsersRequest.php +54 -0
  347. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Requests/UpdateUsersRequest.php +57 -0
  348. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Routes/CreateUsersRoute.v1.private.php +53 -0
  349. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Routes/DeleteUsersRoute.v1.private.php +31 -0
  350. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Routes/FindUsersByIdRoute.v1.private.php +53 -0
  351. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Routes/GetAllUsersRoute.v1.private.php +75 -0
  352. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Routes/UpdateUsersRoute.v1.private.php +53 -0
  353. package/Daevin_test/app/Containers/AppSection/Users/UI/API/Transformers/UsersTransformer.php +49 -0
  354. package/Daevin_test/app/Containers/AppSection/Users/Users.json +7 -0
  355. package/Daevin_test/app/Containers/AppSection/Users/composer.json +7 -0
  356. package/Daevin_test/app/Ship/Broadcasts/channels.php +16 -0
  357. package/Daevin_test/app/Ship/Commands/HelloWorldCommand.php +32 -0
  358. package/Daevin_test/app/Ship/Commands/closures.php +19 -0
  359. package/Daevin_test/app/Ship/Configs/apiato.php +185 -0
  360. package/Daevin_test/app/Ship/Configs/debugbar.php +275 -0
  361. package/Daevin_test/app/Ship/Configs/fractal.php +43 -0
  362. package/Daevin_test/app/Ship/Configs/hashids.php +54 -0
  363. package/Daevin_test/app/Ship/Configs/ide-helper.php +319 -0
  364. package/Daevin_test/app/Ship/Configs/notification.php +16 -0
  365. package/Daevin_test/app/Ship/Configs/repository.php +250 -0
  366. package/Daevin_test/app/Ship/Contracts/MustVerifyEmail.php +14 -0
  367. package/Daevin_test/app/Ship/Criterias/CreatedTodayCriteria.php +15 -0
  368. package/Daevin_test/app/Ship/Criterias/GroupByCriteria.php +21 -0
  369. package/Daevin_test/app/Ship/Criterias/IsNullCriteria.php +21 -0
  370. package/Daevin_test/app/Ship/Criterias/NotNullCriteria.php +21 -0
  371. package/Daevin_test/app/Ship/Criterias/OrderByCreationDateAscendingCriteria.php +14 -0
  372. package/Daevin_test/app/Ship/Criterias/OrderByCreationDateDescendingCriteria.php +14 -0
  373. package/Daevin_test/app/Ship/Criterias/OrderByFieldCriteria.php +37 -0
  374. package/Daevin_test/app/Ship/Criterias/OrderByNameCriteria.php +14 -0
  375. package/Daevin_test/app/Ship/Criterias/OrderByUpdateDateAscendingCriteria.php +14 -0
  376. package/Daevin_test/app/Ship/Criterias/OrderByUpdateDateDescendingCriteria.php +14 -0
  377. package/Daevin_test/app/Ship/Criterias/ThisBetweenDatesCriteria.php +21 -0
  378. package/Daevin_test/app/Ship/Criterias/ThisEqualThatCriteria.php +20 -0
  379. package/Daevin_test/app/Ship/Criterias/ThisLikeThatCriteria.php +35 -0
  380. package/Daevin_test/app/Ship/Criterias/ThisUserCriteria.php +19 -0
  381. package/Daevin_test/app/Ship/Events/.gitkeep +0 -0
  382. package/Daevin_test/app/Ship/Exceptions/CreateResourceFailedException.php +12 -0
  383. package/Daevin_test/app/Ship/Exceptions/DeleteResourceFailedException.php +12 -0
  384. package/Daevin_test/app/Ship/Exceptions/EmailIsMissedException.php +12 -0
  385. package/Daevin_test/app/Ship/Exceptions/Handlers/ExceptionsHandler.php +107 -0
  386. package/Daevin_test/app/Ship/Exceptions/InternalErrorException.php +12 -0
  387. package/Daevin_test/app/Ship/Exceptions/NotAuthorizedResourceException.php +12 -0
  388. package/Daevin_test/app/Ship/Exceptions/NotFoundException.php +12 -0
  389. package/Daevin_test/app/Ship/Exceptions/NotImplementedException.php +12 -0
  390. package/Daevin_test/app/Ship/Exceptions/UnsupportedFractalSerializerException.php +12 -0
  391. package/Daevin_test/app/Ship/Exceptions/UpdateResourceFailedException.php +12 -0
  392. package/Daevin_test/app/Ship/Exceptions/ValidationFailedException.php +12 -0
  393. package/Daevin_test/app/Ship/Generators/CustomStubs/.gitkeep +0 -0
  394. package/Daevin_test/app/Ship/Helpers/helpers.php +12 -0
  395. package/Daevin_test/app/Ship/Kernels/ConsoleKernel.php +46 -0
  396. package/Daevin_test/app/Ship/Kernels/HttpKernel.php +113 -0
  397. package/Daevin_test/app/Ship/Listeners/.gitkeep +0 -0
  398. package/Daevin_test/app/Ship/Mails/.gitkeep +0 -0
  399. package/Daevin_test/app/Ship/Mails/Templates/.gitkeep +0 -0
  400. package/Daevin_test/app/Ship/Middlewares/Authenticate.php +16 -0
  401. package/Daevin_test/app/Ship/Middlewares/EncryptCookies.php +17 -0
  402. package/Daevin_test/app/Ship/Middlewares/PreventRequestsDuringMaintenance.php +17 -0
  403. package/Daevin_test/app/Ship/Middlewares/TrimStrings.php +19 -0
  404. package/Daevin_test/app/Ship/Middlewares/TrustHosts.php +20 -0
  405. package/Daevin_test/app/Ship/Middlewares/TrustProxies.php +28 -0
  406. package/Daevin_test/app/Ship/Middlewares/VerifyCsrfToken.php +17 -0
  407. package/Daevin_test/app/Ship/Migrations/2017_09_12_174826_create_notifications_table.php +35 -0
  408. package/Daevin_test/app/Ship/Migrations/2019_08_19_000000_create_failed_jobs_table.php +36 -0
  409. package/Daevin_test/app/Ship/Migrations/2021_03_01_150940_create_jobs_table.php +39 -0
  410. package/Daevin_test/app/Ship/Notifications/.gitkeep +0 -0
  411. package/Daevin_test/app/Ship/Parents/Actions/Action.php +10 -0
  412. package/Daevin_test/app/Ship/Parents/Actions/SubAction.php +10 -0
  413. package/Daevin_test/app/Ship/Parents/Commands/ConsoleCommand.php +10 -0
  414. package/Daevin_test/app/Ship/Parents/Controllers/ApiController.php +10 -0
  415. package/Daevin_test/app/Ship/Parents/Controllers/WebController.php +10 -0
  416. package/Daevin_test/app/Ship/Parents/Criterias/Criteria.php +10 -0
  417. package/Daevin_test/app/Ship/Parents/Events/Event.php +10 -0
  418. package/Daevin_test/app/Ship/Parents/Exceptions/Exception.php +10 -0
  419. package/Daevin_test/app/Ship/Parents/Factories/Factory.php +10 -0
  420. package/Daevin_test/app/Ship/Parents/Jobs/Job.php +25 -0
  421. package/Daevin_test/app/Ship/Parents/Listeners/Listener.php +10 -0
  422. package/Daevin_test/app/Ship/Parents/Mails/Mail.php +10 -0
  423. package/Daevin_test/app/Ship/Parents/Middlewares/Middleware.php +10 -0
  424. package/Daevin_test/app/Ship/Parents/Models/Model.php +11 -0
  425. package/Daevin_test/app/Ship/Parents/Models/UserModel.php +17 -0
  426. package/Daevin_test/app/Ship/Parents/Notifications/Notification.php +10 -0
  427. package/Daevin_test/app/Ship/Parents/Policies/Policy.php +26 -0
  428. package/Daevin_test/app/Ship/Parents/Providers/AuthServiceProvider.php +20 -0
  429. package/Daevin_test/app/Ship/Parents/Providers/BroadcastServiceProvider.php +26 -0
  430. package/Daevin_test/app/Ship/Parents/Providers/EventServiceProvider.php +40 -0
  431. package/Daevin_test/app/Ship/Parents/Providers/MainServiceProvider.php +24 -0
  432. package/Daevin_test/app/Ship/Parents/Providers/MiddlewareServiceProvider.php +16 -0
  433. package/Daevin_test/app/Ship/Parents/Providers/RouteServiceProvider.php +24 -0
  434. package/Daevin_test/app/Ship/Parents/Repositories/Repository.php +10 -0
  435. package/Daevin_test/app/Ship/Parents/Requests/Request.php +10 -0
  436. package/Daevin_test/app/Ship/Parents/Seeders/Seeder.php +10 -0
  437. package/Daevin_test/app/Ship/Parents/Tasks/Task.php +10 -0
  438. package/Daevin_test/app/Ship/Parents/Tests/PhpUnit/TestCase.php +51 -0
  439. package/Daevin_test/app/Ship/Parents/Transformers/Transformer.php +25 -0
  440. package/Daevin_test/app/Ship/Parents/Values/Value.php +9 -0
  441. package/Daevin_test/app/Ship/Providers/RouteServiceProvider.php +35 -0
  442. package/Daevin_test/app/Ship/Providers/ShipProvider.php +44 -0
  443. package/Daevin_test/app/Ship/Seeders/SeedDeploymentData.php +18 -0
  444. package/Daevin_test/app/Ship/Seeders/SeedTestingData.php +18 -0
  445. package/Daevin_test/app/Ship/Tests/TestCase.php +10 -0
  446. package/Daevin_test/app/Ship/composer.json +21 -0
  447. package/Daevin_test/artisan +53 -0
  448. package/Daevin_test/bootstrap/app.php +55 -0
  449. package/Daevin_test/bootstrap/cache/.gitignore +2 -0
  450. package/Daevin_test/composer.json +112 -0
  451. package/Daevin_test/composer.lock +12696 -0
  452. package/Daevin_test/config/app.php +206 -0
  453. package/Daevin_test/config/auth.php +117 -0
  454. package/Daevin_test/config/broadcasting.php +67 -0
  455. package/Daevin_test/config/cache.php +110 -0
  456. package/Daevin_test/config/cors.php +34 -0
  457. package/Daevin_test/config/database.php +151 -0
  458. package/Daevin_test/config/filesystems.php +76 -0
  459. package/Daevin_test/config/hashing.php +52 -0
  460. package/Daevin_test/config/logging.php +119 -0
  461. package/Daevin_test/config/mail.php +117 -0
  462. package/Daevin_test/config/queue.php +93 -0
  463. package/Daevin_test/config/services.php +34 -0
  464. package/Daevin_test/config/session.php +201 -0
  465. package/Daevin_test/config/view.php +36 -0
  466. package/Daevin_test/database/factories/ModelFactory.php +4 -0
  467. package/Daevin_test/database/migrations/.gitkeep +0 -0
  468. package/Daevin_test/database/seeders/DatabaseSeeder.php +24 -0
  469. package/Daevin_test/lang/ar/auth.php +19 -0
  470. package/Daevin_test/lang/ar/pagination.php +19 -0
  471. package/Daevin_test/lang/ar/passwords.php +22 -0
  472. package/Daevin_test/lang/ar/validation.php +149 -0
  473. package/Daevin_test/lang/en/auth.php +20 -0
  474. package/Daevin_test/lang/en/pagination.php +19 -0
  475. package/Daevin_test/lang/en/passwords.php +22 -0
  476. package/Daevin_test/lang/en/validation.php +169 -0
  477. package/Daevin_test/lang/es/auth.php +19 -0
  478. package/Daevin_test/lang/es/pagination.php +19 -0
  479. package/Daevin_test/lang/es/passwords.php +22 -0
  480. package/Daevin_test/lang/es/validation.php +149 -0
  481. package/Daevin_test/lang/fa/auth.php +18 -0
  482. package/Daevin_test/lang/fa/pagination.php +17 -0
  483. package/Daevin_test/lang/fa/passwords.php +20 -0
  484. package/Daevin_test/lang/fa/validation.php +182 -0
  485. package/Daevin_test/lang/fr/auth.php +19 -0
  486. package/Daevin_test/lang/fr/pagination.php +19 -0
  487. package/Daevin_test/lang/fr/passwords.php +22 -0
  488. package/Daevin_test/lang/fr/validation.php +149 -0
  489. package/Daevin_test/package-lock.json +10031 -0
  490. package/Daevin_test/package.json +19 -0
  491. package/Daevin_test/php_cs.dist.php +39 -0
  492. package/Daevin_test/phpspec.yml +5 -0
  493. package/Daevin_test/phpunit.xml +38 -0
  494. package/Daevin_test/psalm.dist.xml +18 -0
  495. package/Daevin_test/public/.htaccess +21 -0
  496. package/Daevin_test/public/favicon.ico +0 -0
  497. package/Daevin_test/public/index.php +55 -0
  498. package/Daevin_test/public/robots.txt +2 -0
  499. package/Daevin_test/public/web.config +28 -0
  500. package/Daevin_test/resources/css/app.css +0 -0
  501. package/Daevin_test/resources/js/app.js +1 -0
  502. package/Daevin_test/resources/js/bootstrap.js +28 -0
  503. package/Daevin_test/resources/views/.gitkeep +0 -0
  504. package/Daevin_test/server.php +21 -0
  505. package/Daevin_test/storage/app/.gitignore +3 -0
  506. package/Daevin_test/storage/app/public/.gitignore +2 -0
  507. package/Daevin_test/storage/debugbar/.gitignore +2 -0
  508. package/Daevin_test/storage/framework/cache/.gitignore +2 -0
  509. package/Daevin_test/storage/framework/sessions/.gitignore +2 -0
  510. package/Daevin_test/storage/framework/testing/.gitignore +2 -0
  511. package/Daevin_test/storage/framework/views/.gitignore +2 -0
  512. package/Daevin_test/storage/logs/.gitignore +2 -0
  513. package/Daevin_test/webpack.mix.js +17 -0
  514. package/bin/classes/Apiato/index.js +208 -0
  515. package/bin/classes/Containers/Action.js +169 -0
  516. package/bin/classes/Containers/ComposerJSON.js +27 -0
  517. package/bin/classes/Containers/Config.js +39 -0
  518. package/bin/classes/Containers/Controller.js +120 -0
  519. package/bin/classes/Containers/Factory.js +47 -0
  520. package/bin/classes/Containers/Migration.js +80 -0
  521. package/bin/classes/Containers/Model.js +126 -0
  522. package/bin/classes/Containers/ReadMe.js +212 -0
  523. package/bin/classes/Containers/Repository.js +54 -0
  524. package/bin/classes/Containers/Request.js +341 -0
  525. package/bin/classes/Containers/Route.js +336 -0
  526. package/bin/classes/Containers/Task.js +225 -0
  527. package/bin/classes/Containers/Transformer.js +94 -0
  528. package/bin/classes/Helpers.js +150 -0
  529. package/bin/classes/tes.js +0 -0
  530. package/bin/constants.js +11 -0
  531. package/bin/core/output.json +13 -0
  532. package/bin/core/schemaToSql.js +118 -0
  533. package/bin/core/sqlToSchema.js +206 -0
  534. package/bin/index.js +103 -0
  535. package/dbconfig.json +74 -0
  536. package/package.json +39 -0
@@ -0,0 +1,26 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Notifications;
4
+
5
+ use App\Ship\Parents\Models\UserModel;
6
+ use App\Ship\Parents\Notifications\Notification as ParentNotification;
7
+ use Illuminate\Bus\Queueable;
8
+ use Illuminate\Contracts\Queue\ShouldQueue;
9
+ use Illuminate\Notifications\Messages\MailMessage;
10
+
11
+ class EmailVerified extends ParentNotification implements ShouldQueue
12
+ {
13
+ use Queueable;
14
+
15
+ public function via($notifiable): array
16
+ {
17
+ return ['mail'];
18
+ }
19
+
20
+ public function toMail(UserModel $notifiable): MailMessage
21
+ {
22
+ return (new MailMessage())
23
+ ->subject('Email Verified')
24
+ ->line('Your email has been verified.');
25
+ }
26
+ }
@@ -0,0 +1,26 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Notifications;
4
+
5
+ use App\Ship\Parents\Models\UserModel;
6
+ use App\Ship\Parents\Notifications\Notification as ParentNotification;
7
+ use Illuminate\Bus\Queueable;
8
+ use Illuminate\Contracts\Queue\ShouldQueue;
9
+ use Illuminate\Notifications\Messages\MailMessage;
10
+
11
+ class PasswordReset extends ParentNotification implements ShouldQueue
12
+ {
13
+ use Queueable;
14
+
15
+ public function via($notifiable): array
16
+ {
17
+ return ['mail'];
18
+ }
19
+
20
+ public function toMail(UserModel $notifiable): MailMessage
21
+ {
22
+ return (new MailMessage())
23
+ ->subject('Password Reset')
24
+ ->line('Your password has been reset successfully.');
25
+ }
26
+ }
@@ -0,0 +1,49 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Notifications;
4
+
5
+ use App\Ship\Parents\Models\UserModel;
6
+ use App\Ship\Parents\Notifications\Notification as ParentNotification;
7
+ use Illuminate\Bus\Queueable;
8
+ use Illuminate\Contracts\Queue\ShouldQueue;
9
+ use Illuminate\Notifications\Messages\MailMessage;
10
+ use Illuminate\Support\Facades\URL;
11
+
12
+ class VerifyEmail extends ParentNotification implements ShouldQueue
13
+ {
14
+ use Queueable;
15
+
16
+ public function __construct(
17
+ private string $verification_url,
18
+ ) {
19
+ }
20
+
21
+ public function via($notifiable): array
22
+ {
23
+ return ['mail'];
24
+ }
25
+
26
+ public function toMail(UserModel $notifiable): MailMessage
27
+ {
28
+ return (new MailMessage())
29
+ ->subject('Verify Email Address')
30
+ ->line('Please click the below button to verify your email address.')
31
+ ->action('Verify Email Address', $this->createUrl($notifiable))
32
+ ->line('If you did not create an account, no further action is required.');
33
+ }
34
+
35
+ private function createUrl(UserModel $notifiable): string
36
+ {
37
+ $id = config('apiato.hash-id') ? $notifiable->getHashedKey() : $notifiable->getKey();
38
+ $hash = sha1($notifiable->getEmailForVerification());
39
+
40
+ return $this->verification_url . '?url=' . URL::temporarySignedRoute(
41
+ 'verification.verify',
42
+ now()->addMinutes(config('appSection-authentication.verification_link_expiration_time')),
43
+ [
44
+ 'id' => $id,
45
+ 'hash' => $hash,
46
+ ]
47
+ );
48
+ }
49
+ }
@@ -0,0 +1,25 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Notifications;
4
+
5
+ use App\Ship\Parents\Notifications\Notification as ParentNotification;
6
+ use Illuminate\Bus\Queueable;
7
+ use Illuminate\Contracts\Queue\ShouldQueue;
8
+ use Illuminate\Notifications\Messages\MailMessage;
9
+
10
+ class Welcome extends ParentNotification implements ShouldQueue
11
+ {
12
+ use Queueable;
13
+
14
+ public function via($notifiable): array
15
+ {
16
+ return ['mail'];
17
+ }
18
+
19
+ public function toMail($notifiable): MailMessage
20
+ {
21
+ return (new MailMessage())
22
+ ->subject('Welcome to ' . config('app.name'))
23
+ ->line('Thank you for registering ' . $notifiable->name);
24
+ }
25
+ }
@@ -0,0 +1,76 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Providers;
4
+
5
+ use Apiato\Core\Loaders\RoutesLoaderTrait;
6
+ use App\Ship\Parents\Providers\AuthServiceProvider as ParentAuthProvider;
7
+ use Carbon\Carbon;
8
+ use Illuminate\Support\Facades\Route;
9
+ use Laravel\Passport\Passport;
10
+ use Laravel\Passport\RouteRegistrar;
11
+
12
+ class AuthServiceProvider extends ParentAuthProvider
13
+ {
14
+ use RoutesLoaderTrait;
15
+
16
+ /**
17
+ * Indicates if loading of the provider is deferred.
18
+ */
19
+ protected bool $defer = true;
20
+
21
+ /**
22
+ * The policy mappings for the application.
23
+ *
24
+ * @var array
25
+ */
26
+ protected $policies = [];
27
+
28
+ /**
29
+ * Register any authentication / authorization services.
30
+ */
31
+ public function boot(): void
32
+ {
33
+ parent::boot();
34
+
35
+ $this->registerPassport();
36
+ $this->registerPassportApiRoutes();
37
+ $this->registerPassportWebRoutes();
38
+ }
39
+
40
+ private function registerPassport(): void
41
+ {
42
+ if (config('apiato.api.enabled-implicit-grant')) {
43
+ Passport::enableImplicitGrant();
44
+ }
45
+
46
+ Passport::tokensExpireIn(Carbon::now()->addMinutes(config('apiato.api.expires-in')));
47
+
48
+ Passport::refreshTokensExpireIn(Carbon::now()->addMinutes(config('apiato.api.refresh-expires-in')));
49
+ }
50
+
51
+ private function registerPassportApiRoutes(): void
52
+ {
53
+ $prefix = config('apiato.api.prefix');
54
+ $routeGroupArray = $this->getRouteGroup("/{$prefix}v1");
55
+
56
+ if (!$this->app->routesAreCached()) {
57
+ Route::group($routeGroupArray, function () {
58
+ Passport::routes(function (RouteRegistrar $router) {
59
+ $router->forAccessTokens();
60
+ $router->forTransientTokens();
61
+ $router->forClients();
62
+ $router->forPersonalAccessTokens();
63
+ });
64
+ });
65
+ }
66
+ }
67
+
68
+ private function registerPassportWebRoutes(): void
69
+ {
70
+ if (!$this->app->routesAreCached()) {
71
+ Passport::routes(function (RouteRegistrar $router) {
72
+ $router->forAuthorization();
73
+ });
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,32 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Providers;
4
+
5
+ use App\Ship\Parents\Providers\MainServiceProvider as ParentMainServiceProvider;
6
+ use Laravel\Passport\PassportServiceProvider;
7
+
8
+ /**
9
+ * Class MainServiceProvider.
10
+ *
11
+ * The Main Service Provider of this container, it will be automatically registered in the framework.
12
+ *
13
+
14
+ */
15
+ class MainServiceProvider extends ParentMainServiceProvider
16
+ {
17
+ /**
18
+ * Container Service Providers.
19
+ */
20
+ public array $serviceProviders = [
21
+ AuthServiceProvider::class,
22
+ MiddlewareServiceProvider::class,
23
+ PassportServiceProvider::class,
24
+ ];
25
+
26
+ /**
27
+ * Container Aliases
28
+ */
29
+ public array $aliases = [
30
+
31
+ ];
32
+ }
@@ -0,0 +1,19 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Providers;
4
+
5
+ use App\Containers\AppSection\Authentication\Middlewares\RedirectIfAuthenticated;
6
+ use App\Ship\Parents\Providers\MiddlewareServiceProvider as ParentMiddlewareServiceProvider;
7
+
8
+ class MiddlewareServiceProvider extends ParentMiddlewareServiceProvider
9
+ {
10
+ protected array $middlewares = [];
11
+
12
+ protected array $middlewareGroups = [];
13
+
14
+ protected array $middlewarePriority = [];
15
+
16
+ protected array $routeMiddleware = [
17
+ 'guest' => RedirectIfAuthenticated::class,
18
+ ];
19
+ }
@@ -0,0 +1 @@
1
+ ### Apiato Authentication Container
@@ -0,0 +1,36 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tasks;
4
+
5
+ use App\Containers\AppSection\Authentication\Exceptions\LoginFailedException;
6
+ use App\Ship\Parents\Tasks\Task as ParentTask;
7
+ use GuzzleHttp\Utils;
8
+ use Illuminate\Http\Request;
9
+ use Illuminate\Support\Facades\App;
10
+
11
+ class CallOAuthServerTask extends ParentTask
12
+ {
13
+ /**
14
+ * @throws LoginFailedException
15
+ */
16
+ public function run(array $data, string $languageHeader = null): float|object|int|bool|array|string|null
17
+ {
18
+ $authFullApiUrl = route('passport.token');
19
+
20
+ $headers = [
21
+ 'HTTP_ACCEPT' => 'application/json',
22
+ 'HTTP_ACCEPT_LANGUAGE' => $languageHeader ?? config('app.locale'),
23
+ ];
24
+
25
+ $request = Request::create($authFullApiUrl, 'POST', $data, server: $headers);
26
+ $response = App::handle($request);
27
+ $content = Utils::jsonDecode($response->getContent(), true);
28
+
29
+ // If the internal request to the oauth token endpoint was not successful we throw an exception
30
+ if (!$response->isOk()) {
31
+ throw new LoginFailedException($content['message'] ?? null);
32
+ }
33
+
34
+ return $content;
35
+ }
36
+ }
@@ -0,0 +1,14 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tasks;
4
+
5
+ use App\Ship\Parents\Models\UserModel;
6
+ use App\Ship\Parents\Tasks\Task as ParentTask;
7
+
8
+ class CreatePasswordResetTokenTask extends ParentTask
9
+ {
10
+ public function run(UserModel $user): string
11
+ {
12
+ return app('auth.password.broker')->createToken($user);
13
+ }
14
+ }
@@ -0,0 +1,34 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tasks;
4
+
5
+ use App\Containers\AppSection\User\Data\Repositories\UserRepository;
6
+ use App\Containers\AppSection\User\Models\User;
7
+ use App\Ship\Exceptions\CreateResourceFailedException;
8
+ use App\Ship\Parents\Tasks\Task as ParentTask;
9
+ use Exception;
10
+ use Illuminate\Support\Facades\Hash;
11
+
12
+ class CreateUserByCredentialsTask extends ParentTask
13
+ {
14
+ public function __construct(
15
+ protected UserRepository $repository
16
+ ) {
17
+ }
18
+
19
+ /**
20
+ * @throws CreateResourceFailedException
21
+ */
22
+ public function run(array $data): User
23
+ {
24
+ $data['password'] = Hash::make($data['password']);
25
+
26
+ try {
27
+ $user = $this->repository->create($data);
28
+ } catch (Exception) {
29
+ throw new CreateResourceFailedException();
30
+ }
31
+
32
+ return $user;
33
+ }
34
+ }
@@ -0,0 +1,14 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tasks;
4
+
5
+ use App\Ship\Parents\Tasks\Task as ParentTask;
6
+ use Illuminate\Support\Facades\Auth;
7
+
8
+ class LoginTask extends ParentTask
9
+ {
10
+ public function run(string $username, string $password, string $field = 'email', bool $remember = false): bool
11
+ {
12
+ return Auth::guard('web')->attempt([$field => $username, 'password' => $password], $remember);
13
+ }
14
+ }
@@ -0,0 +1,25 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tasks;
4
+
5
+ use App\Ship\Parents\Tasks\Task as ParentTask;
6
+ use Illuminate\Contracts\Foundation\Application;
7
+ use Illuminate\Cookie\CookieJar;
8
+ use Symfony\Component\HttpFoundation\Cookie;
9
+
10
+ class MakeRefreshCookieTask extends ParentTask
11
+ {
12
+ public function run($refreshToken): CookieJar|Cookie|Application
13
+ {
14
+ // Save the refresh token in a HttpOnly cookie to minimize the risk of XSS attacks
15
+ return cookie(
16
+ 'refreshToken',
17
+ $refreshToken,
18
+ config('apiato.api.refresh-expires-in'),
19
+ null,
20
+ null,
21
+ config('session.secure'),
22
+ true // HttpOnly
23
+ );
24
+ }
25
+ }
@@ -0,0 +1,16 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tasks;
4
+
5
+ use App\Ship\Contracts\MustVerifyEmail;
6
+ use App\Ship\Parents\Tasks\Task as ParentTask;
7
+
8
+ class SendVerificationEmailTask extends ParentTask
9
+ {
10
+ public function run(MustVerifyEmail $user, ?string $verificationUrl = null): void
11
+ {
12
+ if (config('appSection-authentication.require_email_verification') && !$user->hasVerifiedEmail() && !is_null($verificationUrl)) {
13
+ $user->sendEmailVerificationNotificationWithVerificationUrl($verificationUrl);
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,51 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ 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
51
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,14 @@
1
+ -----BEGIN PUBLIC KEY-----
2
+ MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAv6s9sNcaJW+yq0VmvAJV
3
+ RLcspSLXGbm5e9IsNYA5gwyD2HJe+15Yk0xtkdrJvFZJdZ9NgaBKthsjJiDwrD57
4
+ 4KEJR1ZzlohkjtWyY3dp+tYs06oQvRBGWeLok4x8iZeG1EDcL6cYiM56pT2tCFd5
5
+ E/7t0LhGf14SKoBnEqM3Kl+TVNQr9mXmsRh9Xqy/KgqvscXpQUa/q35MbNJ6ztj8
6
+ DPLhLwN9Lu2nX7TCgPdaakCQjeHOpcNNiR4cDN8DbOF3l0WVi4IVyrCM+7SVE0B9
7
+ bWSCr31/yDgFzn/+o6LB743mOBLb7VDwuiQyIra1BNt5w1w+rmJCd0uu+Ux2+36p
8
+ xxnQMXtfPuzCPt/qTo8CVUcoq/YJCxHCekracIEMiELKxZYvh+TahMYTTbnu+Xmo
9
+ 5/btnt3iNNYW/z2MAXGcStIPek8zCKHhAN1DCe96T6SzHgC8Rw1v3zRTfLGm1IPI
10
+ Nr4hB5qiISLg6jhBHH1UqoPzKvCMPQ9UkBvey5IJBGAaubpTKsaWoG0HWdi/34EW
11
+ 7ba/G2h45bVaXbSIOBzOXrRDZYUqbCimsEe4xi/yMsYJAyW9rRhxs5R15uS43MlX
12
+ vwV7oBagxbk+r2aw3JJeWBfJa0UJbjh1kX5rH3BsVkONeJBsfcLC6nwkePSfaDa5
13
+ MEA9E4S0uJMODlJ6jhdwUrUCAwEAAQ==
14
+ -----END PUBLIC KEY-----
@@ -0,0 +1,18 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tests;
4
+
5
+ use App\Ship\Parents\Tests\PhpUnit\TestCase as ParentTestCase;
6
+
7
+ /**
8
+ * Class TestCase.
9
+ *
10
+ * This is the container TestCase class. Use this class to add your container specific helper functions. This testcase
11
+ * is usually used only for unit tests.
12
+ *
13
+ * NOTE: API, WEB & CLI specific TestCase classes are located inside their own respective folders e.g. UI/API/Tests/ApiTestCase.php
14
+ */
15
+ class TestCase extends ParentTestCase
16
+ {
17
+ // ..
18
+ }
@@ -0,0 +1,27 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tests\Unit;
4
+
5
+ use App\Containers\AppSection\Authentication\Tasks\CreatePasswordResetTokenTask;
6
+ use App\Containers\AppSection\Authentication\Tests\TestCase;
7
+ use App\Containers\AppSection\User\Models\User;
8
+
9
+ /**
10
+ * Class CreatePasswordResetTokenTaskTest.
11
+ *
12
+ * @group authentication
13
+ * @group unit
14
+ */
15
+ class CreatePasswordResetTokenTaskTest extends TestCase
16
+ {
17
+ public function testCreatePasswordResetTask(): void
18
+ {
19
+ $user = User::factory()->create();
20
+
21
+ app(CreatePasswordResetTokenTask::class)->run($user);
22
+
23
+ $this->assertDatabaseHas('password_resets', [
24
+ 'email' => $user->email,
25
+ ]);
26
+ }
27
+ }
@@ -0,0 +1,42 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tests\Unit;
4
+
5
+ use App\Containers\AppSection\Authentication\Tasks\CreateUserByCredentialsTask;
6
+ use App\Containers\AppSection\Authentication\Tests\TestCase;
7
+ use App\Ship\Exceptions\CreateResourceFailedException;
8
+
9
+ /**
10
+ * Class CreateUserByCredentialsTaskTest.
11
+ *
12
+ * @group authentication
13
+ * @group unit
14
+ */
15
+ class CreateUserByCredentialsTaskTest extends TestCase
16
+ {
17
+ public function testCreateUserByCredentials(): void
18
+ {
19
+ $data = [
20
+ 'email' => 'Mahmoud@test.test',
21
+ 'password' => 'so-secret',
22
+ ];
23
+
24
+ $user = app(CreateUserByCredentialsTask::class)->run($data);
25
+
26
+ $this->assertModelExists($user);
27
+ }
28
+
29
+ public function testCreateUserWithInvalidData(): void
30
+ {
31
+ $this->expectException(CreateResourceFailedException::class);
32
+ $this->expectExceptionMessage('Failed to create Resource.');
33
+
34
+ $data = [
35
+ 'email' => 'Mahmoud@test.test',
36
+ 'password' => 'so-secret',
37
+ 'birth' => 'wrong-format',
38
+ ];
39
+
40
+ app(CreateUserByCredentialsTask::class)->run($data);
41
+ }
42
+ }
@@ -0,0 +1,28 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tests\Unit;
4
+
5
+ use App\Containers\AppSection\Authentication\Actions\ForgotPasswordAction;
6
+ use App\Containers\AppSection\Authentication\Tests\TestCase;
7
+ use App\Containers\AppSection\Authentication\UI\API\Requests\ForgotPasswordRequest;
8
+
9
+ /**
10
+ * Class ForgotPasswordActionTest.
11
+ *
12
+ * @group authentication
13
+ * @group unit
14
+ */
15
+ class ForgotPasswordActionTest extends TestCase
16
+ {
17
+ public function testIfUserNotExists_ShouldNotReturn404(): void
18
+ {
19
+ $data = [
20
+ 'email' => 'wrong@mail.test',
21
+ ];
22
+
23
+ $request = new ForgotPasswordRequest($data);
24
+ $result = app(ForgotPasswordAction::class)->run($request);
25
+
26
+ $this->assertFalse($result);
27
+ }
28
+ }
@@ -0,0 +1,48 @@
1
+ <?php
2
+
3
+ namespace App\Containers\AppSection\Authentication\Tests\Unit;
4
+
5
+ use App\Containers\AppSection\Authentication\Classes\LoginCustomAttribute;
6
+ use App\Containers\AppSection\Authentication\Tests\TestCase;
7
+ use Illuminate\Support\Facades\Config;
8
+
9
+ /**
10
+ * Class LoginCustomAttributeTest.
11
+ *
12
+ * @group authentication
13
+ * @group unit
14
+ */
15
+ class LoginCustomAttributeTest extends TestCase
16
+ {
17
+ public function testGivenValidLoginAttributeThenExtractUsername(): void
18
+ {
19
+ $userDetails = [
20
+ 'email' => 'Mahmoud@test.test',
21
+ 'password' => 'so-secret',
22
+ ];
23
+
24
+ $result = LoginCustomAttribute::extract($userDetails);
25
+
26
+ $this->assertAttributeIsExtracted($result, $userDetails);
27
+ }
28
+
29
+ private function assertAttributeIsExtracted(array $result, array $userDetails): void
30
+ {
31
+ list($username, $loginAttribute) = $result;
32
+ $this->assertSame($username, strtolower($userDetails['email']));
33
+ $this->assertSame($loginAttribute, 'email');
34
+ }
35
+
36
+ public function testWhenNoLoginAttributeIsProvidedShouldUseEmailFieldAsDefaultFallback(): void
37
+ {
38
+ Config::offsetUnset('appSection-authentication.login.attributes');
39
+ $userDetails = [
40
+ 'email' => 'Mahmoud@test.test',
41
+ 'password' => 'so-secret',
42
+ ];
43
+
44
+ $result = LoginCustomAttribute::extract($userDetails);
45
+
46
+ $this->assertAttributeIsExtracted($result, $userDetails);
47
+ }
48
+ }