Upgrade Guide

Vanguard - Advanced PHP Login and User Management Vanguard - Advanced PHP Login and User Management / Setup Last updated on Updated  Feb 28, 2024

This section contains some info about what's changed in the latest version and how you should update your Vanguard application. You can find the version you are currently using inside config/app.php file. The complete changelog is available in the item description on CodeCanyon.

NOTE: While doing the upgrade it's always a good idea to have the Development Mode​ turned on so you can easily see the errors on the screen.

To 8.1.1 from 8.1.0

This version contains just a fix in the installation wizard. If you are already using Vanguard, there is no need to update any of the files. 

If you are installing it from scratch, just download the latest version from CodeCanyon and you should be good to go.

The list of changed files is available below:

app/Http/Middleware/VerifyInstallation.php
app/Http/Controllers/Web/InstallController.php
config/app.php // just a version update

To 8.1.0 from 8.0.0

This upgrade brings a couple of new features and fixes some small bugs. 

This version also comes with Larvel Pint so there are a lot of changed files, however, the majority of the changes are caused by Pint or by some cleanup that we performed manually, so you don't have to update them if you don't want to.

Below is the list of new files that you should copy to the appropriate directories:

app/Http/Middleware/SetLocale.php
app/Support/Locale.php
public/flags/RS.png
resources/views/partials/locale-dropdown.blade.php

Below is the list of updated files that you should check since they either contain some new code or are affected by the refactoring. Please check files one by one instead of just overwriting them since this upgrade brings some things like function return types and so on, so if you overwrite the file things might stop working.

app/Http/Controllers/Api/Auth/AuthController.php
app/Http/Controllers/Api/Auth/RegistrationController.php
app/Http/Controllers/Api/Authorization/RolesController.php
app/Http/Controllers/Api/Profile/TwoFactorController.php
app/Http/Controllers/Api/Users/TwoFactorController.php
app/Http/Controllers/Web/Auth/ForgotPasswordController.php
app/Http/Controllers/Web/Auth/LoginController.php
app/Http/Controllers/Web/Auth/RegisterController.php
app/Http/Controllers/Web/Auth/TwoFactorTokenController.php
app/Http/Controllers/Web/Authorization/RolesController.php
app/Http/Controllers/Web/TwoFactorController.php
app/Http/Controllers/Web/Users/DetailsController.php
app/Http/Kernel.php
app/Http/Resources/UserResource.php
app/Listeners/Registration/SendSignUpNotification.php
app/Providers/HtmlServiceProvider.php
app/Repositories/Session/DbSession.php
app/Repositories/User/UserRepository.php
app/Repositories/User/EloquentUser.php
app/Role.php
app/Rules/ValidPermissionName.php
app/Services/Auth/Social/SocialManager.php
app/Support/Enum/UserStatus.php
app/User.php
config/app.php
resources/lang/en/auth.php
resources/lang/en/passwords.php
resources/views/layouts/auth.blade.php
resources/views/partials/navbar.blade.php
resources/views/settings/partials/auth.blade.php
resources/views/user/partials/details.blade.php
resources/views/user/partials/row.blade.php

To 8.0.0 from 7.0.0

Laravel 10 upgrade.

There is a new migration file added for Laravel sanctum named 2023_03_16_151533_add_expires_at_to_personal_access_tokens_table.php, so make sure that you add that migration file to your project and run the `php artisan migrate` command.

If you've changed the applications public directory as it's explained here, make sure that you replace 

$app->instance('path.public', __DIR__);

with

$app->usePublicPath(__DIR__);

The list of modified and removed files is available below. It's highly recommended to check each file and update it if necessary. Some files just contain cosmetic changes, so you don't have to update those files if you don't want to.

 .editorconfig                                                                            |    11 +-
 .gitattributes | 15 +-
 .gitignore | 6 +
 .styleci.yml | 9 +
 app/Http/Controllers/Web/InstallController.php | 35 +-
 app/Support/Plugins/Settings.php | 7 +-
 app/User.php | 5 +-
 composer.json | 27 +-
 composer.lock | 3515 ++++++-------
 config/app.php | 66 +-
 config/broadcasting.php | 17 +-
 config/cache.php | 12 +-
 config/database.php | 16 +-
 config/filesystems.php | 15 +
 config/hashing.php | 6 +-
 config/logging.php | 59 +-
 config/mail.php | 15 +-
 config/queue.php | 9 +-
 config/sanctum.php | 27 +-
 config/session.php | 7 +-
 database/migrations/2023_03_16_151533_add_expires_at_to_personal_access_tokens_table.php | 29 +
 package-lock.json | 9557 ++++++++++++++++++++++++++++++++++-
 package.json | 9 +-
 phpunit.xml | 2 +-
 public/assets/css/app.css | 11 +-
 public/assets/css/vendor.css | 2 +-
 public/assets/js/vendor.js | 2 +-
 public/mix-manifest.json | 2 +-
 storage/settings.json | 2 +-
 tests/Feature/Api/Profile/TwoFactorControllerTest.php | 13 +-
 tests/Feature/Api/Users/AvatarControllerTest.php | 13 +-
 tests/Feature/Api/Users/TwoFactorControllerTest.php | 12 +-
 tests/Feature/Api/Users/UsersControllerTest.php | 13 +-
 tests/Feature/Web/LoginTest.php | 7 +-
 tests/Feature/Web/PermissionsTest.php | 36 +-
 tests/Feature/Web/TwoFactorAuthTest.php | 25 +-
 tests/Feature/Web/UpdateProfileTest.php | 26 +-
 tests/Feature/Web/UsersTest.php | 7 +-
 tests/Unit/Presenters/UserPresenterTest.php | 3 +-
 tests/Unit/Repositories/Permission/EloquentPermissionTest.php | 24 +-
 tests/Unit/Repositories/Role/EloquentRoleTest.php | 19 +-


To 7.0.0 from 6.1.0

Added support for PHP 8.1 and upgraded to Laravel 9.

The list of modified and removed files is available below. It's highly recommended to check each file and update it if necessary. Some files just contain cosmetic changes, so you don't have to update those files if you don't want to.

 .env.example                                                         |    2 +-
 app/Console/Kernel.php | 12 +-
 app/Exceptions/Handler.php | 24 +-
 app/Http/Controllers/Api/Auth/RegistrationController.php | 19 +-
 app/Http/Controllers/Api/Auth/SocialLoginController.php | 18 +-
 app/Http/Controllers/Api/Authorization/PermissionsController.php | 8 +-
 app/Http/Controllers/Api/Authorization/RolePermissionsController.php | 8 +-
 app/Http/Controllers/Api/Authorization/RolesController.php | 8 +-
 app/Http/Controllers/Api/Profile/AvatarController.php | 14 +-
 app/Http/Controllers/Api/SessionsController.php | 8 +-
 app/Http/Controllers/Api/StatsController.php | 9 +-
 app/Http/Controllers/Api/Users/AvatarController.php | 15 +-
 app/Http/Controllers/Api/Users/UsersController.php | 9 +-
 app/Http/Controllers/Web/Auth/LoginController.php | 13 +-
 app/Http/Controllers/Web/Auth/RegisterController.php | 13 +-
 app/Http/Controllers/Web/Auth/SocialAuthController.php | 15 +-
 app/Http/Controllers/Web/Auth/TwoFactorTokenController.php | 12 +-
 app/Http/Controllers/Web/Authorization/PermissionsController.php | 18 +-
 app/Http/Controllers/Web/Authorization/RolePermissionsController.php | 12 +-
 app/Http/Controllers/Web/Authorization/RolesController.php | 12 +-
 app/Http/Controllers/Web/InstallController.php | 2 +-
 app/Http/Controllers/Web/Profile/AvatarController.php | 12 +-
 app/Http/Controllers/Web/Profile/DetailsController.php | 12 +-
 app/Http/Controllers/Web/Profile/LoginDetailsController.php | 12 +-
 app/Http/Controllers/Web/Profile/ProfileController.php | 27 +-
 app/Http/Controllers/Web/Profile/SessionsController.php | 11 +-
 app/Http/Controllers/Web/Users/AvatarController.php | 14 +-
 app/Http/Controllers/Web/Users/DetailsController.php | 12 +-
 app/Http/Controllers/Web/Users/LoginDetailsController.php | 12 +-
 app/Http/Controllers/Web/Users/SessionsController.php | 13 +-
 app/Http/Controllers/Web/Users/UsersController.php | 12 +-
 app/Http/Kernel.php | 14 +-
 app/Http/Middleware/Authenticate.php | 16 +-
 app/Http/Middleware/CheckPermissions.php | 9 +-
 app/Http/Middleware/CheckRole.php | 9 +-
 app/Http/Middleware/EncryptCookies.php | 6 +-
 app/Http/Middleware/PreventRequestsDuringMaintenance.php | 17 +
 app/Http/Middleware/RedirectIfAuthenticated.php | 41 +-
 app/Http/Middleware/TrimStrings.php | 3 +-
 app/Http/Middleware/TrustHosts.php | 20 +
 app/Http/Middleware/TrustProxies.php | 15 +-
 app/Http/Middleware/UseApiGuard.php | 15 +-
 app/Http/Middleware/VerifyCsrfToken.php | 2 +-
 app/Http/Middleware/VerifyInstallation.php | 4 +
 app/Listeners/Login/UpdateLastLoginTimestamp.php | 13 +-
 app/Listeners/Registration/SendSignUpNotification.php | 8 +-
 app/Listeners/Users/ActivateUser.php | 8 +-
 app/Listeners/Users/InvalidateSessions.php | 8 +-
 app/Mail/UserRegistered.php | 13 +-
 app/Presenters/Presenter.php | 11 +-
 app/Providers/EventServiceProvider.php | 21 +-
 app/Providers/RouteServiceProvider.php | 15 +-
 app/Services/Auth/Social/SocialManager.php | 20 +-
 app/Support/Sidebar/Item.php | 2 +-
 composer.json | 36 +-
 config/app.php | 2 +-
 tests/Feature/Web/SocialAuthenticationTest.php | 3 +-


