Download the PHP package cesargb/laravel-magiclink without Composer
On this page you can find all versions of the php package cesargb/laravel-magiclink. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package laravel-magiclink
MagicLink for Laravels App
Through the MagicLink
class we can create a secure link that later
being visited will perform certain actions, which will allow us
offer secure content and even log in to the application.
Contents
- Installation
- Use case
- Create a MagicLink
- Actions
- Login
- Download file
- View
- Http Response
- Controller
- Custom Action
- Protect with an access code
- Lifetime
- Events
- Customization
- Rate limiting
- Testing
- Contributing
- Security
Installation
You can install this package via composer using:
Preparing the database
You need to publish the migration to create the magic_links
table:
After that, you need to run migrations.
Use case
With this example you can create a link to auto login on your application with the desired user:
Create a MagicLink
The MagicLink
class has the create
method to generate a class that through
the url
property we will obtain the link that we will send to our visitor.
This method requires the action to be performed.
Actions
Each MagicLink is associated with an action, which is what will be performed once the link is visited.
- Login Action
- Download file Action
- View Action
- Http Response Action
- Http Response
- Controller
- Custom Action
- Custom Base URL
Login Action
Through the LoginAction
action, you can log in to the application using the
generated link by MagicLink
.
Your constructor supports the user who will login. Optionally we can specify
the HTTP response using the method
response
or specify other guard with method guard
.
Examples:
Download file Action
This action, DownloadFileAction
, permit create a link to download a private file.
The constructor require the file path.
Example:
View Action
With the action ViewAction
, you can provide access to the view. You can use
in his constructor the same arguments than method view
of Laravel.
Example:
Http Response Action
Through the ResponseAction
action we can access private content without need
login. Its constructor accepts as argument the
HTTP response
which will be the response of the request.
Examples:
Controller Action
MagicLink
can directly call a controller via the ControllerAction
action.
The constructor requires one argument, the name of the controller class. With
the second argument can call any controller method, by default it will use the
__invoke
method.
Custom Action
You can create your own action class, for them you just need to extend with
MagicLink\Actions\ActionAbstract
You can now generate a Magiclink with the custom action
Custom Base URL
To set the base URL for a magic link, you can use the baseUrl
method. This method ensures that the provided base URL has a trailing slash, making it ready for URL generation.
Protect with an access code
Optionally you can protect the resources with an access code.
You can set the access code with method protectWithAccessCode
which accepts an argument with the access code.
Custom view for access code
You can customize the view of the access code form with the config file magiclink.php
:
This is the default view
Lifetime
By default a link will be available for 72 hours after your creation. We can
modify the life time in minutes of the link by the $lifetime
option
available in the create
method. This argument accepts the value null
so
that it does not expire in time.
We also have another option $numMaxVisits
, with which we can define the
number of times the link can be visited, null
by default indicates that there
are no visit limits.
Events
MagicLink can fires three events:
MagicLinkWasCreated
Event MagicLink\Events\MagicLinkWasCreated
This event is fired when a magic link is created.
MagicLinkWasVisited
Event MagicLink\Events\MagicLinkWasVisited
This event is fired when a magic link is visited.
MagicLinkWasDeleted
Event MagicLink\Events\MagicLinkWasDeleted
This event is fired when you disable mass deletion. Add this line in your
.env
file to disable mass deletion:
[!WARNING] If you disable mass deletion, the cleanup will be performed one by one. If you have many records, this can be an issue.
Customization
Config
To custom this package you can publish the config file:
And edit the file config/magiclink.php
Migrations
To customize the migration files of this package you need to publish the migration files:
You'll find the published files in database/migrations/*
Custom response when magiclink is invalid
When the magicLink is invalid by default the http request return a status 403.
You can custom this response with config magiclink.invalid_response
.
Response
To return a response, use class MagicLink\Responses\Response::class
same response()
, you can send the arguments with options
Example:
Abort
To return a exception and let the framework handle the response,
use class MagicLink\Responses\AbortResponse::class
.
Same abort()
, you can send the arguments with options.
Example:
Redirect
Define class MagicLink\Responses\RedirectResponse::class
to
return a redirect()
View
Define class MagicLink\Responses\ViewResponse::class
to
return a view()
Rate limiting
You can limit the number of requests per minute for a magic link. To do this, you need to
set the MAGICLINK_RATE_LIMIT
environment variable to the desired value.
By default, the rate limit is disable with value 'none', but you can set a value to limit the requests. For example, to limit the requests to 100 per minute, set
Testing
Run the tests with:
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security-related issues, please email [email protected] instead of using the issue tracker.
License
The MIT License (MIT). Please see License File for more information.
All versions of laravel-magiclink with dependencies
illuminate/auth Version ^10.0|^11.0
illuminate/container Version ^10.0|^11.0
illuminate/contracts Version ^10.0|^11.0
illuminate/database Version ^10.0|^11.0
laravel/serializable-closure Version ^1.0|^2.0