Create other user route
This commit is contained in:
@@ -12,6 +12,7 @@ use Illuminate\Support\Facades\Gate;
|
|||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
|
use Pest\Support\Str;
|
||||||
use Propaganistas\LaravelPhone\PhoneNumber;
|
use Propaganistas\LaravelPhone\PhoneNumber;
|
||||||
|
|
||||||
class UserController extends Controller
|
class UserController extends Controller
|
||||||
@@ -57,6 +58,47 @@ class UserController extends Controller
|
|||||||
return response()->json(['message' => 'User created successfully']);
|
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 {
|
public function delete(Request $request): JsonResponse {
|
||||||
try {
|
try {
|
||||||
$user = User::find($request->user()->id);
|
$user = User::find($request->user()->id);
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ class UsersPolicy
|
|||||||
return $user->role === 1 || $user->role === 2;
|
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
|
public function deactivate(User $user, User $userToDeactivate): bool
|
||||||
{
|
{
|
||||||
return in_array($user->role, [1, 2])
|
return in_array($user->role, [1, 2])
|
||||||
|
|||||||
@@ -10,3 +10,5 @@ Route::post("/users/register", [UserController::class, "create"]);
|
|||||||
Route::middleware('web')->post('/users/login', [AuthController::class, 'login']);
|
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/logout', [AuthController::class, 'logout']);
|
||||||
|
|
||||||
|
Route::middleware(['web', 'auth:sanctum'])->post('/users/create', [UserController::class, 'createUserByAdmin']);
|
||||||
|
|||||||
Reference in New Issue
Block a user