To 6.1.0 from 6.0.0

Added support for PHP 8 and fixed a few minor issues.

The list of modified and removed files is available below:

 app/Http/Controllers/Web/Auth/SocialAuthController.php |     2 +
 app/Http/Controllers/Web/Users/SessionsController.php | 2 +-
 app/Http/Middleware/RedirectIfAuthenticated.php | 4 +-
 app/Providers/AppServiceProvider.php | 2 +
 composer.json | 26 +-
 config/app.php | 2 +-
 package.json | 39 +-
 public/assets/css/app.css | 2 +-
 public/assets/js/vendor.js | 2 +-
 public/mix-manifest.json | 4 +-
 resources/js/app.js | 21 -
 resources/js/bootstrap.js | 34 +-
 resources/js/components/Example.vue | 23 -
 resources/lang/de.json | 2 +-
 resources/lang/sr.json | 2 +-
 resources/sass/components/switch.scss | 4 +-

To 6.0.0 from 5.0.1

Upgraded to Laravel 8 and fixed a few minor issues.

The list of modified and removed files is available below (test files are omitted for readability):

 app/Country.php                                                   |    3 +
 app/Http/Controllers/Api/Auth/RegistrationController.php | 2 +-
 app/Http/Controllers/Web/Users/AvatarController.php | 2 +-
 app/Permission.php | 3 +
 app/Providers/AppServiceProvider.php | 5 +
 app/Role.php | 14 +-
 app/Services/Auth/Social/SocialManager.php | 3 +-
 app/Support/DataArraySerializer.php | 100 ----
 app/User.php | 4 +-
 composer.json | 50 +-
 config/app.php | 3 +-
 database/factories/CountryFactory.php | 40 +-
 database/factories/PermissionFactory.php | 36 +-
 database/factories/RoleFactory.php | 36 +-
 database/factories/TokenFactory.php | 16 -
 database/factories/UserFactory.php | 63 ++-
 database/migrations/2015_10_10_170827_create_users_table.php | 2 +-
 database/{seeds => seeders}/.gitkeep | 0
 database/{seeds => seeders}/CountriesSeeder.php | 6 +-
 database/{seeds => seeders}/DatabaseSeeder.php | 10 +-
 database/{seeds => seeders}/PermissionsSeeder.php | 2 +
 database/{seeds => seeders}/RolesSeeder.php | 2 +
 database/{seeds => seeders}/UserSeeder.php | 2 +
 phpunit.xml | 66 ++-
 resources/views/user/edit.blade.php | 1 -
 routes/api.php | 11 +-
 routes/web.php | 12 +-

To 5.0.1 from 4.0.1

Bugfix release to fix the installation wizard. The only file that has been updated is 

app/Http/Controllers/Web/InstallController.php

To 5.0.0 from 4.0.1

Upgraded to Laravel 7 and fixed a few reported issues. API responses and authentication are completely changed in this version and Vanguard is now using Laravel's first-party packages for this.

The list of modified and removed files is available below (test files are omitted for readability):

 app/Exceptions/Handler.php                                                      |    22 +-
 app/Http/Controllers/Api/ApiController.php | 122 +-
 app/Http/Controllers/Api/Auth/AuthController.php | 60 +-
 app/Http/Controllers/Api/Auth/Password/RemindController.php | 12 +-
 app/Http/Controllers/Api/Auth/Password/ResetController.php | 10 +-
 app/Http/Controllers/Api/Auth/RegistrationController.php | 4 +-
 app/Http/Controllers/Api/Auth/SocialLoginController.php | 6 +-
 app/Http/Controllers/Api/Auth/VerificationController.php | 104 +
 app/Http/Controllers/Api/Authorization/PermissionsController.php | 35 +-
 app/Http/Controllers/Api/Authorization/RolePermissionsController.php | 23 +-
 app/Http/Controllers/Api/Authorization/RolesController.php | 40 +-
 app/Http/Controllers/Api/CountriesController.php | 11 +-
 app/Http/Controllers/Api/Profile/AuthDetailsController.php | 15 +-
 app/Http/Controllers/Api/Profile/AvatarController.php | 23 +-
 app/Http/Controllers/Api/Profile/DetailsController.php | 19 +-
 app/Http/Controllers/Api/Profile/SessionsController.php | 10 +-
 app/Http/Controllers/Api/Profile/TwoFactorController.php | 16 +-
 app/Http/Controllers/Api/SessionsController.php | 10 +-
 app/Http/Controllers/Api/SettingsController.php | 2 -
 app/Http/Controllers/Api/StatsController.php | 13 +-
 app/Http/Controllers/Api/Users/ActivityController.php | 49 -
 app/Http/Controllers/Api/Users/AvatarController.php | 16 +-
 app/Http/Controllers/Api/Users/SessionsController.php | 11 +-
 app/Http/Controllers/Api/Users/TwoFactorController.php | 13 +-
 app/Http/Controllers/Api/Users/UsersController.php | 59 +-
 app/Http/Controllers/Web/Auth/LoginController.php | 4 +-
 app/Http/Controllers/Web/InstallController.php | 21 +-
 app/Http/Filters/UserKeywordSearch.php | 19 +
 app/Http/Kernel.php | 9 +-
 app/Http/Middleware/Authenticate.php | 8 +-
 app/Http/Middleware/CheckIfBanned.php | 24 +
 app/Http/Middleware/UseApiGuard.php | 3 +-
 app/Http/Requests/Auth/ApiLoginRequest.php | 33 +
 app/Http/Requests/Auth/ApiVerifyEmailRequest.php | 21 +
 app/Http/Requests/Auth/Social/ApiAuthenticateRequest.php | 1 +
 app/Http/Requests/BinaryFileUploadRequest.php | 76 -
 app/Http/Requests/User/UploadAvatarRawRequest.php | 11 +-
 app/Http/Resources/CountryResource.php | 37 +
 app/Http/Resources/PermissionResource.php | 27 +
 app/Http/Resources/RoleResource.php | 38 +
 app/Http/Resources/SessionResource.php | 28 +
 app/Http/Resources/UserResource.php | 54 +
 app/Listeners/Users/{InvalidateSessionsAndTokens.php => InvalidateSessions.php} | 9 +-
 app/Providers/EventServiceProvider.php | 4 +-
 app/Repositories/User/EloquentUser.php | 8 +-
 app/Services/Auth/Api/ExtendsJwtValidation.php | 69 -
 app/Services/Auth/Api/JWT.php | 8 -
 app/Services/Auth/Api/JWTAuth.php | 8 -
 app/Services/Auth/Api/JWTServiceProvider.php | 39 -
 app/Services/Auth/Api/Token.php | 12 -
 app/Services/Auth/Api/TokenFactory.php | 82 -
 app/Transformers/CountryTransformer.php | 32 -
 app/Transformers/PermissionTransformer.php | 22 -
 app/Transformers/RoleTransformer.php | 33 -
 app/Transformers/SessionTransformer.php | 24 -
 app/Transformers/UserTransformer.php | 54 -
 app/User.php | 30 +-
 composer.json | 33 +-
 composer.lock | 3055 ++++++++++++++----------
 config/app.php | 7 +-
 config/auth.php | 22 +-
 config/cache.php | 1 +
 config/cors.php | 34 +
 config/database.php | 7 +
 config/jwt.php | 262 ---
 config/logging.php | 12 +-
 config/mail.php | 139 +-
 config/queue.php | 1 +
 config/sanctum.php | 46 +
 config/services.php | 1 +
 config/session.php | 2 +-
 config/view.php | 5 +-
 database/migrations/2015_10_10_171049_create_social_login_table.php | 2 +-
 database/migrations/2015_12_29_224252_create_user_activity_table.php | 2 +-
 database/migrations/2017_04_13_200254_create_api_tokens_table.php | 51 -
 database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php | 36 +
 package.json | 17 +-
 public/assets/css/app.css | 8 +-
 public/assets/css/vendor.css | 2 +-
 public/assets/js/vendor.js | 12 +-
 public/mix-manifest.json | 6 +-
 readme.md | 2 +-
 resources/views/auth/login.blade.php | 2 +-
 resources/views/user/profile.blade.php | 1 -
 routes/api.php | 89 +-


