This commit is contained in:
2025-05-27 19:06:42 +05:30
4 changed files with 184 additions and 3 deletions

View File

@@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests\CreateUserRequest;
use App\Mail\Admin\UserCreatedMail;
use App\Mail\UserLink;
use App\Models\User;
use App\Services\AdminService;
use Exception;
@@ -305,7 +306,7 @@ class UsersController extends Controller
'message' => 'User created successfully',
'data' => [
'user_id' => $userId,
'token'=>$randomToken,
'token' => $randomToken,
'activation_link' => $newActivationLink,
// 'external_service_response' => $serviceResponse
]
@@ -481,7 +482,7 @@ class UsersController extends Controller
// }
public function activate($id,$token, Request $request)
public function activate($id, $token, Request $request)
{
try {
@@ -759,4 +760,91 @@ class UsersController extends Controller
return jsonResponseWithErrorMessage($e->getMessage(), 500);
}
}
public function userEmailCheck(Request $request)
{
try {
$validator = Validator::make($request->all(), [
'email' => 'required|email'
]);
if ($validator->fails()) {
return response()->json([
'success' => false,
'message' => 'Validation failed',
'errors' => $validator->errors()
], 422);
}
$email = $request->input('email');
$user = User::where('email', $email)->first();
if ($user) {
// If user
$mailData = [
'name' => $user->first_name,
'user_id' => $user->id,
];
Mail::to($user->email)->send(new UserLink($mailData));
return response()->json([
'success' => true,
'message' => 'Email exists',
'user_id' => $user->id
], 200);
}
return response()->json([
'success' => false,
'message' => 'Email does not exist'
], 404);
} catch (Exception $e) {
Log::error("An error occurred while checking email: " . $e->getMessage());
return response()->json(['error' => 'Failed to check email', 'details' => $e->getMessage()], 500);
}
}
public function userUpdatePassword(Request $request)
{
try {
$validator = Validator::make($request->all(), [
'user_id' => 'required',
'password' => 'required'
]);
if ($validator->fails()) {
return response()->json([
'success' => false,
'message' => 'Validation failed',
'errors' => $validator->errors()
], 422);
}
$userId = $request->input('user_id');
$password = $request->input('password');
$user = User::find($userId);
if (!$user) {
return response()->json([
'success' => false,
'message' => 'User not found'
], 404);
}
// Update password
$user->password = Hash::make($password);
$user->save();
return response()->json([
'success' => true,
'message' => 'Password updated successfully'
], 200);
} catch (Exception $e) {
Log::error("An error occurred while updating password: " . $e->getMessage());
return response()->json(['error' => 'Failed to update password', 'details' => $e->getMessage()], 500);
}
}
}

59
app/Mail/UserLink.php Normal file
View File

@@ -0,0 +1,59 @@
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class UserLink extends Mailable
{
use Queueable, SerializesModels;
public $mailData;
/**
* Create a new message instance.
*/
public function __construct($mailData)
{
$this->mailData = $mailData;
}
/**
* Get the message envelope.
*/
public function envelope(): Envelope
{
return new Envelope(
subject: 'Update Password',
);
}
/**
* Get the message content definition.
*/
public function content(): Content
{
return new Content(
view: 'view.user_update_password',
);
}
/**
* Get the attachments for the message.
*
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
*/
public function attachments(): array
{
return [];
}
}

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Update Your Password</title>
</head>
<body>
<h1>Hello, {{ $user['name'] }}!</h1>
<p>We received a request to update the password for your account.</p>
<p>If you made this request, you can update your password using the link below:</p>
<p>
<a href=" http://vib360.betadelivery.com/forget-password/{{$user['user_id'] }}"
style="display: inline-block; padding: 10px 20px; color: #fff; background-color: #007bff; text-decoration: none; border-radius: 5px;">
Update Password
</a>
</p>
<p>If you did not request a password update, no action is needed. Your account is secure.</p>
<p>Thank you,<br>The Support Team</p>
</body>
</html>

View File

@@ -5,7 +5,7 @@ use Illuminate\Support\Facades\Route;
use App\Http\Controllers\APIS\CustomerApi\UserAssetLinkController;
use Tymon\JWTAuth\Facades\JWTAuth;
use App\Http\Controllers\AlarmControllerCommon;
use App\Http\Controllers\APIS\AdminApi\UsersController;
use App\Http\Controllers\APIS\CustomerApi\AuthController;
use App\Http\Controllers\APIS\CustomerApi\CustomerDeviceInfoController;
use App\Http\Controllers\APIS\CustomerApi\TelemetryController;
@@ -63,4 +63,12 @@ Route::middleware(['customerApiBasicAuth'])->group(function () {
Route::post('/get-user-alarms', [TelemetryController::class, 'getUserAlarms']);
Route::get('/get-user-device-by-asset/{assetId}', [TelemetryController::class, 'getUserDeviceByAsset']);
Route::get('/get-user-assets', [TelemetryController::class, 'getUserAssets']);
});
// user password update
Route::get('/user-password-update-link', [UsersController::class, 'userEmailCheck']);
Route::post('/user-password-update', [UsersController::class, 'userUpdatePassword'])->name('user.password.update');