Blog /

Product

Product October 14, 2020

Vapor: RDS Proxies Now Available

Starting today, the Vapor UI allows you to create an RDS proxy to efficiently manage your database connections and allow many more connections than would typically be possible.

Nuno Maduro

Product October 7, 2020

Forge: Self-Hosted GitLab Support

Forge has always supported using a custom Git provider for your projects, but starting today Forge has first-party support for self-hosted GitLab installations. ![](https://laravel-blog-assets.s3.amazonaws.com/C6CaIlBx5JvuLmpzWB0b8IfnbKEvaa3MT3hB3geu.png)This means that Forge now provides a better integration for your self-hosted GitLab repositories: - Validation that the repository and branch exists - Automatically adds the server key to the repository so that it can be cloned You can connect your self-hosted GitLab installation in your account page, [https://forge.laravel.com/user/profile#/source-control](https://forge.laravel.com/user/profile#/source-control) We hope that you enjoy this new feature.

James Brooks

Product September 29, 2020

Vapor: Bypassing Maintenance Mode

When putting your application in maintenance mode using the `vapor down` command, your application will respond with a status code of 503 on every request. Beginning today, you may use the `secret` option on the `vapor down` command to specify a maintenance mode bypass token: ``` vapor down --secret=1630542a-246b-4b66-afa1-dd72a4c43515 ``` You may then navigate to the application URL matching this token and Vapor will issue a maintenance mode bypass cookie to your browser: ``` https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515 ``` After accessing this hidden route, you will then be redirected to the `/` route of the application. Once the cookie has been issued to your browser, you will be able to browse the application normally as if it was not in maintenance mode. To use this feature, you need to make sure your application is using these versions: - `laravel/framework` v8.0+ - `laravel/vapor-core` v2.9.3+ - `laravel/vapor-cli` v1.9.4+

Mohamed Said

Product September 23, 2020

Vapor: Serving Assets From The Root Domain

Starting today, you can now serve assets from the root domain. To get started, just head over to your application's `config/vapor.php` file, and add an array of assets that should be served

Nuno Maduro

Product September 22, 2020

Envoyer: Refreshed Deployment Steps

Yesterday we shipped an updated to [Envoyer](https://envoyer.io) that gives deployment steps a much needed refresh. ![Envoyer Deployment Steps](https://laravel-blog-assets.s3.amazonaws.com/zpU2i4q89msOjcUroeNwCA1FJRsxaATVSHP4dCcf.png "Envoyer Deployment Steps") By default, Envoyer will perform four actions when deploying any project: 1. Clone New Release 2. Install Composer Dependencies (if configued) 3. Activate New Release 4. Purge Old Releases Before yesterday, you could configure additional deployment hooks that executed either before or after one of the pre-defined actions. This was confusing to many as there isn't a difference between **"After Clone New Release"** and **"Before Install Composer Dependencies"** for example. Yesterday's release flattens these deployment steps into a single list, which allows you to drag and drop any of your custom hooks into any order you need. Envoyer's four actions remain fixed, to ensure that projects continue to deploy in the correct order. The **Deployment Hooks** tab now shows you which user the action is running as and on what servers, so you can see what's happening at a quick glance.

James Brooks

Product September 18, 2020

Vapor: Customize Default Role

Starting today, you can now disable Vapor updates on the laravel-vapor-role role and manage this role yourself in AWS Console. To disable updates on the laravel-vapor-role role, just head over to...

Nuno Maduro

Product September 17, 2020

Envoyer: Extended Deployment Timeouts and New Notification Channels

We're excited to announce a few changes we've just shipped to [Envoyer](https://envoyer.io). Extended Deployment Timeouts ----------------------------- Starting today, all customers on the **Premium Plan** have a 15 minute timeout on deployments. Customers on the Basic and Plus plans remain limited to 10 minutes. We hope that this extended timeout helps you get the most out of your deployments. New Notification Channels ------------------------- Recently we deployed new notification channels to [Forge](https://forge.laravel.com) and we've now brought them to Envoyer. You can now pick from one of the following channels: - Slack - Microsoft Teams - Discord - Email We'll be adding more channels in the future! ![](https://laravel-blog-assets.s3.amazonaws.com/rB2UwCNiK2fnc7KGIG4iK5pE4S3ps3FsmqG8V0EP.png)

James Brooks

Product September 14, 2020

Jetstream: Customization + Password Confirmation

As many of you know, we released Laravel 8.x and [Laravel Jetstream](https://jetstream.laravel.com) last week. Thanks to very valuable feedback from the community, I am thrilled to give you an overview of some new customization options and features in Jetstream that I think you will find very valuable. Let's dive in! ### Authentication View Customization Sometimes you may wish to customize how a particular authentication view is rendered. All of the authentication view's rendering logic may be customized using the appropriate methods available via the `Laravel\Fortify\Fortify` class. Typically, you should call this method from the `boot` method of your `JetstreamServiceProvider`: ```php use Laravel\Fortify\Fortify; Fortify::loginView(function () { return view('auth.login'); }); Fortify::registerView(function () { return view('auth.register'); }); ``` ### Customizing User Authentication Sometimes, you may wish to have full customization over how login credentials are authenticated and users are retrieved. Thankfully, Jetstream allows you to easily accomplish this using the `Fortify::authenticateUsing` method. This method accepts a Closure which that receives the incoming HTTP request. The Closure is responsible for validating the login credentials attached to the request and returning the associated user instance. If the credentials are invalid or no user can be found, `null` or `false` should be returned by the Closure. Typically, this method should be called from the `boot` method of your `JetstreamServiceProvider`: ```php use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use Laravel\Fortify\Fortify; Fortify::authenticateUsing(function (Request $request) { $user = User::where('email', $request->email)->first(); if ($user && Hash::check($request->password, $user->password)) { return $user; } }) ``` ### Password Confirmation While building your application, you may occasionally have actions that should require the user to confirm their password before the action is performed. Thankfully, Jetstream has built-in functionality to make this a breeze. We'll demo the Livewire code for this feature below, but be sure to check out [the full documentation](https://jetstream.laravel.com/1.x/features/security.html#inertia) for the Inertia example! If you are using the Livewire stack, your Livewire component that contains the password confirmed action should use the `Laravel\Jetstream\ConfirmsPasswords` trait. Next, you should wrap the action you wish to confirm using the `confirms-password` Blade component. `confirms-password` wrapper should contain `wire:then` directive that specifies which Livewire action should be run once the user's password has been confirmed. Once the user has confirmed their password, they will not be required to re-enter their password for 15 minutes: ```html {{ __('Enable') }} ``` Next, within your Livewire action that is being confirmed, you should call the `ensurePasswordIsConfirmed` method. This should be done at the very beginning of the relevant action method: ```php /** * Enable administration mode for user. * * @return void */ public function enableAdminMode() { $this->ensurePasswordIsConfirmed(); // ... } ``` ### Custom Rendered Inertia Authentication Pages Some of Jetstream's Inertia pages, such as `Teams/Show` and `Profile/Show` are rendered from within Jetstream itself. However, you may need to pass additional data to these pages while building your application. Therefore, Jetstream allows you to customize the data / props passed to these pages using the `Jetstream::inertia()->renderUsing` method. This method accepts the name of the page you wish to customize and a Closure. The Closure will receive the incoming HTTP request and an array of the default data that would typically be sent to the page. You are welcome to customize or add new array elements to the data as necessary. Typically, you should call this method from within the `boot` method of your `JetstreamServiceProvider`: ```php use Illuminate\Http\Request; use Laravel\Jetstream\Jetstream; Jetstream::inertia()->renderUsing( 'Profile/Show', function (Request $request, array $data) { return array_merge($data, [ // Custom data... ]); } ); ```

Taylor Otwell

Product September 7, 2020

Forge: TLS v1.3, Redis Passwords and more!

Over the last few weeks, we've been working on many new features and enhancements in Forge. I often [tweet](https://twitter.com/jbrooksuk) about these changes since they don’t warrant a full-blown blog post by themselves, but that means that they're also missed by a lot of our users! So, let's take a look at some of the recent additions to Forge and what they can do for you. TLS v1.3 Enabled By Default --------------------------- Starting today, TLS v1.3 is enabled on all newly created sites running on servers provisioned with Ubuntu 20.04. Older servers will continue to use v1.1 and v1.2, but not enable v1.3. You can learn more about TLS v1.3 and what it means [here](https://www.cloudflare.com/learning-resources/tls-1-3/). Recipes: One-Click Select All Servers ------------------------------------- You can now select all of your active servers with one-click when running a recipe. Previously, you'd need to individually select each server which could be annoying when you have tens of servers that you need to run the recipe on. Retroactively Toggle Wildcard Sub-Domains ----------------------------------------- You can now enable or disable wildcard sub-domains after you've created a site. Until now, you would need to delete the site and re-create it with the right option selected. This is particularly useful for those times when you forget to select the right option. Redis Passwords --------------- For added security, Forge will never publicly open Redis' 6379 port, but if you need to do so, you can now secure your installation with a password. > Warning: Redis stores the password in plaintext. Firewall Rule Types ------------------- Firewalls do more than just blocking requests, they can also selectively allow requests. You can now select whether to allow or deny requests in your firewall rules. ![](https://laravel-blog-assets.s3.amazonaws.com/Z02U23uSCUzpjXLtJgyW20mFAripUWkLqpIm7jSP.png)A good example of this would be to allow another server to connect to an existing Redis server. You can create an "Allow" rule that only accepts requests to **6379** from a known IP address. When combined with the Redis password from above, you can create flexible yet secure installations. Password Generator ------------------ Choosing a password is hard at the best of times, choosing a secure one is harder still — that's why we use a password manager, right? Forge now displays a password generator button next to any password field. It'll quickly generate a random password for you to use. ![](https://laravel-blog-assets.s3.amazonaws.com/h1xaPHMOv6LtJbHB9jvJXTYxcng2AczjWIcaQWsI.png)Editable Database Backup Configurations --------------------------------------- This was one of the most requested features since we first introduced [Database Backups](https://blog.laravel.com/forge-database-backups-now-supported) back in February! You're now able to both view and edit an existing backup configuration within the Forge dashboard. ![](https://laravel-blog-assets.s3.amazonaws.com/5NJziMpeJ3B08hD14TEd9kMku6RRn8NQHS9YlDaz.png)Backup Multiple Databases At Once --------------------------------- Alongside editing backups, we also received many requests to backup multiple databases at once. The ability to do so was actually part of the initial feature, but we didn't have a good way of restoring individual databases — which we do now! You can now select multiple databases when configuring your database backup. If you don’t have a [Forge](https://forge.laravel.com) account, now is a great time to sign up. Forge allows you to painlessly create and manage PHP servers which include MySQL, Redis, Memcached, database backups, and everything else you need to run robust, modern Laravel applications.

James Brooks

Showing 121 - 130 of 172 results

Stay connected with the latest Laravel news