To 4.0.1 from 4.0.0

Fixed a few small bugs and slightly updated the registration flow. From this release on the `/Documentation/Patches` folder will be removed from the ZIP archive since Git patches are being detected as a virus by some anti-virus applications.

The list of modified files is available below

 app/Http/Controllers/Web/Auth/RegisterController.php           |  6 ++++--
 app/Http/Controllers/Web/DashboardController.php | 6 +++++-
 app/Listeners/Users/ActivateUser.php | 33 +++++++++++++++++++++++++++++++++
 app/Providers/EventServiceProvider.php | 5 +++++
 app/User.php | 2 +-
 config/app.php | 2 +-
 config/filesystems.php | 2 +-
 resources/lang/de.json | 5 +++--
 resources/lang/sr.json | 3 ++-
 resources/views/dashboard/{admin.blade.php => index.blade.php} | 1 +
 tests/Feature/Web/RegistrationTest.php | 4 ++--
 11 files changed, 58 insertions(+), 11 deletions(-)


To 4.0.0 from 3.2.1

Version 4 of Vanguard, which runs on Laravel 6, comes with a lot of improvements and, if you have any projects created using the previous versions of Vanguard, it's recommended to move all your modifications to a clean Vanguard 4 installation than to upgrade your existing Vanguard version.

The reason for this is because there are a lot of changed files between Vanguard 3.2.1 and Vanguard 4, and it can take pretty long to update all the files to their latest versions.

Anyways, if you decide to upgrade the Vanguard manually since there are a lot of the changes files, you will need to go through each file from the list of modified files available below and compare it with the one from version 4. It's highly recommended to check the Git patch file that contains all the differences between those two versions. The patch file is located inside the Documentation/Patches directory and you can use any text editor to open it (something like this Chrome plugin will also be a good option).

