Этот пакет предоставляет временный подписанный маршрут, который входит в пользователь. То, что он не предоставляет, - это способ фактической отправки ссылки на маршрут на пользователь. Это потому, что я не хочу делать никаких предположений о том, как вы общаетесь со своими пользователями.
composer require grosv/laravel-passwordless-login
use App User ;
use Grosv LaravelPasswordlessLogin LoginUrl ;
function sendLoginLink ()
{
$ user = User :: find ( 1 );
$ generator = new LoginUrl ( $ user );
$ generator -> setRedirectUrl ( ' /somewhere/else ' ); // Override the default url to redirect to after login
$ url = $ generator -> generate ();
//OR Use a Facade
$ url = PasswordlessLogin :: forUser ( $ user )-> generate ();
// Send $url in an email or text message to your user
}
Поскольку на некоторых сайтах есть более одной модели пользовательского типа (пользователи, администраторы и т. Д.), Вы можете использовать черту для настройки конфигураций по умолчанию для каждого типа пользователя. Приведенные ниже методы предоставляются чертой, поэтому вам нужно только включить те, для которых вы хотите использовать другое значение.
use Grosv LaravelPasswordlessLogin Traits PasswordlessLogin ;
use Illuminate Foundation Auth User as Authenticatable ;
class User extends Authenticatable
{
use PasswordlessLogin ;
public function getGuardNameAttribute (): string
{
return config ( ' laravel-passwordless-login.user_guard ' );
}
public function getShouldRememberLoginAttribute (): bool
{
return config ( ' laravel-passwordless-login.remember_login ' );
}
public function getLoginRouteExpiresInAttribute (): int
{
return config ( ' laravel-passwordless-login.login_route_expires ' );
}
public function getRedirectUrlAttribute (): string
{
return config ( ' laravel-passwordless-login.redirect_on_success ' );
}
}
Если вы используете черту пароля безллугин, вы можете генерировать ссылку, используя по умолчанию, определенные в черте, просто вызывая createPasswordlessLoginLink()
на пользователе, которого вы хотите войти.
Самая большая ошибка, которую я мог видеть, что кто -то делает с этим пакетом, - это создание ссылки для входа для одного пользователя и отправка ее другому. Пожалуйста, будьте осторожны и протестируйте свой код. Я не хочу, чтобы кто -то злился на меня за чужую глупость.
Вы можете опубликовать файл конфигурации или просто установить значения, которые вы хотите использовать в вашем файле .env:
LPL_USER_MODEL = AppUser
LPL_REMEMBER_LOGIN = false
LPL_LOGIN_ROUTE = /magic-login
LPL_LOGIN_ROUTE_NAME = magic-login
LPL_LOGIN_ROUTE_EXPIRES = 30
LPL_REDIRECT_ON_LOGIN = /
LPL_USER_GUARD = web
LPL_USE_ONCE = false
LPL_INVALID_SIGNATURE_MESSAGE = " Expired or Invalid Link "
LPL_USER_MODEL
- это подлинная модель, в которой вы входите (обычно приложение пользователь)
LPL_REMEMBER_LOGIN
- это то, хотите ли вы запомнить вход (например, проверка пользователя помните меня)
LPL_LOGIN_ROUTE
- это маршрут, который указывает на функцию входа в систему, который предоставляет этот пакет. Убедитесь, что вы не сталкиваетесь с одним из других ваших маршрутов.
LPL_LOGIN_ROUTE_NAME
- это имя LPL_LOGIN_ROUTE. Опять же, убедитесь, что он не сталкивается ни с одним из ваших существующих названий маршрутов.
LPL_LOGIN_ROUTE_EXPIRES
- это количество минут, для которых вы хотите, чтобы ссылка была хорошей. Я рекомендую вам установить самое короткое значение, которое имеет смысл для вашего варианта использования.
LPL_REDIRECT_ON_LOGIN
- это то, где вы хотите отправить пользователя после того, как он вошел в систему, щелкнув по своей Magic Link.
LPL_USE_ONCE
- это то, хотите ли вы, чтобы ссылка истекала после первого использования (использует кэш для хранения использованных ссылок)
LPL_INVALID_SIGNATURE_MESSAGE
- это пользовательское сообщение, отправленное, когда мы прерваем статус 401 по недействительной или истекшей ссылке. Вы также можете добавить некоторую пользовательскую логику о том, как справляться с недействительными или истекшими ссылками, обрабатывая InvalidSignatureException
и ExpiredSignatureException
в вашем файле Handler.php
.
По вопросам безопасности, пожалуйста, напишите мне напрямую по адресу [email protected]. Для любых других проблем используйте трекер выпуска здесь.
Я приветствую помощь сообщества в улучшении и поддержании всех моих пакетов. Просто будь добр друг к другу. Помните, что мы все просто пытаемся сделать все возможное.