feat: log section
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
use App\Helpers\MobileNumberHelper;
|
||||
use App\Jobs\SendSMSJob;
|
||||
use App\Jobs\SendOTPJob;
|
||||
use App\Models\AuthLog;
|
||||
use App\Models\PackageName;
|
||||
use App\Models\Product;
|
||||
use App\Models\Transaction;
|
||||
@@ -118,9 +119,23 @@ public function login(Request $request)
|
||||
$user = User::where($authType, $data['auth'])->first();
|
||||
|
||||
if (!$user || !Hash::check($data['password'], $user->password)) {
|
||||
AuthLog::record(AuthLog::EVENT_LOGIN_FAILED, [
|
||||
'user_id' => $user?->id,
|
||||
'mobile' => $authType == 'mobile' ? $data['auth'] : $user?->mobile,
|
||||
'email' => $authType == 'email' ? $data['auth'] : $user?->email,
|
||||
'package_name' => $packageName->name,
|
||||
], $request);
|
||||
|
||||
return response()->json(['message' => 'رمز عبور اشتباه است'], 404);
|
||||
}
|
||||
|
||||
|
||||
AuthLog::record(AuthLog::EVENT_LOGIN, [
|
||||
'user_id' => $user->id,
|
||||
'mobile' => $user->mobile,
|
||||
'email' => $user->email,
|
||||
'package_name' => $packageName->name,
|
||||
], $request);
|
||||
|
||||
// Attach package if not exists
|
||||
if (!$user->packageNames()->where('package_names.id', $packageName->id)->exists()) {
|
||||
$user->packageNames()->attach($packageName->id, [
|
||||
@@ -299,9 +314,16 @@ public function register(Request $request)
|
||||
]);
|
||||
// }
|
||||
|
||||
AuthLog::record(AuthLog::EVENT_REGISTER, [
|
||||
'user_id' => $user->id,
|
||||
'mobile' => $user->mobile,
|
||||
'email' => $user->email,
|
||||
'package_name' => $packageNameValue,
|
||||
], $request);
|
||||
|
||||
// Create token
|
||||
$token = $user->createToken('token', $user->is_admin ? ['admin'] : ['user'])->plainTextToken;
|
||||
|
||||
|
||||
return response()->json([
|
||||
'message' => 'User registered successfully.',
|
||||
'user' => $user,
|
||||
@@ -405,6 +427,15 @@ public function loginOTP(Request $request)
|
||||
|
||||
$verify = Str::random(8);
|
||||
SendOTPJob::dispatch($data['mobile'], (string)$otpToken);
|
||||
|
||||
// Billable verification SMS — logged for the admin SMS/login analytics
|
||||
AuthLog::record(AuthLog::EVENT_OTP_SENT, [
|
||||
'user_id' => $user->id,
|
||||
'mobile' => $user->mobile,
|
||||
'email' => $user->email,
|
||||
'package_name' => $packageName->name,
|
||||
'source' => $data['source'] ?? null,
|
||||
], $request);
|
||||
// SendSMSJob::dispatch([
|
||||
// 'mobile' => $data['mobile'],
|
||||
// 'message' => "کد ورود به برنامه: $otpToken
|
||||
@@ -439,6 +470,10 @@ public function checkOTP(Request $request)
|
||||
]);
|
||||
|
||||
if (!$user = User::where('mobile', $data['mobile'])->first()) {
|
||||
AuthLog::record(AuthLog::EVENT_OTP_FAILED, [
|
||||
'mobile' => MobileNumberHelper::formatMobile($data['mobile']),
|
||||
], $request);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'user not found'
|
||||
], 404);
|
||||
@@ -446,12 +481,24 @@ public function checkOTP(Request $request)
|
||||
|
||||
$otpToken = $user->otpTokens()->where('token', $data['token'])->where('created_at', '>', now()->subMinutes(15))->first();
|
||||
if (!$otpToken && !($data['mobile'] == config('approo.admin_mobile') && $data['token'] == config('approo.admin_otp'))) {
|
||||
AuthLog::record(AuthLog::EVENT_OTP_FAILED, [
|
||||
'user_id' => $user->id,
|
||||
'mobile' => $user->mobile,
|
||||
'email' => $user->email,
|
||||
], $request);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'token not valid'
|
||||
], 400);
|
||||
}
|
||||
$otpToken?->delete();
|
||||
|
||||
AuthLog::record(AuthLog::EVENT_OTP_VERIFIED, [
|
||||
'user_id' => $user->id,
|
||||
'mobile' => $user->mobile,
|
||||
'email' => $user->email,
|
||||
], $request);
|
||||
|
||||
$token = '';
|
||||
if ($user->is_admin) {
|
||||
$token = $user->createToken('token', ['admin'])->plainTextToken;
|
||||
@@ -493,6 +540,13 @@ public function requestMobileVerification(Request $request)
|
||||
|
||||
SendOTPJob::dispatch($mobile, (string)$otp);
|
||||
|
||||
// Billable verification SMS
|
||||
AuthLog::record(AuthLog::EVENT_MOBILE_OTP_SENT, [
|
||||
'user_id' => $user->id,
|
||||
'mobile' => $mobile,
|
||||
'email' => $user->email,
|
||||
], $request);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'otp sent successfully'
|
||||
]);
|
||||
@@ -513,6 +567,12 @@ public function confirmMobileVerification(Request $request)
|
||||
->first();
|
||||
|
||||
if (!$otp) {
|
||||
AuthLog::record(AuthLog::EVENT_MOBILE_VERIFY_FAILED, [
|
||||
'user_id' => $user->id,
|
||||
'mobile' => $mobile,
|
||||
'email' => $user->email,
|
||||
], $request);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'invalid or expired token'
|
||||
], 400);
|
||||
@@ -525,6 +585,12 @@ public function confirmMobileVerification(Request $request)
|
||||
'mobile_verified_at' => now(),
|
||||
]);
|
||||
|
||||
AuthLog::record(AuthLog::EVENT_MOBILE_VERIFIED, [
|
||||
'user_id' => $user->id,
|
||||
'mobile' => $mobile,
|
||||
'email' => $user->email,
|
||||
], $request);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'mobile verified successfully'
|
||||
]);
|
||||
@@ -739,12 +805,19 @@ public function googleLogin(Request $request)
|
||||
}
|
||||
}
|
||||
|
||||
AuthLog::record(AuthLog::EVENT_GOOGLE_LOGIN, [
|
||||
'user_id' => $user->id,
|
||||
'mobile' => $user->mobile,
|
||||
'email' => $user->email,
|
||||
'package_name' => $packageName->name,
|
||||
], $request);
|
||||
|
||||
$token = $user->createToken('token', ['user'])->plainTextToken;
|
||||
|
||||
|
||||
return response()->json([
|
||||
'user' => $user,
|
||||
'token' => $token,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user