Modified files:

 .gitignore                                                                                                 |    1 +
 app/Events/User/Registered.php                                                                             |   30 -
 app/Events/User/ResetedPasswordViaEmail.php                                                                |   26 -
 app/Exceptions/Handler.php                                                                                 |    8 -
 app/Http/Controllers/Api/ActivityController.php                                                            |   39 -
 app/Http/Controllers/Api/Auth/AuthController.php                                                           |   10 +-
 app/Http/Controllers/Api/Auth/Password/RemindController.php                                                |    4 +-
 app/Http/Controllers/Api/Auth/Password/ResetController.php                                                 |   10 +-
 app/Http/Controllers/Api/Auth/RegistrationController.php                                                   |   19 +-
 app/Http/Controllers/Api/Auth/SocialLoginController.php                                                    |    2 +-
 app/Http/Controllers/Api/Profile/AvatarController.php                                                      |    1 -
 app/Http/Controllers/Api/SessionsController.php                                                            |    2 +
 app/Http/Controllers/Api/SettingsController.php                                                            |    4 +-
 app/Http/Controllers/Api/StatsController.php                                                               |   43 +-
 app/Http/Controllers/Api/Users/AvatarController.php                                                        |   30 +-
 app/Http/Controllers/Api/Users/UsersController.php                                                         |    7 +-
 app/Http/Controllers/Web/ActivityController.php                                                            |   68 --
 app/Http/Controllers/Web/Auth/AuthController.php                                                           |  374 -------
 app/Http/Controllers/Web/Auth/ForgotPasswordController.php                                                 |   45 +
 app/Http/Controllers/Web/Auth/LoginController.php                                                          |  150 +++
 app/Http/Controllers/Web/Auth/PasswordController.php                                                       |  113 --
 app/Http/Controllers/Web/Auth/RegisterController.php                                                       |   63 ++
 app/Http/Controllers/Web/Auth/ResetPasswordController.php                                                  |   61 +
 app/Http/Controllers/Web/Auth/SocialAuthController.php                                                     |   25 +-
 app/Http/Controllers/Web/Auth/TwoFactorTokenController.php                                                 |   75 ++
 app/Http/Controllers/Web/Auth/VerificationController.php                                                   |   41 +
 app/Http/Controllers/Web/{ => Authorization}/PermissionsController.php                                     |   74 +-
 app/Http/Controllers/Web/Authorization/RolePermissionsController.php                                       |   53 +
 app/Http/Controllers/Web/{ => Authorization}/RolesController.php                                           |   43 +-
 app/Http/Controllers/Web/DashboardController.php                                                           |   78 +-
 app/Http/Controllers/Web/InstallController.php                                                             |   14 +-
 app/Http/Controllers/Web/Profile/AvatarController.php                                                      |   85 ++
 app/Http/Controllers/Web/Profile/DetailsController.php                                                     |   45 +
 app/Http/Controllers/Web/Profile/LoginDetailsController.php                                                |   51 +
 app/Http/Controllers/Web/Profile/ProfileController.php                                                     |   64 ++
 app/Http/Controllers/Web/Profile/SessionsController.php                                                    |   52 +
 app/Http/Controllers/Web/ProfileController.php                                                             |  224 ----
 app/Http/Controllers/Web/SettingsController.php                                                            |   36 +-
 app/Http/Controllers/Web/TwoFactorController.php                                                           |   10 +-
 app/Http/Controllers/Web/Users/AvatarController.php                                                        |   83 ++
 app/Http/Controllers/Web/Users/DetailsController.php                                                       |   76 ++
 app/Http/Controllers/Web/Users/LoginDetailsController.php                                                  |   54 +
 app/Http/Controllers/Web/Users/SessionsController.php                                                      |   62 +
 app/Http/Controllers/Web/Users/UsersController.php                                                         |  163 +++
 app/Http/Controllers/Web/UsersController.php                                                               |  326 ------
 app/Http/Kernel.php                                                                                        |   34 +-
 app/Http/Middleware/EncryptCookies.php                                                                     |    2 +-
 app/Http/Middleware/{Registration.php => PasswordResetEnabled.php}                                         |    6 +-
 app/Http/Middleware/RegistrationEnabled.php                                                                |   25 +
 app/Http/Middleware/TwoFactorEnabled.php                                                                   |   25 +
 app/Http/Requests/Activity/GetActivitiesRequest.php                                                        |   28 -
 app/Http/Requests/Auth/PasswordResetRequest.php                                                            |   10 +
 app/Http/Requests/Auth/RegisterRequest.php                                                                 |   31 +-
 app/Http/Requests/Permission/BasePermissionRequest.php                                                     |    8 +-
 app/Http/Requests/Permission/CreatePermissionRequest.php                                                   |    9 +-
 app/Http/Requests/Permission/RemovePermissionRequest.php                                                   |    3 +
 app/Http/Requests/Permission/UpdatePermissionRequest.php                                                   |   11 +-
 app/Http/Requests/User/CreateUserRequest.php                                                               |    1 +
 app/Listeners/PermissionEventsSubscriber.php                                                               |   66 --
 app/Listeners/Registration/SendConfirmationEmail.php                                                       |   43 -
 app/Listeners/Registration/SendSignUpNotification.php                                                      |    8 +-
 app/Listeners/RoleEventsSubscriber.php                                                                     |   72 --
 app/Listeners/UserEventsSubscriber.php                                                                     |  204 ----
 app/Mail/ResetPassword.php                                                                                 |   37 +
 app/Mail/UserRegistered.php                                                                                |   41 +
 app/Notifications/EmailConfirmation.php                                                                    |   54 -
 app/Notifications/ResetPassword.php                                                                        |   53 -
 app/Notifications/UserRegistered.php                                                                       |   70 --
 app/Presenters/Presenter.php                                                                               |   46 +
 app/Presenters/Traits/Presentable.php                                                                      |   26 +
 app/Presenters/UserPresenter.php                                                                           |   25 +-
 app/Providers/AppServiceProvider.php                                                                       |    5 +-
 app/Providers/EventServiceProvider.php                                                                     |   13 +-
 app/Providers/VanguardServiceProvider.php                                                                  |   52 +
 app/Repositories/Activity/ActivityRepository.php                                                           |   59 -
 app/Repositories/Activity/EloquentActivity.php                                                             |   98 --
 app/Rules/ValidPermissionName.php                                                                          |   44 +
 app/Services/Auth/Api/TokenFactory.php                                                                     |    2 +
 app/Services/Auth/ThrottlesLogins.php                                                                      |   81 ++
 app/Services/Logging/UserActivity/Activity.php                                                             |   20 -
 app/Services/Logging/UserActivity/Logger.php                                                               |   86 --
 app/Services/Upload/UserAvatarManager.php                                                                  |   89 +-
 app/Support/Enum/UserStatus.php                                                                            |    6 +-
 app/Support/Plugins/Dashboard/Dashboard.php                                                                |   17 +
 app/Support/Plugins/Dashboard/Widgets/BannedUsers.php                                                      |   44 +
 app/Support/Plugins/Dashboard/Widgets/LatestRegistrations.php                                              |   43 +
 app/Support/Plugins/Dashboard/Widgets/NewUsers.php                                                         |   43 +
 app/Support/Plugins/Dashboard/Widgets/RegistrationHistory.php                                              |   71 ++
 app/Support/Plugins/Dashboard/Widgets/TotalUsers.php                                                       |   43 +
 app/Support/Plugins/Dashboard/Widgets/UnconfirmedUsers.php                                                 |   44 +
 app/Support/Plugins/Dashboard/Widgets/UserActions.php                                                      |   27 +
 app/Support/Plugins/RolesAndPermissions.php                                                                |   31 +
 app/Support/Plugins/Settings.php                                                                           |   40 +
 app/Support/Plugins/Users.php                                                                              |   18 +
 app/Support/Sidebar/Item.php                                                                               |  249 +++++
 app/Support/helpers.php                                                                                    |   21 -
 app/Transformers/ActivityTransformer.php                                                                   |   36 -
 app/Transformers/UserTransformer.php                                                                       |    3 +-
 app/User.php                                                                                               |   38 +-
 composer.json                                                                                              |   56 +-
 composer.lock                                                                                              | 2847 +-
 config/app.php                                                                                             |   19 +-
 config/broadcasting.php                                                                                    |    3 +-
 config/cache.php                                                                                           |   13 +-
 config/database.php                                                                                        |   48 +-
 config/logging.php                                                                                         |   17 +-
 config/mail.php                                                                                            |   11 +
 config/plugins.php                                                                                         |   21 +
 config/queue.php                                                                                           |   10 +-
 config/services.php                                                                                        |   10 +-
 config/session.php                                                                                         |    4 +-
 config/setting.php                                                                                         |   85 ++
 config/settings.php                                                                                        |   17 -
 database/factories/ActivityFactory.php                                                                     |   15 -
 database/factories/RoleFactory.php                                                                         |    2 +-
 database/factories/UserFactory.php                                                                         |    5 +-
 database/migrations/2014_10_12_100000_create_password_resets_table.php                                     |    4 +-
 database/migrations/2015_08_25_172600_create_settings_table.php                                            |   42 -
 database/migrations/2015_10_10_170827_create_users_table.php                                               |    2 +-
 database/migrations/2015_12_29_224252_create_user_activity_table.php                                       |    2 +
 database/migrations/2017_08_24_000000_create_settings_table.php                                            |   41 +
 database/migrations/2019_08_22_140712_create_announcements_table.php                                       |   50 +
 database/seeds/UserSeeder.php                                                                              |    3 +-
 package-lock.json                                                                                          | 5165 +-
 phpunit.xml                                                                                                |    3 +
 public/assets/css/app.css                                                                                  |    2 +-
 public/assets/js/as/app.js                                                                                 |   14 +-
 public/mix-manifest.json                                                                                   |    2 +-
 public/vendor/plugins/announcements/css/announcements.css                                                  |    1 +
 public/vendor/plugins/announcements/js/announcements.js                                                    |    1 +
 public/vendor/plugins/announcements/mix-manifest.json                                                      |    4 +
 resources/lang/de.json                                                                                     |  242 ++++
 resources/lang/de/app.php                                                                                  |  328 +-----
 resources/lang/de/log.php                                                                                  |   32 -
 resources/lang/en/app.php                                                                                  |  331 +-----
 resources/lang/en/log.php                                                                                  |   32 -
 resources/lang/sr.json                                                                                     |  242 ++++
 resources/lang/sr/app.php                                                                                  |  335 +-----
 resources/lang/sr/log.php                                                                                  |   32 -
 resources/sass/_variables.scss                                                                             |   12 +-
 resources/sass/app.scss                                                                                    |    2 +-
 resources/sass/components/card.scss                                                                        |   29 +-
 resources/sass/components/general.scss                                                                     |   12 +-
 resources/sass/components/input.scss                                                                       |    9 +-
 resources/sass/components/navbar.scss                                                                      |   98 +-
 resources/sass/components/sidebar.scss                                                                     |  279 +++--
 resources/sass/components/util.scss                                                                        |   16 +
 resources/views/activity/index.blade.php                                                                   |  100 --
 resources/views/auth/login.blade.php                                                                       |   40 +-
 resources/views/auth/{password/remind.blade.php => passwords/email.blade.php}                              |   26 +-
 resources/views/auth/{password => passwords}/reset.blade.php                                               |   43 +-
 resources/views/auth/register.blade.php                                                                    |   90 +-
 resources/views/auth/token.blade.php                                                                       |   18 +-
 resources/views/auth/tos.blade.php                                                                         |   24 +
 resources/views/auth/verify.blade.php                                                                      |   30 +
 resources/views/dashboard/admin.blade.php                                                                  |  147 +--
 resources/views/dashboard/default.blade.php                                                                |  102 --
 resources/views/emails/notifications/new-registration.blade.php                                            |   10 -
 resources/views/emails/password/remind.blade.php                                                           |   12 -
 resources/views/emails/registration/confirmation.blade.php                                                 |   13 -
 resources/views/errors/403.blade.php                                                                       |    8 -
 resources/views/errors/404.blade.php                                                                       |   12 -
 resources/views/errors/500.blade.php                                                                       |   10 -
 resources/views/errors/503.blade.php                                                                       |    8 -
 resources/views/layouts/app.blade.php                                                                      |   10 +-
 resources/views/layouts/auth.blade.php                                                                     |    5 +-
 resources/views/layouts/errors.blade.php                                                                   |   35 -
 resources/views/layouts/install.blade.php                                                                  |    2 +-
 resources/views/mail/reset-password.blade.php                                                              |   22 +
 resources/views/mail/user-registered.blade.php                                                             |   19 +
 resources/views/partials/navbar.blade.php                                                                  |   33 +-
 resources/views/partials/sidebar.blade.php                                                                 |  122 --
 resources/views/partials/sidebar/items.blade.php                                                           |   26 +
 resources/views/partials/sidebar/main.blade.php                                                            |   37 +
 resources/views/permission/add-edit.blade.php                                                              |   46 +-
 resources/views/permission/index.blade.php                                                                 |   34 +-
 resources/views/plugins/dashboard/widgets/banned-users.blade.php                                           |   14 +
 resources/views/plugins/dashboard/widgets/latest-registrations.blade.php                                   |   31 +
 resources/views/plugins/dashboard/widgets/new-users.blade.php                                              |   14 +
 resources/views/plugins/dashboard/widgets/registration-history-scripts.blade.php                           |   12 +
 resources/views/plugins/dashboard/widgets/registration-history.blade.php                                   |   11 +
 resources/views/plugins/dashboard/widgets/total-users.blade.php                                            |   14 +
 resources/views/plugins/dashboard/widgets/unconfirmed-users.blade.php                                      |   14 +
 resources/views/plugins/dashboard/widgets/user-actions.blade.php                                           |   53 +
 resources/views/role/add-edit.blade.php                                                                    |   46 +-
 resources/views/role/index.blade.php                                                                       |   34 +-
 resources/views/settings/auth.blade.php                                                                    |   12 +-
 resources/views/settings/general.blade.php                                                                 |   18 +-
 resources/views/settings/notifications.blade.php                                                           |   30 +-
 resources/views/settings/partials/auth.blade.php                                                           |   35 +-
 resources/views/settings/partials/recaptcha.blade.php                                                      |   24 +-
 resources/views/settings/partials/registration.blade.php                                                   |   31 +-
 resources/views/settings/partials/throttling.blade.php                                                     |   39 +-
 resources/views/settings/partials/two-factor.blade.php                                                     |   29 +-
 resources/views/user/add.blade.php                                                                         |   20 +-
 resources/views/user/edit.blade.php                                                                        |   60 +-
 resources/views/user/list.blade.php                                                                        |   41 +-
 resources/views/user/partials/auth.blade.php                                                               |   46 +-
 resources/views/user/partials/avatar.blade.php                                                             |   31 +-
 resources/views/user/partials/details.blade.php                                                            |   42 +-
 resources/views/user/partials/row.blade.php                                                                |   35 +-
 resources/views/user/partials/two-factor.blade.php                                                         |   40 +-
 resources/views/user/profile.blade.php                                                                     |   58 +-
 resources/views/user/sessions.blade.php                                                                    |   34 +-
 resources/views/user/two-factor-verification.blade.php                                                     |   25 +-
 resources/views/user/view.blade.php                                                                        |   99 +-
 resources/views/vendor/mail/html/button.blade.php                                                          |   19 +
 resources/views/vendor/mail/html/footer.blade.php                                                          |   11 +
 resources/views/vendor/mail/html/header.blade.php                                                          |    7 +
 resources/views/vendor/mail/html/layout.blade.php                                                          |   54 +
 resources/views/vendor/mail/html/message.blade.php                                                         |   27 +
 resources/views/vendor/mail/html/panel.blade.php                                                           |   13 +
 resources/views/vendor/mail/html/promotion.blade.php                                                       |    7 +
 resources/views/vendor/mail/html/promotion/button.blade.php                                                |   13 +
 resources/views/vendor/mail/html/subcopy.blade.php                                                         |    7 +
 resources/views/vendor/mail/html/table.blade.php                                                           |    3 +
 resources/views/vendor/mail/html/themes/default.css                                                        |  307 +++++
 resources/views/vendor/mail/text/button.blade.php                                                          |    1 +
 resources/views/vendor/mail/text/footer.blade.php                                                          |    1 +
 resources/views/vendor/mail/text/header.blade.php                                                          |    1 +
 resources/views/vendor/mail/text/layout.blade.php                                                          |    9 +
 resources/views/vendor/mail/text/message.blade.php                                                         |   27 +
 resources/views/vendor/mail/text/panel.blade.php                                                           |    1 +
 resources/views/vendor/mail/text/promotion.blade.php                                                       |    1 +
 resources/views/vendor/mail/text/promotion/button.blade.php                                                |    1 +
 resources/views/vendor/mail/text/subcopy.blade.php                                                         |    1 +
 resources/views/vendor/mail/text/table.blade.php                                                           |    1 +
 resources/views/vendor/notifications/email.blade.php                                                       |    6 +-
 routes/api.php                                                                                             |   16 +-
 routes/web.php                                                                                             |  458 +++-----
 storage/app/.gitignore                                                                                     |    0
 storage/framework/.gitignore                                                                               |    1 +
 storage/settings.json                                                                                      |    2 +-
 tests/CreatesApplication.php                                                                               |   24 +
 tests/Feature/Api/Auth/AuthControllerTest.php                                                              |  162 +++
 tests/Feature/Api/Auth/Password/RemindControllerTest.php                                                   |   38 +
 tests/Feature/{Http/Controllers => }/Api/Auth/Password/ResetControllerTest.php                             |   46 +-
 tests/Feature/Api/Auth/RegistrationControllerTest.php                                                      |  104 ++
 tests/Feature/{Http/Controllers => }/Api/Auth/SocialLoginControllerTest.php                                |   69 +-
 tests/Feature/Api/Authorization/PermissionsControllerTest.php                                              |  161 +++
 tests/Feature/{Http/Controllers => }/Api/Authorization/RolePermissionsControllerTest.php                   |   56 +-
 tests/Feature/Api/Authorization/RolesControllerTest.php                                                    |  176 +++
 tests/Feature/{Http/Controllers => }/Api/CountriesControllerTest.php                                       |   16 +-
 tests/Feature/Api/Profile/AuthDetailsControllerTest.php                                                    |   83 ++
 tests/Feature/{Http/Controllers => }/Api/Profile/AvatarControllerTest.php                                  |   74 +-
 tests/Feature/Api/Profile/DetailsControllerTest.php                                                        |  123 ++
 tests/Feature/{Http/Controllers => }/Api/Profile/SessionsControllerTest.php                                |   19 +-
 tests/Feature/{Http/Controllers => }/Api/Profile/TwoFactorControllerTest.php                               |  119 +-
 tests/Feature/{Http/Controllers => }/Api/SessionsControllerTest.php                                        |   61 +-
 tests/Feature/Api/SettingsControllerTest.php                                                               |   38 +
 tests/Feature/{Http/Controllers => }/Api/StatsControllerTest.php                                           |   53 +-
 tests/Feature/Api/Users/AvatarControllerTest.php                                                           |  147 +++
 tests/Feature/{Http/Controllers => }/Api/Users/SessionsControllerTest.php                                  |   26 +-
 tests/Feature/Api/Users/TwoFactorControllerTest.php                                                        |  170 +++
 tests/Feature/{Http/Controllers => }/Api/Users/UsersControllerTest.php                                     |  127 ++-
 tests/Feature/ApiTestCase.php                                                                              |   22 +-
 tests/Feature/FunctionalTestCase.php                                                                       |  203 ----
 tests/Feature/Http/Controllers/Api/ActivityControllerTest.php                                              |  118 --
 tests/Feature/Http/Controllers/Api/Auth/AuthControllerTest.php                                             |  163 ---
 tests/Feature/Http/Controllers/Api/Auth/Password/RemindControllerTest.php                                  |   44 -
 tests/Feature/Http/Controllers/Api/Auth/RegistrationControllerTest.php                                     |  122 --
 tests/Feature/Http/Controllers/Api/Authorization/PermissionsControllerTest.php                             |  190 ----
 tests/Feature/Http/Controllers/Api/Authorization/RolesControllerTest.php                                   |  203 ----
 tests/Feature/Http/Controllers/Api/Profile/AuthDetailsControllerTest.php                                   |   88 --
 tests/Feature/Http/Controllers/Api/Profile/DetailsControllerTest.php                                       |  125 ---
 tests/Feature/Http/Controllers/Api/SettingsControllerTest.php                                              |   37 -
 tests/Feature/Http/Controllers/Api/Users/ActivityControllerTest.php                                        |  109 --
 tests/Feature/Http/Controllers/Api/Users/AvatarControllerTest.php                                          |  154 ---
 tests/Feature/Http/Controllers/Api/Users/TwoFactorControllerTest.php                                       |  196 ----
 tests/Feature/Http/Controllers/Web/ActivityControllerTest.php                                              |   83 --
 tests/Feature/Http/Controllers/Web/Auth/AuthControllerTest.php                                             |  438 --------
 tests/Feature/Http/Controllers/Web/Auth/PasswordControllerTest.php                                         |  159 ---
 tests/Feature/Http/Controllers/Web/PermissionsControllerTest.php                                           |  181 ---
 tests/Feature/Http/Controllers/Web/ProfileControllerTest.php                                               |  266 -----
 tests/Feature/Http/Controllers/Web/RolesControllerTest.php                                                 |  138 ---
 tests/Feature/Http/Controllers/Web/SettingsControllerTest.php                                              |   34 -
 tests/Feature/Http/Controllers/Web/UsersControllerTest.php                                                 |  464 --------
 tests/Feature/ImpersonateUsersTest.php                                                                     |   96 --
 tests/Feature/Listeners/BaseListenerTestCase.php                                                           |   29 -
 tests/Feature/Listeners/PermissionEventsSubscriberTest.php                                                 |   38 -
 tests/Feature/Listeners/RoleEventsSubscriberTest.php                                                       |   44 -
 tests/Feature/Listeners/UserEventsSubscriberTest.php                                                       |  178 ---
 tests/Feature/Repositories/Activity/EloquentActivityTest.php                                               |  128 ---
 tests/Feature/Repositories/Role/EloquentRoleTest.php                                                       |  108 --
 tests/Feature/Web/ImpersonateUsersTest.php                                                                 |   91 ++
 tests/Feature/Web/LoginTest.php                                                                            |  177 +++
 tests/Feature/Web/PermissionsTest.php                                                                      |  348 ++++++
 tests/Feature/Web/RegistrationTest.php                                                                     |  172 +++
 tests/Feature/Web/RolesTest.php                                                                            |  234 ++++
 tests/Feature/Web/Settings/AuthSettingsTest.php                                                            |  105 ++
 tests/Feature/Web/Settings/CaptchaSettingsTest.php                                                         |   49 +
 tests/Feature/Web/Settings/GeneralSettingsTest.php                                                         |   62 +
 tests/Feature/Web/Settings/TwoFactorSettingsTest.php                                                       |   49 +
 tests/Feature/Web/SettingsTest.php                                                                         |  137 +++
 tests/Feature/{Http/Controllers/Web/Auth/SocialAuthControllerTest.php => Web/SocialAuthenticationTest.php} |  141 +--
 tests/Feature/{Http/Controllers/Web/TwoFactorControllerTest.php => Web/TwoFactorAuthTest.php}              |  276 ++---
 tests/Feature/Web/UpdateProfileTest.php                                                                    |  251 +++++
 tests/Feature/Web/UsersTest.php                                                                            |  710 ++++++++++++
 tests/Setup/RoleFactory.php                                                                                |   47 +
 tests/Setup/UserFactory.php                                                                                |   95 ++
 tests/TestCase.php                                                                                         |   65 +-
 tests/{unit => Unit}/Presenters/UserPresenterTest.php                                                      |   31 +-
 tests/{Feature => Unit}/Repositories/Country/EloquentCountryTest.php                                       |   15 +-
 tests/{Feature => Unit}/Repositories/Permission/EloquentPermissionTest.php                                 |   29 +-
 tests/Unit/Repositories/Role/EloquentRoleTest.php                                                          |  117 ++
 tests/{Feature => Unit}/Repositories/Session/DbSessionTest.php                                             |   32 +-
 tests/{Feature => Unit}/Repositories/User/EloquentUserTest.php                                             |  195 ++--
 tests/{Feature => Unit}/Services/Auth/Api/TokenFactoryTest.php                                             |   37 +-
 tests/UpdatesSettings.php                                                                                  |   22 +
 tests/files/.DS_Store                                                                                      |  Bin 6148 -> 0 bytes
 tests/files/image.png                                                                                      |  Bin 38306 -> 0 bytes
 312 files changed, 15667 insertions(+), 16557 deletions(-)

