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; namespace App\Actions\Fortify;
use A6digital\Image\DefaultProfileImage; use App\Models\AuditLogEntry;
use App\Models\User; use App\Models\User;
use App\Rules\ValidRegistrationCode; use App\Rules\ValidRegistrationCode;
use App\Settings;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Laravel\Fortify\Contracts\CreatesNewUsers; use Laravel\Fortify\Contracts\CreatesNewUsers;
use function mb_substr; use function mb_substr;
class CreateNewUser implements CreatesNewUsers class CreateNewUser implements CreatesNewUsers
@ -41,9 +40,10 @@ class CreateNewUser implements CreatesNewUsers
'password' => $this->passwordRules(), 'password' => $this->passwordRules(),
])->validate(); ])->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'], 'first_name' => $input['first_name'],
'last_name' => $input['last_name'], 'last_name' => $input['last_name'],
'judging_preference' => $input['judging_preference'], 'judging_preference' => $input['judging_preference'],
@ -52,5 +52,18 @@ class CreateNewUser implements CreatesNewUsers
'profile_image_url' => $profileImageURL, 'profile_image_url' => $profileImageURL,
'password' => Hash::make($input['password']), '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; namespace App\Actions\Fortify;
use App\Models\AuditLogEntry;
use App\Models\User; use App\Models\User;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
@ -25,5 +26,11 @@ class ResetUserPassword implements ResetsUserPasswords
$user->forceFill([ $user->forceFill([
'password' => Hash::make($input['password']), 'password' => Hash::make($input['password']),
])->save(); ])->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; namespace App\Actions\Fortify;
use App\Models\AuditLogEntry;
use App\Models\User; use App\Models\User;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Laravel\Fortify\Contracts\UpdatesUserPasswords; use Laravel\Fortify\Contracts\UpdatesUserPasswords;
use function auth;
class UpdateUserPassword implements UpdatesUserPasswords class UpdateUserPassword implements UpdatesUserPasswords
{ {
use PasswordValidationRules; use PasswordValidationRules;
@ -28,5 +31,11 @@ class UpdateUserPassword implements UpdatesUserPasswords
$user->forceFill([ $user->forceFill([
'password' => Hash::make($input['password']), 'password' => Hash::make($input['password']),
])->save(); ])->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; namespace App\Actions\Fortify;
use App\Models\AuditLogEntry;
use App\Models\User; use App\Models\User;
use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
@ -44,6 +45,16 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation
'email' => $input['email'], 'email' => $input['email'],
])->save(); ])->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 protected function updateVerifiedUser(User $user, array $input): void
{ {
$oldEmail = $user->email;
$user->forceFill([ $user->forceFill([
'first_name' => $input['first_name'], 'first_name' => $input['first_name'],
'last_name' => $input['last_name'], 'last_name' => $input['last_name'],
@ -61,6 +73,18 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation
'email' => $input['email'], 'email' => $input['email'],
'email_verified_at' => null, 'email_verified_at' => null,
])->save(); ])->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(); $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,
]);
}
}