2016-01-16 2 views
0

Мне нужно отправить ссылку по электронной почте так:Регистрация на событие после входа в систему/зарегистрироваться в Laravel

http://laravel.dev:8000/events/{eventId}/register/ 

Я поставил этот маршрут внутри моего Идент промежуточного слоя, так что если пользователь не зарегистрирован или имеет нет учетной записи, пользователь переходит на страницу аутентификации.

Вещь после входа в систему, система забывает, что было начальным желаемым действием (зарегистрировать событие) и перенаправить пользователя на панель управления.

Конечно же, проблема более dificult при регистрации, потому что пользователь должен зарегистрироваться, получить почту, а затем, когда он активирует свой счет, первоначальные действия должны быть выполнены ...

Что является лучшим способом выполнять такие вещи ???

+0

Можете ли вы показать нам существующий код для промежуточного программного обеспечения? Затем мы можем сделать некоторые выводы о том, как вы справляетесь со всем этим и соответственно соглашаетесь. – Ohgodwhy

+0

Я не кодировал промежуточное ПО. У меня просто встроенный Authenticate –

ответ

0

Вы можете использовать идентификатор сеанса Laravel (который устанавливается автоматически) с Session::getId() и сохранить его с начальным желаемым действием в базу данных.

0

Возможно, вы ищете redirect()->intendend(route('route'))? (Документы/API: https://laravel.com/api/5.2/Illuminate/Routing/Redirector.html#method_intended).

Это перенаправит пользователя на URL-адрес, который они пытались посетить, прежде чем «заблокирован» на странице входа.

Dunno, если значение сохраняется при регистрации; там вы можете захотеть захватить запрошенный URL с помощью промежуточного программного обеспечения и сохранить его в сеансе.

Затем, при успешной регистрации, перенаправьте пользователя на предполагаемый маршрут по стандарту redirect()->route('route').

+0

Да, это похоже на то, что я хочу. Я проверил объект AuthenticatesUser, который я использую, и он уже использует эту функцию: return redirect() -> предназначенный ($ this-> redirectPath()); Поэтому в какой-то мере это должно быть возможно, если я могу передать пользовательскую переменную redirectPath, но я не знаю, как это сделать. Есть идеи? –

+0

Если вы проверите источник здесь: https://github.com/laravel/framework/blob/5.1/src/Illuminate/Routing/Redirector.php#L97-L101 - вы можете видеть, что он просто берет 'url.intended ключ -session. Таким образом, вы должны установить свой собственный URL с помощью '$ request-> session() -> put ('url.intended', 'your-url-here')'. – Marcus

+0

О, кстати. Возможно, я не понимаю вас здесь; если это просто «redirectPath», который вы хотите изменить, вы можете просто поместить 'protected $ redirectTo = '/ url';' в свой контроллер. Например, http://stackoverflow.com/questions/28981313/property-redirectpath-and-redirectto-set-location-laravel-trait-authenticatesan. – Marcus