To 3.2.1 from 3.2.0

Installation bugs fixed. The list of modified files is given below:

 app/Http/Controllers/Web/InstallController.php | 3 ++-
 config/app.php                                 | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

To 3.2.0 from 3.1.0

Vanguard's codebase has been upgraded to Laravel 5.8. The recommended way to upgrade your application is to make sure that your composer.json file matches the composer.json file from this release. Once you update your composer.json file, just run composer update to install those packages, and then you can go through the list of changed files inside the list below and make sure that they match the files from this release.

Below is the list of updated files:

app/Http/Controllers/Web/Auth/AuthController.php                         |    7 +-
 app/Http/Controllers/Web/PermissionsController.php                       |    3 +-
 app/Http/Controllers/Web/ProfileController.php                           |   24 +-
 app/Http/Controllers/Web/UsersController.php                             |    5 +-
 app/Http/Requests/Auth/LoginRequest.php                                  |    2 +
 app/Http/Requests/Auth/PasswordResetRequest.php                          |    2 +-
 app/Http/Requests/Auth/RegisterRequest.php                               |    2 +-
 app/Http/Requests/BinaryFileUploadRequest.php                            |    5 +-
 app/Http/Requests/User/UpdateLoginDetailsRequest.php                     |    2 +-
 app/Listeners/Registration/SendConfirmationEmail.php                     |    3 +-
 app/Providers/HtmlServiceProvider.php                                    |    8 +-
 app/Repositories/Role/EloquentRole.php                                   |    2 -
 app/Services/Auth/Api/TokenFactory.php                                   |    3 +-
 app/Services/Auth/Social/SocialManager.php                               |    3 +-
 app/Services/Upload/UserAvatarManager.php                                |    5 +-
 app/Support/Authorization/AuthorizationRoleTrait.php                     |    3 +-
 composer.json                                                            |   14 +-
 composer.lock                                                            | 1216 ++++++++++++--------
 config/app.php                                                           |    2 +-
 config/cache.php                                                         |   10 +-
 database/factories/PermissionFactory.php                                 |    3 +-
 database/factories/RoleFactory.php                                       |    3 +-
 database/factories/TokenFactory.php                                      |    3 +-
 database/factories/UserFactory.php                                       |    3 +-
 phpunit.xml                                                              |    1 +
 resources/lang/de/passwords.php                                          |    2 +-
 resources/lang/en/passwords.php                                          |    2 +-
 resources/lang/sr/passwords.php                                          |    2 +-
 tests/Feature/ApiTestCase.php                                            |    7 -
 tests/Feature/FunctionalTestCase.php                                     |    2 +-
 tests/Feature/Http/Controllers/Api/Auth/Password/ResetControllerTest.php |    6 +-
 tests/Feature/Http/Controllers/Api/Auth/RegistrationControllerTest.php   |   12 +-
 tests/Feature/Http/Controllers/Api/Profile/AuthDetailsControllerTest.php |    6 +-
 tests/Feature/Http/Controllers/Api/Profile/SessionsControllerTest.php    |   13 +-
 tests/Feature/Http/Controllers/Api/SessionsControllerTest.php            |    7 +-
 tests/Feature/Http/Controllers/Api/Users/SessionsControllerTest.php      |    9 +-
 tests/Feature/Http/Controllers/Web/ActivityControllerTest.php            |    2 +-
 tests/Feature/Http/Controllers/Web/Auth/AuthControllerTest.php           |    7 +-
 tests/Feature/Http/Controllers/Web/Auth/PasswordControllerTest.php       |    6 +-
 tests/Feature/Http/Controllers/Web/PermissionsControllerTest.php         |    2 +-
 tests/Feature/Http/Controllers/Web/ProfileControllerTest.php             |   35 +-
 tests/Feature/Http/Controllers/Web/RolesControllerTest.php               |    2 +-
 tests/Feature/Http/Controllers/Web/UsersControllerTest.php               |   25 +-
 tests/Feature/Listeners/BaseListenerTestCase.php                         |    2 +-
 tests/Feature/Listeners/PermissionEventsSubscriberTest.php               |    2 +-
 tests/Feature/Listeners/RoleEventsSubscriberTest.php                     |    2 +-
 tests/Feature/Listeners/UserEventsSubscriberTest.php                     |    2 +-
 tests/Feature/Repositories/Activity/EloquentActivityTest.php             |    2 +-
 tests/Feature/Repositories/Country/EloquentCountryTest.php               |    2 +-
 tests/Feature/Repositories/Permission/EloquentPermissionTest.php         |   11 +-
 tests/Feature/Repositories/Role/EloquentRoleTest.php                     |    2 +-
 tests/Feature/Repositories/Session/DbSessionTest.php                     |    9 +-
 tests/Feature/Repositories/User/EloquentUserTest.php                     |    9 +-
 tests/unit/Presenters/UserPresenterTest.php                              |    2 +-
 55 files changed, 5408 insertions(+), 3309 deletions(-)

