sneha #95
@@ -404,6 +404,78 @@ class UsersController extends Controller
|
||||
|
||||
|
||||
|
||||
// public function activate(Request $request, $id)
|
||||
// {
|
||||
// Log::info('Full Request URL: ' . $request->fullUrl());
|
||||
|
||||
// try {
|
||||
// $user = User::find($id);
|
||||
|
||||
// if (!$user) {
|
||||
// Log::error("User not found for ID: {$id}");
|
||||
// return response()->json([
|
||||
// 'status' => false,
|
||||
// 'message' => 'User not found.'
|
||||
// ], 404);
|
||||
// }
|
||||
|
||||
// $token = $request->query('token');
|
||||
// if (!$token) {
|
||||
// Log::error("Token missing for User ID: {$id}");
|
||||
// return response()->json([
|
||||
// 'status' => false,
|
||||
// 'message' => 'Invalid activation link.'
|
||||
// ], 401);
|
||||
// }
|
||||
|
||||
// // Update password in Laravel
|
||||
// $user->password = Hash::make('password');
|
||||
// $user->save();
|
||||
// Log::info("Password updated for User ID: {$id} in Laravel.");
|
||||
|
||||
// // Activate user in ThingsBoard
|
||||
// $activateToken = $token;
|
||||
// $password = 'password';
|
||||
|
||||
// try {
|
||||
// $this->adminService->activateUser($user, $password, $activateToken);
|
||||
// Log::info("User ID: {$id} activated successfully in ThingsBoard.");
|
||||
|
||||
// return response()->json([
|
||||
// 'status' => true,
|
||||
// 'message' => 'User activated and password updated successfully!',
|
||||
// 'user_id' => $user->id
|
||||
// ], 200);
|
||||
|
||||
// } catch (\Exception $e) {
|
||||
// Log::error("ThingsBoard activation failed: " . $e->getMessage());
|
||||
|
||||
// // If token is invalid or user is already activated, skip activation
|
||||
// if (str_contains($e->getMessage(), 'Unable to find user credentials')) {
|
||||
// return response()->json([
|
||||
// 'status' => true,
|
||||
// 'message' => 'User is already activated. Password updated successfully.'
|
||||
// ], 200);
|
||||
// }
|
||||
|
||||
// return response()->json([
|
||||
// 'status' => false,
|
||||
// 'message' => 'Failed to activate user in ThingsBoard.',
|
||||
// 'error' => $e->getMessage()
|
||||
// ], 500);
|
||||
// }
|
||||
|
||||
// } catch (\Exception $e) {
|
||||
// Log::error("Error activating user ID: {$id}. Exception: " . $e->getMessage());
|
||||
// return response()->json([
|
||||
// 'status' => false,
|
||||
// 'message' => 'An error occurred. Please try again later.',
|
||||
// 'error' => $e->getMessage()
|
||||
// ], 500);
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
public function activate(Request $request, $id)
|
||||
{
|
||||
Log::info('Full Request URL: ' . $request->fullUrl());
|
||||
@@ -433,28 +505,31 @@ class UsersController extends Controller
|
||||
$user->save();
|
||||
Log::info("Password updated for User ID: {$id} in Laravel.");
|
||||
|
||||
// Activate user in ThingsBoard
|
||||
$activateToken = $token;
|
||||
$password = 'password';
|
||||
// Dummy email for ThingsBoardg
|
||||
// $dummyEmail = 'dummy+' . $user->id . '@example.com';
|
||||
|
||||
try {
|
||||
$this->adminService->activateUser($user, $password, $activateToken);
|
||||
$this->adminService->activateUser($user, 'password', $token);
|
||||
Log::info("User ID: {$id} activated successfully in ThingsBoard.");
|
||||
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'User activated and password updated successfully!',
|
||||
'user_id' => $user->id
|
||||
'user_id' => $user->id,
|
||||
'real_email' => $user->email,
|
||||
// 'tb_email' => $dummyEmail
|
||||
], 200);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
Log::error("ThingsBoard activation failed: " . $e->getMessage());
|
||||
|
||||
// If token is invalid or user is already activated, skip activation
|
||||
if (str_contains($e->getMessage(), 'Unable to find user credentials')) {
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'User is already activated. Password updated successfully.'
|
||||
'message' => 'User is already activated. Password updated successfully.',
|
||||
'user_id' => $user->id,
|
||||
'real_email' => $user->email,
|
||||
// 'tb_email' => $dummyEmail
|
||||
], 200);
|
||||
}
|
||||
|
||||
@@ -479,7 +554,6 @@ class UsersController extends Controller
|
||||
|
||||
|
||||
|
||||
|
||||
// public function autoLogin(Request $request)
|
||||
// {
|
||||
// $request->validate([
|
||||
|
||||
@@ -263,10 +263,15 @@ class AdminService
|
||||
if (!isset($data['tenant_id'])) {
|
||||
throw new \Exception('tenant_id is required');
|
||||
}
|
||||
static $counter = 1;
|
||||
$email = "dummy{$counter}@example.com";
|
||||
$counter++;
|
||||
|
||||
|
||||
// Prepare the payload with required fields
|
||||
$payload = [
|
||||
'email' => $data['email'] ?? '',
|
||||
|
||||
'email' => $email,
|
||||
'authority' => $data['authority'] ?? 'CUSTOMER_USER',
|
||||
'firstName' => $data['first_name'] ?? '',
|
||||
'lastName' => $data['last_name'] ?? '',
|
||||
@@ -520,33 +525,66 @@ class AdminService
|
||||
public function activateUser(User $user, string $password, string $activateToken)
|
||||
{
|
||||
try {
|
||||
$dummyEmail = 'dummy+' . $user->id . '@example.com'; // unique dummy email
|
||||
// $dummyEmail = 'dummy+' . $user->id . '@example.com';
|
||||
$token = $this->getToken();
|
||||
|
||||
$payload = [
|
||||
// Step 1: Search for existing user by real email
|
||||
$searchResponse = Http::withHeaders([
|
||||
'Authorization' => "Bearer $token",
|
||||
'accept' => 'application/json'
|
||||
])->get("{$this->baseUrl}/api/users?pageSize=1&page=0&textSearch={$user->email}");
|
||||
|
||||
if ($searchResponse->successful() && !empty($searchResponse['data'])) {
|
||||
$tbUser = $searchResponse['data'][0];
|
||||
$tbUserId = $tbUser['id']['id'];
|
||||
|
||||
// Step 2: Update user email to dummy email
|
||||
Http::withHeaders([
|
||||
'Authorization' => "Bearer $token",
|
||||
'Content-Type' => 'application/json'
|
||||
])->post("{$this->baseUrl}/api/user", [
|
||||
'id' => ['id' => $tbUserId],
|
||||
// 'email' => $dummyEmail,
|
||||
'authority' => $tbUser['authority'],
|
||||
'firstName' => $tbUser['firstName'] ?? '',
|
||||
'lastName' => $tbUser['lastName'] ?? '',
|
||||
'tenantId' => $tbUser['tenantId'],
|
||||
'customerId' => $tbUser['customerId'],
|
||||
'additionalInfo' => $tbUser['additionalInfo'] ?? null,
|
||||
]);
|
||||
|
||||
// Log::info("ThingsBoard user email updated to dummy: {$dummyEmail}");
|
||||
}
|
||||
|
||||
// Step 3: Activate account using dummy email
|
||||
$activationPayload = [
|
||||
'activateToken' => $activateToken,
|
||||
'password' => $password,
|
||||
'email' => $dummyEmail // send dummy email to ThingsBoard
|
||||
// 'email' => $dummyEmail
|
||||
];
|
||||
|
||||
$activationUrl = "{$this->baseUrl}/api/noauth/activate";
|
||||
|
||||
$response = Http::withHeaders([
|
||||
'Content-Type' => 'application/json',
|
||||
])->post($activationUrl, $payload);
|
||||
])->post($activationUrl, $activationPayload);
|
||||
|
||||
if (!$response->successful()) {
|
||||
Log::error("Failed to activate user in ThingsBoard. Error: " . $response->body());
|
||||
Log::error("Activation failed. Response: " . $response->body());
|
||||
throw new \Exception('Failed to activate user: ' . $response->body());
|
||||
}
|
||||
|
||||
Log::info("User activated in ThingsBoard with dummy email: {$dummyEmail} for User ID: {$user->id}");
|
||||
// Log::info("User activated in ThingsBoard with dummy email: {$dummyEmail}");
|
||||
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Error activating user in ThingsBoard for User ID: {$user->id}. Exception: " . $e->getMessage());
|
||||
Log::error("Error during ThingsBoard activation. Exception: " . $e->getMessage());
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function getUserByEmailThingsBoard(string $email)
|
||||
{
|
||||
Log::info("Fetching ThingsBoard ID by email: $email");
|
||||
@@ -611,4 +649,4 @@ class AdminService
|
||||
throw new Exception('Failed to fetch users: ' . $response->body());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user