Create other user route

This commit is contained in:
T'JAMPENS QUENTIN p2406187
2026-02-11 14:51:28 +01:00
parent accbbe31d9
commit 5e232fd0af
3 changed files with 48 additions and 0 deletions
+42
View File
@@ -12,6 +12,7 @@ use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
use App\Services\UserService;
use Pest\Support\Str;
use Propaganistas\LaravelPhone\PhoneNumber;
class UserController extends Controller
@@ -57,6 +58,47 @@ class UserController extends Controller
return response()->json(['message' => 'User created successfully']);
}
public function createUserByAdmin(Request $request): JsonResponse {
if(Gate::denies('createOther', $request->user())){
return response()->json(["message" => "Can't create this user"], 403);
}
$request->validate([
'phone' => ['required', 'phone:FR,national'],
'email' => ['required', 'email:strict,rfc', 'unique:users,email'],
]);
$phone = new PhoneNumber($request["phone"], 'FR');
$password = Str::random(12);
$user = User::create([
"name" => $request["name"],
"email" => $request["email"],
"password" => Hash::make($password),
"lastname" => $request["lastname"],
"validate" => 1,
"phone" => $phone->formatInternational(),
]);
$notification = Notification::create([
'content' => "Nouvel utilisateur crée : {$user->name} {$user->lastname}",
]);
$admins = User::whereIn('role', [1, 2])->get();
$notification->users()->attach(
$admins->pluck('id')->toArray()
);
broadcast(new UserCreated($user));
return response()->json([
'message' => 'User created successfully',
"password" => $password,
]);
}
public function delete(Request $request): JsonResponse {
try {
$user = User::find($request->user()->id);
+4
View File
@@ -12,6 +12,10 @@ class UsersPolicy
return $user->role === 1 || $user->role === 2;
}
public function createOther(User $user): bool {
return $user->role === 1 || $user->role === 2;
}
public function deactivate(User $user, User $userToDeactivate): bool
{
return in_array($user->role, [1, 2])
+2
View File
@@ -10,3 +10,5 @@ Route::post("/users/register", [UserController::class, "create"]);
Route::middleware('web')->post('/users/login', [AuthController::class, 'login']);
Route::middleware(['web', 'auth:sanctum'])->post('/users/logout', [AuthController::class, 'logout']);
Route::middleware(['web', 'auth:sanctum'])->post('/users/create', [UserController::class, 'createUserByAdmin']);