To 3.1.0 from 3.0.1

Vanguard's codebase has been upgraded to Laravel 5.7. The recommended way to upgrade your application is to make sure that your composer.json file matches the composer.json file from this release. Once you update your composer.json file, just run composer update to install those packages, and then you can go through the list of changed files inside the list below and make sure that they match the files from this release.

Two-Factor Authentication has been improved in this version and all users who want to activate 2FA will receive the phone confirmation SMS first. The reason for this update is to prevent users from locking their accounts and using the wrong phone number.

Below is the list of updated files:

 .editorconfig | 15 +
 .env.example | 26 +-
 .gitattributes | 1 +
 .gitignore | 14 +-
 app/Console/Kernel.php | 11 +-
 app/Exceptions/Handler.php | 29 +-
 app/Http/Controllers/Api/Profile/TwoFactorController.php | 32 +-
 app/Http/Controllers/Api/Users/TwoFactorController.php | 37 +-
 app/Http/Controllers/Web/ProfileController.php | 56 +--
 app/Http/Controllers/Web/TwoFactorController.php | 137 +++++++
 app/Http/Controllers/Web/UsersController.php | 55 +--
 app/Http/Kernel.php | 1 +
 app/Http/Middleware/VerifyTwoFactorPhone.php | 42 +++
 app/Http/Requests/TwoFactor/DisableTwoFactorRequest.php | 11 +
 app/Http/Requests/{User => TwoFactor}/EnableTwoFactorRequest.php | 7 +-
 app/Http/Requests/TwoFactor/ReSendTwoFactorTokenRequest.php | 7 +
 app/Http/Requests/TwoFactor/TwoFactorRequest.php | 48 +++
 app/Http/Requests/TwoFactor/VerifyTwoFactorTokenRequest.php | 18 +
 app/Jobs/Job.php | 21 --
 app/Listeners/UserEventsSubscriber.php | 28 ++
 app/Policies/.gitkeep | 0
 app/Services/Auth/TwoFactor/Authy.php | 20 +-
 app/Services/Auth/TwoFactor/Contracts/Provider.php | 7 +
 app/Support/CanImpersonateUsers.php | 28 ++
 app/Transformers/UserTransformer.php | 4 +-
 app/User.php | 4 +-
 composer.json | 26 +-
 composer.lock | 1686 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
 config/app.php | 5 +-
 config/database.php | 21 +-
 config/filesystems.php | 38 +-
 config/hashing.php | 34 +-
 config/logging.php | 13 +-
 config/mail.php | 8 +-
 config/queue.php | 23 +-
 config/services.php | 4 +
 config/session.php | 4 +-
 database/migrations/2015_12_29_224252_create_user_activity_table.php | 8 +-
 database/migrations/2015_12_30_171734_add_foreign_keys.php | 16 +-
 database/migrations/2017_04_13_200254_create_api_tokens_table.php | 8 +-
 phpunit.xml | 4 +-
 public/assets/css/app.css | 2 +-
 public/assets/js/as/two-factor.js | 36 ++
 public/mix-manifest.json | 2 +-
 public/svg/403.svg | 1 +
 public/svg/404.svg | 1 +
 public/svg/500.svg | 1 +
 public/svg/503.svg | 1 +
 readme.md | 4 +
 resources/{assets => }/js/app.js | 0
 resources/{assets => }/js/bootstrap.js | 0
 resources/{assets => }/js/components/Example.vue | 0
 resources/lang/de/app.php | 14 +-
 resources/lang/de/log.php | 5 +-
 resources/lang/en/app.php | 14 +-
 resources/lang/en/log.php | 5 +-
 resources/lang/sr/app.php | 14 +-
 resources/lang/sr/log.php | 5 +-
 resources/{assets => }/sass/_variables.scss | 0
 resources/{assets => }/sass/app.scss | 2 +-
 resources/{assets => }/sass/components/avatar.scss | 0
 resources/{assets => }/sass/components/button.scss | 0
 resources/{assets => }/sass/components/card.scss | 4 +
 resources/{assets => }/sass/components/datepicker.scss | 0
 resources/{assets => }/sass/components/general.scss | 0
 resources/{assets => }/sass/components/input.scss | 0
 resources/{assets => }/sass/components/list-group.scss | 0
 resources/{assets => }/sass/components/nav-tabs.scss | 0
 resources/{assets => }/sass/components/navbar.scss | 0
 resources/{assets => }/sass/components/sidebar.scss | 0
 resources/{assets => }/sass/components/sweet-alert.scss | 0
 resources/{assets => }/sass/components/switch.scss | 0
 resources/{assets => }/sass/components/table.scss | 0
 resources/{assets => }/sass/components/util.scss | 0
 resources/views/auth/token.blade.php | 4 +-
 resources/views/partials/navbar.blade.php | 15 +
 resources/views/settings/notifications.blade.php | 2 +
 resources/views/user/edit.blade.php | 5 +-
 resources/views/user/partials/row.blade.php | 7 +
 resources/views/user/profile.blade.php | 4 +-
 resources/views/user/two-factor-verification.blade.php | 69 ++++
 resources/views/user/view.blade.php | 8 +
 routes/api.php | 2 +
 routes/channels.php | 16 +
 routes/web.php | 51 ++-
 storage/framework/cache/.gitignore | 1 +
 storage/framework/cache/data/.gitignore | 2 +
 storage/settings.json | 2 +-
 tests/Feature/FunctionalTestCase.php | 16 +-
 tests/Feature/Http/Controllers/Api/Auth/AuthControllerTest.php | 4 -
 tests/Feature/Http/Controllers/Api/Auth/Password/RemindControllerTest.php | 41 +--
 tests/Feature/Http/Controllers/Api/Auth/Password/ResetControllerTest.php | 3 -
 tests/Feature/Http/Controllers/Api/Auth/RegistrationControllerTest.php | 45 ++-
 tests/Feature/Http/Controllers/Api/Profile/TwoFactorControllerTest.php | 63 +++-
 tests/Feature/Http/Controllers/Api/Users/TwoFactorControllerTest.php | 63 +++-
 tests/Feature/Http/Controllers/Api/Users/UsersControllerTest.php | 39 +-
 tests/Feature/Http/Controllers/Web/Auth/AuthControllerTest.php | 106 +++---
 tests/Feature/Http/Controllers/Web/Auth/PasswordControllerTest.php | 32 +-
 tests/Feature/Http/Controllers/Web/Auth/SocialAuthControllerTest.php | 1 -
 tests/Feature/Http/Controllers/Web/ProfileControllerTest.php | 65 ----
 tests/Feature/Http/Controllers/Web/TwoFactorControllerTest.php | 411 +++++++++++++++++++++
 tests/Feature/Http/Controllers/Web/UsersControllerTest.php | 48 ---
 tests/Feature/ImpersonateUsersTest.php | 96 +++++
 tests/Feature/Listeners/UserEventsSubscriberTest.php | 28 +-
 tests/MailTrap.php | 131 -------
 webpack.mix.js | 2 +-
 107 files changed, 4917 insertions(+), 1473 deletions(-)

