136 lines
4.8 KiB
PHP
136 lines
4.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\APIS\AdminApi;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Requests\CreateUserRequest;
|
|
use App\Models\User;
|
|
use App\Services\AdminService;
|
|
use Exception;
|
|
use Illuminate\Database\QueryException;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Str;
|
|
|
|
class UsersController extends Controller
|
|
{
|
|
|
|
protected $adminService;
|
|
|
|
public function __construct(AdminService $adminService)
|
|
{
|
|
$this->adminService = $adminService;
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
|
|
try {
|
|
$userData = [
|
|
'email' => $request->email,
|
|
'authority' => $request->authority,
|
|
'tenantId' => $request->tenant_id,
|
|
'customerId' => $request->customer_id,
|
|
'firstName' => $request->first_name,
|
|
'lastName' => $request->last_name,
|
|
'phone' => $request->phone,
|
|
'name' => $request->name,
|
|
'description' => $request->description,
|
|
'defaultDashboardId' => $request->default_dashboard_id,
|
|
'defaultDashboardFullscreen' => $request->default_dashboard_fullscreen,
|
|
'homeDashboardId' => $request->home_dashboard_id,
|
|
'homeDashboardHideToolbar' => $request->home_dashboard_hide_toolbar,
|
|
'userCredentialsEnabled' => $request->user_credentials_enabled,
|
|
'failedLoginAttempts' => $request->failed_login_attempts,
|
|
'lastLoginTs' => $request->last_login_ts,
|
|
'version' => $request->version,
|
|
];
|
|
|
|
$response = $this->adminService->createUser($userData);
|
|
|
|
$user = new User();
|
|
$user->id = Str::uuid();
|
|
$user->created_time = now()->timestamp;
|
|
$user->tenant_id = $request->tenant_id;
|
|
$user->customer_id = $request->customer_id;
|
|
$user->email = $request->email;
|
|
$user->authority = $request->authority;
|
|
$user->first_name = $request->first_name;
|
|
$user->last_name = $request->last_name;
|
|
$user->phone = $request->phone;
|
|
$user->version = $request->version;
|
|
$user->name = $request->name;
|
|
$user->description = $request->description;
|
|
$user->default_dashboard_id = $request->default_dashboard_id;
|
|
$user->default_dashboard_fullscreen = $request->default_dashboard_fullscreen;
|
|
$user->home_dashboard_id = $request->home_dashboard_id;
|
|
$user->home_dashboard_hide_toolbar = $request->home_dashboard_hide_toolbar;
|
|
$user->user_credentials_enabled = $request->user_credentials_enabled;
|
|
$user->failed_login_attempts = $request->failed_login_attempts;
|
|
$user->last_login_ts = $request->last_login_ts;
|
|
$user->save();
|
|
|
|
return jsonResponseWithSuccessMessage(__('auth.data_fetched_successfully'), $response, 200);
|
|
} catch (QueryException $e) {
|
|
Log::error('Error in creating User ' . $e->getMessage());
|
|
return jsonResponseWithErrorMessageApi(__('auth.something went wrong'), 401);
|
|
}
|
|
}
|
|
|
|
public function list()
|
|
{
|
|
try {
|
|
$users = $this->adminService->listUsers();
|
|
|
|
if (!empty($users['data'])) {
|
|
return response()->json([
|
|
'message' => 'Users fetched successfully',
|
|
'users' => $users['data']
|
|
], 200);
|
|
}
|
|
|
|
return response()->json(['message' => 'No users found'], 404);
|
|
} catch (Exception $e) {
|
|
return response()->json(['error' => 'Failed to fetch users', 'details' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
public function delete($userId)
|
|
{
|
|
try {
|
|
$response = $this->adminService->deleteUser($userId);
|
|
|
|
if (isset($response['status']) && $response['status'] === 404) {
|
|
return response()->json([
|
|
'error' => "User with ID $userId not found in ThingsBoard",
|
|
'response' => $response
|
|
], 404);
|
|
}
|
|
|
|
$user = User::find($userId);
|
|
|
|
if ($user) {
|
|
$user->delete();
|
|
} else {
|
|
return response()->json([
|
|
'error' => "User with ID $userId not found in local database"
|
|
], 404);
|
|
}
|
|
|
|
return response()->json([
|
|
'message' => 'User deleted successfully from ThingsBoard and local database',
|
|
'response' => $response
|
|
], 200);
|
|
|
|
} catch (Exception $e) {
|
|
Log::error('Error in deleting User ' . $e->getMessage());
|
|
|
|
return response()->json([
|
|
'error' => 'Failed to delete user',
|
|
'details' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
|
|
}
|