Log changes to users and sending email

Work on #61
This commit is contained in:
Matt Young 2024-08-07 16:20:23 -05:00
parent af36c285aa
commit ed271fce82
5 changed files with 93 additions and 5 deletions

View File

@ -2,15 +2,14 @@
namespace App\Actions\Fortify;
use A6digital\Image\DefaultProfileImage;
use App\Models\AuditLogEntry;
use App\Models\User;
use App\Rules\ValidRegistrationCode;
use App\Settings;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Laravel\Fortify\Contracts\CreatesNewUsers;
use function mb_substr;
class CreateNewUser implements CreatesNewUsers
@ -41,9 +40,10 @@ class CreateNewUser implements CreatesNewUsers
'password' => $this->passwordRules(),
])->validate();
$profileImageURL = 'https://ui-avatars.com/api/?name=' . mb_substr($input['first_name'],0,1) . '+' . mb_substr($input['last_name'],0,1);
$profileImageURL = 'https://ui-avatars.com/api/?name='.mb_substr($input['first_name'], 0,
1).'+'.mb_substr($input['last_name'], 0, 1);
return User::create([
$user = User::create([
'first_name' => $input['first_name'],
'last_name' => $input['last_name'],
'judging_preference' => $input['judging_preference'],
@ -52,5 +52,18 @@ class CreateNewUser implements CreatesNewUsers
'profile_image_url' => $profileImageURL,
'password' => Hash::make($input['password']),
]);
$message = 'New User Registered - '.$input['email']
.'<br>Name: '.$input['first_name'].' '.$input['last_name']
.'<br>Judging Pref: '.$input['judging_preference']
.'<br>Cell Phone: '.$input['cell_phone'];
AuditLogEntry::create([
'user' => $input['email'],
'ip_address' => request()->ip(),
'message' => $message,
'affected' => ['users' => $user->id],
]);
return $user;
}
}

View File

@ -2,6 +2,7 @@
namespace App\Actions\Fortify;
use App\Models\AuditLogEntry;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
@ -25,5 +26,11 @@ class ResetUserPassword implements ResetsUserPasswords
$user->forceFill([
'password' => Hash::make($input['password']),
])->save();
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => 'Reset Password',
'affected' => ['users' => [$user->id]],
]);
}
}

View File

@ -2,11 +2,14 @@
namespace App\Actions\Fortify;
use App\Models\AuditLogEntry;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Laravel\Fortify\Contracts\UpdatesUserPasswords;
use function auth;
class UpdateUserPassword implements UpdatesUserPasswords
{
use PasswordValidationRules;
@ -28,5 +31,11 @@ class UpdateUserPassword implements UpdatesUserPasswords
$user->forceFill([
'password' => Hash::make($input['password']),
])->save();
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => 'Changed Password',
'affected' => ['users' => [$user->id]],
]);
}
}

View File

@ -2,6 +2,7 @@
namespace App\Actions\Fortify;
use App\Models\AuditLogEntry;
use App\Models\User;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Support\Facades\Validator;
@ -44,6 +45,16 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation
'email' => $input['email'],
])->save();
}
$message = 'Updated user #'.$user->id.' - '.$user->email
.'<br>Name: '.$user->full_name()
.'<br>Judging Pref: '.$user->judging_preference
.'<br>Cell Phone: '.$user->cell_phone;
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => $message,
'affected' => ['users' => [$user->id]],
]);
}
/**
@ -53,6 +64,7 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation
*/
protected function updateVerifiedUser(User $user, array $input): void
{
$oldEmail = $user->email;
$user->forceFill([
'first_name' => $input['first_name'],
'last_name' => $input['last_name'],
@ -61,6 +73,18 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation
'email' => $input['email'],
'email_verified_at' => null,
])->save();
$user->refresh();
$message = 'Updated user #'.$user->id.' - '.$oldEmail
.'<br>Name: '.$user->full_name()
.'<br>Email: '.$user->email
.'<br>Judging Pref: '.$user->judging_preference
.'<br>Cell Phone: '.$user->cell_phone;
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => $message,
'affected' => ['users' => [$user->id]],
]);
$user->sendEmailVerificationNotification();
}

View File

@ -0,0 +1,35 @@
<?php
namespace App\Listeners;
use App\Models\AuditLogEntry;
use Illuminate\Mail\Events\MessageSending;
use function request;
class LogSendingEmail
{
/**
* Create the event listener.
*/
public function __construct()
{
//
}
/**
* Handle the event.
*/
public function handle(MessageSending $event): void
{
$email_to = ($event->message->getTo()[0]->getAddress());
$subject = $event->message->getSubject();
$message = 'Sent email to '.$email_to.'<br>Subject: '.$subject;
AuditLogEntry::create([
'user' => auth()->user()->email ?? 'none',
'ip_address' => request()->ip(),
'message' => $message,
]);
}
}