To 3.0.1 from 3.0.0

Version 3.0.1 is a bug-fix release where some minor (mostly UI related) bugs that are reported by customers are fixed. The main bug fixed was the one where assets were not being loaded if you install the app in a sub-folder, which was caused by using the mix function without wrapping it with url function. Luckily, this is an easy fix applied in resources/views/layouts/app.blade.php layout file.

Below is the list of updated files, so make sure that you update them to the latest version.

 app/Http/Controllers/Web/Auth/SocialAuthController.php |  4 ++++
 app/Repositories/User/EloquentUser.php                 |  4 ++++
 config/app.php                                         |  2 +-
 resources/lang/de/app.php                              |  1 +
 resources/lang/en/app.php                              |  1 +
 resources/lang/sr/app.php                              |  1 +
 resources/views/layouts/app.blade.php                  |  6 +++---
 resources/views/user/partials/details.blade.php        |  2 +-
 resources/views/user/partials/row.blade.php            | 18 ++++++++++++------
 resources/views/user/view.blade.php                    |  6 +++---
 10 files changed, 31 insertions(+), 14 deletions(-)

To 3.0.0 from 2.2.0

This is the release which contains the complete rewrite of Vanguard frontend. The Bootstrap version is upgraded to 4.1 and the whole Vanguard frontend theme is updated to a different, more up-to-date, design.

Upgrading to this version is pretty hard and it means that you need to make sure that all your view files are up to date with new classes and staff.

To start, it's recommended to make sure that your composer.json and package.json files are updated to the latest version so you can install all the packages you need. Once you update them to the latest version, run composer update and npm install to install php and npm packages, including Bootstrap 4.

Copy new sass folder to resources/assets folder, update webpack.mix.js file and run npm run dev to compile assets. Also make sure that all the assets in public/assets directory are updated to the latest version. If you haven't changed them much, then you can just overwrite them all. However, if you have modified some of them, make sure that you update them manually.

Once you have updated all the assets, you should start updating your view files one by one. Starting from the layout files is recommended, but you can do it however you decide.

