fix: password reset / invitation link requests
This commit is contained in:
parent
1ff1664b6c
commit
02c8b9f471
@ -39,7 +39,7 @@ class Controller extends BaseController
|
|||||||
} else {
|
} else {
|
||||||
$team = $user->teams()->first();
|
$team = $user->teams()->first();
|
||||||
}
|
}
|
||||||
if (is_null(data_get($user, 'email_verified_at'))){
|
if (is_null(data_get($user, 'email_verified_at'))) {
|
||||||
$user->email_verified_at = now();
|
$user->email_verified_at = now();
|
||||||
$user->save();
|
$user->save();
|
||||||
}
|
}
|
||||||
@ -137,16 +137,28 @@ class Controller extends BaseController
|
|||||||
public function acceptInvitation()
|
public function acceptInvitation()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$invitation = TeamInvitation::whereUuid(request()->route('uuid'))->firstOrFail();
|
$resetPassword = request()->query('reset-password');
|
||||||
|
$invitationUuid = request()->route('uuid');
|
||||||
|
$invitation = TeamInvitation::whereUuid($invitationUuid)->firstOrFail();
|
||||||
$user = User::whereEmail($invitation->email)->firstOrFail();
|
$user = User::whereEmail($invitation->email)->firstOrFail();
|
||||||
if (auth()->user()->id !== $user->id) {
|
|
||||||
abort(401);
|
|
||||||
}
|
|
||||||
$invitationValid = $invitation->isValid();
|
$invitationValid = $invitation->isValid();
|
||||||
if ($invitationValid) {
|
if ($invitationValid) {
|
||||||
|
if ($resetPassword) {
|
||||||
|
$user->update([
|
||||||
|
'password' => Hash::make($invitationUuid),
|
||||||
|
'force_password_reset' => true
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if ($user->teams()->where('team_id', $invitation->team->id)->exists()) {
|
||||||
|
$invitation->delete();
|
||||||
|
return redirect()->route('team.index');
|
||||||
|
}
|
||||||
$user->teams()->attach($invitation->team->id, ['role' => $invitation->role]);
|
$user->teams()->attach($invitation->team->id, ['role' => $invitation->role]);
|
||||||
refreshSession($invitation->team);
|
|
||||||
$invitation->delete();
|
$invitation->delete();
|
||||||
|
if (auth()->user()?->id !== $user->id) {
|
||||||
|
return redirect()->route('login');
|
||||||
|
}
|
||||||
|
refreshSession($invitation->team);
|
||||||
return redirect()->route('team.index');
|
return redirect()->route('team.index');
|
||||||
} else {
|
} else {
|
||||||
abort(401);
|
abort(401);
|
||||||
|
@ -24,7 +24,7 @@ class CheckForcePasswordReset
|
|||||||
}
|
}
|
||||||
$force_password_reset = auth()->user()->force_password_reset;
|
$force_password_reset = auth()->user()->force_password_reset;
|
||||||
if ($force_password_reset) {
|
if ($force_password_reset) {
|
||||||
if ($request->routeIs('auth.force-password-reset') || $request->path() === 'livewire/message/force-password-reset') {
|
if ($request->routeIs('auth.force-password-reset') || $request->path() === 'force-password-reset' || $request->path() === 'livewire/update' || $request->path() === 'logout') {
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
return redirect()->route('auth.force-password-reset');
|
return redirect()->route('auth.force-password-reset');
|
||||||
|
@ -11,6 +11,9 @@ class DecideWhatToDoWithUser
|
|||||||
{
|
{
|
||||||
public function handle(Request $request, Closure $next): Response
|
public function handle(Request $request, Closure $next): Response
|
||||||
{
|
{
|
||||||
|
if(auth()?->user()?->currentTeam()){
|
||||||
|
refreshSession(auth()->user()->currentTeam());
|
||||||
|
}
|
||||||
if (!auth()->user() || !isCloud() || isInstanceAdmin()) {
|
if (!auth()->user() || !isCloud() || isInstanceAdmin()) {
|
||||||
if (!isCloud() && showBoarding() && !in_array($request->path(), allowedPathsForBoardingAccounts())) {
|
if (!isCloud() && showBoarding() && !in_array($request->path(), allowedPathsForBoardingAccounts())) {
|
||||||
return redirect('boarding');
|
return redirect('boarding');
|
||||||
|
@ -128,11 +128,6 @@ function allowedPathsForUnsubscribedAccounts()
|
|||||||
'logout',
|
'logout',
|
||||||
'waitlist',
|
'waitlist',
|
||||||
'force-password-reset',
|
'force-password-reset',
|
||||||
// 'livewire/message/force-password-reset',
|
|
||||||
// 'livewire/message/check-license',
|
|
||||||
// 'livewire/message/switch-team',
|
|
||||||
// 'livewire/message/subscription.pricing-plans',
|
|
||||||
// 'livewire/message/help',
|
|
||||||
'livewire/update'
|
'livewire/update'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -141,8 +136,6 @@ function allowedPathsForBoardingAccounts()
|
|||||||
return [
|
return [
|
||||||
...allowedPathsForUnsubscribedAccounts(),
|
...allowedPathsForUnsubscribedAccounts(),
|
||||||
'boarding',
|
'boarding',
|
||||||
// 'livewire/message/boarding.index',
|
|
||||||
// 'livewire/message/activity-monitor',
|
|
||||||
'livewire/update'
|
'livewire/update'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -151,9 +144,6 @@ function allowedPathsForInvalidAccounts() {
|
|||||||
'logout',
|
'logout',
|
||||||
'verify',
|
'verify',
|
||||||
'force-password-reset',
|
'force-password-reset',
|
||||||
// 'livewire/message/force-password-reset',
|
|
||||||
// 'livewire/message/verify-email',
|
|
||||||
// 'livewire/message/help',
|
|
||||||
'livewire/update'
|
'livewire/update'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<x-layout-simple>
|
<x-layout-simple>
|
||||||
<div class="min-h-screen hero">
|
<div class="min-h-screen hero">
|
||||||
<div>
|
<div>
|
||||||
<div class="flex flex-col items-center pb-8">
|
<div class="flex flex-col items-center ">
|
||||||
<a href="{{ route('dashboard') }}">
|
<a href="{{ route('dashboard') }}">
|
||||||
<div class="text-5xl font-bold tracking-tight text-center text-white">Coolify</div>
|
<div class="text-5xl font-bold tracking-tight text-center text-white">Coolify</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center justify-center pb-4 text-center">
|
<div class="flex items-center justify-center pb-4 text-center">
|
||||||
<h2>{{ __('auth.reset_password') }}</h2>
|
{{ __('auth.reset_password') }}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<form action="/reset-password" method="POST" class="flex flex-col gap-2">
|
<form action="/reset-password" method="POST" class="flex flex-col gap-2">
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
@extends('layouts.base')
|
@extends('layouts.base')
|
||||||
@section('body')
|
@section('body')
|
||||||
@parent
|
@parent
|
||||||
|
<x-navbar-subscription />
|
||||||
<main>
|
<main>
|
||||||
{{ $slot }}
|
{{ $slot }}
|
||||||
</main>
|
</main>
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
<div class="min-h-screen hero">
|
<div class="min-h-screen hero">
|
||||||
<div class="w-96 min-w-fit">
|
<div class="w-96 min-w-fit">
|
||||||
<div class="flex flex-col items-center pb-8">
|
<div class="flex flex-col items-center">
|
||||||
<a href="{{ route('dashboard') }}">
|
<a href="{{ route('dashboard') }}">
|
||||||
<div class="text-5xl font-bold tracking-tight text-center text-white">Coolify</div>
|
<div class="text-5xl font-bold tracking-tight text-center text-white">Coolify</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center justify-center pb-4 text-center">
|
<div class="flex items-center justify-center pb-4 text-center">
|
||||||
<h2>Set your initial password</h2>
|
Set your initial password
|
||||||
</div>
|
</div>
|
||||||
<form class="flex flex-col gap-2" wire:submit='submit'>
|
<form class="flex flex-col gap-2" wire:submit='submit'>
|
||||||
<x-forms.input id="email" type="email" placeholder="Email" readonly label="Email" />
|
<x-forms.input id="email" type="email" placeholder="Email" readonly label="Email" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user