userService

This commit is contained in:
kshitige
2025-03-18 16:39:57 +05:30
parent 2280abde46
commit 6582cd39ed
5 changed files with 142 additions and 15 deletions

View File

@@ -0,0 +1,79 @@
<?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)
{
// dd('test');
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.authentication_failed'), 401);
}
}
}

View File

@@ -1,11 +0,0 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class UsersController extends Controller
{
}

View File

@@ -0,0 +1,37 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CreateUserRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'email' => 'required|email|unique:users,email',
// 'password' => 'required|min:6',
'authority' => 'required|in:TENANT_ADMIN,CUSTOMER_USER,SYS_ADMIN',
'first_name' => 'nullable|string|max:50',
'last_name' => 'nullable|string|max:50',
'phone' => 'nullable|string|max:20',
'tenant_id' => 'required|integer',
'customer_id' => 'required|uuid',
'version' => 'required|integer',
'name' => 'required|string|max:255',
'description' => 'nullable|string',
'default_dashboard_id' => 'nullable|uuid',
'default_dashboard_fullscreen' => 'boolean',
'home_dashboard_id' => 'nullable|uuid',
'home_dashboard_hide_toolbar' => 'boolean',
'user_credentials_enabled' => 'boolean',
'failed_login_attempts' => 'integer',
'last_login_ts' => 'nullable|integer',
];
}
}

View File

@@ -6,7 +6,7 @@ use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Cache;
use Exception;
class ThingsBoardService
class AdminService
{
private $baseUrl;
private $username;
@@ -15,8 +15,8 @@ class ThingsBoardService
public function __construct()
{
$this->baseUrl = env('THINGSBOARD_URL', 'http://65.0.131.117:8080');
$this->username = env('THINGSBOARD_USERNAME', 'tenant@thingsboard.org');
$this->password = env('THINGSBOARD_PASSWORD', 'tenant');
$this->username = env('THINGSBOARD_USERNAME', 'tenant1@thingsboard.org');
$this->password = env('THINGSBOARD_PASSWORD', 'tenant1');
}
public function getToken()
@@ -41,4 +41,22 @@ class ThingsBoardService
throw new Exception('Unable to authenticate with ThingsBoard: ' . $response->body());
}
}
public function createUser(array $data)
{
$token = $this->getToken();
$response = Http::withHeaders([
'Authorization' => "Bearer $token",
'accept' => 'application/json',
'Content-Type' => 'application/json',
])->post(env('THINGSBOARD_CREATE_USER_URL'), $data);
if ($response->successful()) {
return $response->json();
} else {
throw new Exception('Failed to create user: ' . $response->body());
}
}
}

View File

@@ -1,5 +1,6 @@
<?php
use App\Http\Controllers\APIS\AdminApi\UsersController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
@@ -8,4 +9,7 @@ Route::get('/adminapi', function () {
return ('Welcome to admin api routes.');
});
// Route::post('')
Route::post('/users-store', [UsersController::class, 'store'])->name('user_create');
// Route::post('/users-store', function () {
// return ('Welcome to admin api routes.');
// });