The list of updated files is available below, so make sure that you check each one of them carefully, or you can check the patch file from documentation/Patches directory to see how the files are updated.

 app/Http/Controllers/Api/Profile/AuthDetailsController.php                  |    39 +
 app/Http/Controllers/Web/Auth/PasswordController.php                        |     4 +-
 app/Http/Controllers/Web/Auth/SocialAuthController.php                      |    65 +-
 app/Http/Controllers/Web/DashboardController.php                            |     2 +-
 app/Http/Controllers/Web/InstallController.php                              |     4 +-
 app/Http/Requests/User/UpdateProfileLoginDetailsRequest.php                 |     3 -
 app/Presenters/UserPresenter.php                                            |     6 +-
 app/Repositories/User/EloquentUser.php                                      |     5 +-
 app/Services/Auth/Social/ManagesSocialAvatarSize.php                        |    32 +
 app/Services/Auth/Social/SocialManager.php                                  |     4 +-
 app/User.php                                                                |     2 +-
 composer.lock                                                               |   393 ++--
 config/app.php                                                              |     2 +-
 package-lock.json                                                           | 14043 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 package.json                                                                |     4 +-
 public/assets/css/app.css                                                   |  1160 +---------
 public/assets/css/bootstrap-datetimepicker.min.css                          |     5 -
 public/assets/css/bootstrap-social.css                                      |   101 -
 public/assets/css/bootstrap.min.css                                         |     5 -
 public/assets/css/font-awesome.min.css                                      |     4 -
 public/assets/css/fontawesome-all.min.css                                   |     5 +
 public/assets/css/install.css                                               |     4 +-
 public/assets/css/metisMenu.css                                             |    99 -
 public/assets/css/sweetalert.css                                            |   932 --------
 public/assets/css/vendor.css                                                |    10 +
 public/assets/fonts/FontAwesome.otf                                         |   Bin 93888 -> 0 bytes
 public/assets/fonts/fontawesome-webfont.eot                                 |   Bin 60767 -> 0 bytes
 public/assets/fonts/fontawesome-webfont.svg                                 |   565 -----
 public/assets/fonts/fontawesome-webfont.ttf                                 |   Bin 122092 -> 0 bytes
 public/assets/fonts/fontawesome-webfont.woff                                |   Bin 71508 -> 0 bytes
 public/assets/fonts/fontawesome-webfont.woff2                               |   Bin 56780 -> 0 bytes
 public/assets/fonts/glyphicons-halflings-regular.eot                        |   Bin 20127 -> 0 bytes
 public/assets/fonts/glyphicons-halflings-regular.svg                        |   288 ---
 public/assets/fonts/glyphicons-halflings-regular.ttf                        |   Bin 45404 -> 0 bytes
 public/assets/fonts/glyphicons-halflings-regular.woff                       |   Bin 23424 -> 0 bytes
 public/assets/fonts/glyphicons-halflings-regular.woff2                      |   Bin 18028 -> 0 bytes
 public/assets/js/as/app.js                                                  |    22 +-
 public/assets/js/as/btn.js                                                  |     4 +-
 public/assets/js/as/dashboard-admin.js                                      |    54 +-
 public/assets/js/as/dashboard-default.js                                    |    56 +-
 public/assets/js/as/login.js                                                |     2 +-
 public/assets/js/as/profile.js                                              |    11 +-
 public/assets/js/bootstrap-datetimepicker.min.js                            |     9 -
 public/assets/js/bootstrap.min.js                                           |    12 +-
 public/assets/js/bootstrap.min.js.map                                       |     1 +
 public/assets/js/chart.min.js                                               |     9 +-
 public/assets/js/delete.handler.js                                          |     8 +-
 public/assets/js/jquery-2.1.4.min.js                                        |     4 -
 public/assets/js/jquery-3.3.1.min.js                                        |     2 +
 public/assets/js/metisMenu.min.js                                           |    10 -
 public/assets/js/popper.min.js                                              |     5 +
 public/assets/js/sweetalert.min.js                                          |     2 +-
 public/assets/js/vendor.js                                                  |    11 +
 public/assets/plugins/bootstrap-datepicker/bootstrap-datepicker.min.css     |     9 +
 public/assets/plugins/bootstrap-datepicker/bootstrap-datepicker.min.css.map |     1 +
 public/assets/plugins/bootstrap-datepicker/bootstrap-datepicker.min.js      |     9 +
 public/assets/plugins/bootstrap-switch/bootstrap-switch.css                 |   195 --
 public/assets/plugins/bootstrap-switch/bootstrap-switch.min.js              |    22 -
 public/assets/webfonts/fa-brands-400.eot                                    |   Bin 0 -> 111620 bytes
 public/assets/webfonts/fa-brands-400.svg                                    |  1104 +++++++++
 public/assets/webfonts/fa-brands-400.ttf                                    |   Bin 0 -> 111384 bytes
 public/assets/webfonts/fa-brands-400.woff                                   |   Bin 0 -> 71560 bytes
 public/assets/webfonts/fa-brands-400.woff2                                  |   Bin 0 -> 61336 bytes
 public/assets/webfonts/fa-regular-400.eot                                   |   Bin 0 -> 31272 bytes
 public/assets/webfonts/fa-regular-400.svg                                   |   372 +++
 public/assets/webfonts/fa-regular-400.ttf                                   |   Bin 0 -> 31044 bytes
 public/assets/webfonts/fa-regular-400.woff                                  |   Bin 0 -> 14724 bytes
 public/assets/webfonts/fa-regular-400.woff2                                 |   Bin 0 -> 12188 bytes
 public/assets/webfonts/fa-solid-900.eot                                     |   Bin 0 -> 133140 bytes
 public/assets/webfonts/fa-solid-900.svg                                     |  1896 ++++++++++++++++
 public/assets/webfonts/fa-solid-900.ttf                                     |   Bin 0 -> 132920 bytes
 public/assets/webfonts/fa-solid-900.woff                                    |   Bin 0 -> 63836 bytes
 public/assets/webfonts/fa-solid-900.woff2                                   |   Bin 0 -> 50372 bytes
 public/mix-manifest.json                                                    |     5 +
 resources/assets/sass/_variables.scss                                       |    63 +-
 resources/assets/sass/app.scss                                              |    47 +-
 resources/assets/sass/components/avatar.scss                                |    16 +
 resources/assets/sass/components/button.scss                                |    78 +
 resources/assets/sass/components/card.scss                                  |    12 +
 resources/assets/sass/components/datepicker.scss                            |   160 ++
 resources/assets/sass/components/general.scss                               |    13 +
 resources/assets/sass/components/input.scss                                 |     8 +
 resources/assets/sass/components/list-group.scss                            |    17 +
 resources/assets/sass/components/nav-tabs.scss                              |    13 +
 resources/assets/sass/components/navbar.scss                                |    50 +
 resources/assets/sass/components/sidebar.scss                               |   122 +
 resources/assets/sass/components/sweet-alert.scss                           |     3 +
 resources/assets/sass/components/switch.scss                                |   158 ++
 resources/assets/sass/components/table.scss                                 |     8 +
 resources/assets/sass/components/util.scss                                  |    40 +
 resources/lang/de/app.php                                                   |    63 +-
 resources/lang/en/app.php                                                   |    58 +-
 resources/lang/sr/app.php                                                   |    64 +-
 resources/views/activity/index.blade.php                                    |   170 +-
 resources/views/auth/login.blade.php                                        |   103 +-
 resources/views/auth/password/remind.blade.php                              |    52 +-
 resources/views/auth/password/reset.blade.php                               |    82 +-
 resources/views/auth/register.blade.php                                     |   110 +-
 resources/views/auth/social/buttons.blade.php                               |    28 +-
 resources/views/auth/social/twitter-email.blade.php                         |    34 -
 resources/views/auth/token.blade.php                                        |    49 +-
 resources/views/dashboard/admin.blade.php                                   |   168 +-
 resources/views/dashboard/default.blade.php                                 |   106 +-
 resources/views/errors/403.blade.php                                        |    49 +-
 resources/views/errors/404.blade.php                                        |    63 +-
 resources/views/errors/500.blade.php                                        |    49 +-
 resources/views/errors/503.blade.php                                        |    44 +-
 resources/views/install/complete.blade.php                                  |     2 +-
 resources/views/install/database.blade.php                                  |     2 +-
 resources/views/install/error.blade.php                                     |     2 +-
 resources/views/install/permissions.blade.php                               |    12 +-
 resources/views/install/requirements.blade.php                              |     8 +-
 resources/views/install/start.blade.php                                     |     2 +-
 resources/views/layouts/app.blade.php                                       |    89 +-
 resources/views/layouts/auth.blade.php                                      |    24 +-
 resources/views/layouts/errors.blade.php                                    |    35 +
 resources/views/layouts/install.blade.php                                   |    37 +-
 resources/views/partials/messages.blade.php                                 |     4 +-
 resources/views/partials/navbar.blade.php                                   |    79 +
 resources/views/partials/sidebar.blade.php                                  |   167 +-
 resources/views/permission/add-edit.blade.php                               |    46 +-
 resources/views/permission/index.blade.php                                  |   159 +-
 resources/views/role/add-edit.blade.php                                     |    56 +-
 resources/views/role/index.blade.php                                        |   129 +-
 resources/views/settings/auth.blade.php                                     |    64 +-
 resources/views/settings/general.blade.php                                  |    41 +-
 resources/views/settings/notifications.blade.php                            |    78 +-
 resources/views/settings/partials/auth.blade.php                            |    70 +-
 resources/views/settings/partials/recaptcha.blade.php                       |    16 +-
 resources/views/settings/partials/registration.blade.php                    |    78 +-
 resources/views/settings/partials/throttling.blade.php                      |    45 +-
 resources/views/settings/partials/two-factor.blade.php                      |    15 +-
 resources/views/user/add.blade.php                                          |    71 +-
 resources/views/user/edit.blade.php                                         |   153 +-
 resources/views/user/list.blade.php                                         |   170 +-
 resources/views/user/partials/auth.blade.php                                |    57 +-
 resources/views/user/partials/avatar.blade.php                              |    69 +-
 resources/views/user/partials/details.blade.php                             |   118 +-
 resources/views/user/partials/row.blade.php                                 |    59 +
 resources/views/user/partials/two-factor.blade.php                          |    58 +-
 resources/views/user/profile.blade.php                                      |   143 +-
 resources/views/user/sessions.blade.php                                     |   123 +-
 resources/views/user/view.blade.php                                         |   172 +-
 resources/views/vendor/jsvalidation/bootstrap.php                           |    20 +-
 routes/api.php                                                              |     1 +
 storage/settings.json                                                       |     2 +-
 tests/Feature/Http/Controllers/Api/Auth/SocialLoginControllerTest.php       |     2 +
 tests/Feature/Http/Controllers/Api/Profile/AuthDetailsControllerTest.php    |    88 +
 tests/Feature/Http/Controllers/Api/Profile/TwoFactorControllerTest.php      |    28 +-
 tests/Feature/Http/Controllers/Api/Users/TwoFactorControllerTest.php        |    32 +-
 tests/Feature/Http/Controllers/Web/ActivityControllerTest.php               |     1 -
 tests/Feature/Http/Controllers/Web/Auth/AuthControllerTest.php              |     2 +-
 tests/Feature/Http/Controllers/Web/Auth/SocialAuthControllerTest.php        |    26 +-
 tests/Feature/Http/Controllers/Web/ProfileControllerTest.php                |    22 +-
 tests/Feature/Http/Controllers/Web/SettingsControllerTest.php               |     2 +-
 tests/Feature/Http/Controllers/Web/UsersControllerTest.php                  |    40 +-
 tests/Feature/Repositories/User/EloquentUserTest.php                        |    61 +-
 tests/unit/Presenters/UserPresenterTest.php                                 |     6 +-
 webpack.mix.js                                                              |    26 +-
 159 files changed, 20812 insertions(+), 5721 deletions(-)