Jak upravit opevnit CreatesNewUsers.php rozhraní?

0

Otázka

Potřebuji upravit /vendor/laravel/fortify/src/Contracts/CreatesNewUsers.php rozhraní a přidat 1 více bool parametr, jak pomocí CreateNewUser v různých místech aplikace validace pravidel jsou různé, říci, že v některých místech, heslo není vyplněn na vytvoření uživatele, ale musí být oddělené funkce.

Tak jsem zkopíroval soubor /project/resources/fortify/CreatesNewUsers.php s obsahu :

<?php

namespace Laravel\Fortify\Contracts;

interface CreatesNewUsers
{
    public function create(array $input, bool $makeValidation);
}

a v app/Actions/Fortify/CreateNewUser.php upravil jsem :

<?php

namespace App\Actions\Fortify;

use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
//use Laravel\Fortify\Contracts\CreatesNewUsers;
use Resources\Fortify\CreatesNewUsers;  // Reference to my interface
use Laravel\Jetstream\Jetstream;

class CreateNewUser implements CreatesNewUsers
{
    use PasswordValidationRules;
public function create(array $input, bool $makeValidation)
    {
...

Ale snaží použít tuto třídu mám chybu

Interface "Resources\Fortify\CreatesNewUsers" not found

Což je platný způsob, jak ?

Díky!!!

laravel laravel-fortify
2021-11-24 06:03:39
1

Nejlepší odpověď

0

Jsem se přestěhoval rozhraní v souboru app/Actions/Fortify/CreatesNewUsers.php :

<?php
namespace App\Actions\Fortify;

interface CreatesNewUsers
{
    public function create(array $input, bool $make_validation, array $hasPermissions);
}

a upravené app/Actions/Fortify/CreateNewUser.php :

<?php

namespace App\Actions\Fortify;

use App\Models\User;
use Illuminate\Database\QueryException;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use DB;

use App\Actions\Fortify\CreatesNewUsers;

use Laravel\Jetstream\Jetstream;
use Spatie\Permission\Models\Permission;

class CreateNewUser implements CreatesNewUsers
{
    use PasswordValidationRules;

    /**
     * Validate and create a newly registered user.
     *
     * @param array $input
     *
     * @return \App\Models\User
     */
    public function create(array $input, bool $make_validation, array $hasPermissions)
    {
        if ($make_validation) {
            $userValidationRulesArray = User::getUserValidationRulesArray(null, '', []);
            if (\App::runningInConsole()) {
                unset($userValidationRulesArray['password_2']);
            }


            $validator = Validator::make($input, $userValidationRulesArray);//->validate();
            if ($validator->fails()) {
                $errorMsg = $validator->getMessageBag();
                if (\App::runningInConsole()) {
                    echo '::$errorMsg::' . print_r($errorMsg, true) . '</pre>';
                }

                return $errorMsg;
            }
        } // if($make_validation) {

        $newUserData = [
            'name'         => $input['name'],
            'email'        => $input['email'],
            'account_type' => $input['account_type'],
            'phone'        => $input['phone'],
            'website'      => $input['website'],
            'notes'        => $input['notes'],
            'first_name'   => $input['first_name'],
            'last_name'    => $input['last_name'],
        ];
        if (isset($input['password'])) {
            $newUserData['password'] = Hash::make($input['password']);
        }
        if (isset($input['status'])) {
            $newUserData['status'] = $input['status'];
        }
        if (isset($input['activated_at'])) {
            $newUserData['activated_at'] = $input['activated_at'];
        }
        if (isset($input['avatar'])) {
            $newUserData['avatar'] = $input['avatar'];
        }

        try {
            DB::beginTransaction();

            $newUser = User::create($newUserData);
            foreach ($hasPermissions as $nextHasPermission) {
                $appAdminPermission = Permission::findByName($nextHasPermission);
                if ($appAdminPermission) {
                    $newUser->givePermissionTo($appAdminPermission);
                }

            }
            DB::commit();
            return $newUser;

        } catch (QueryException $e) {
            DB::rollBack();
            if (\App::runningInConsole()) {
                echo '::$e->getMessage()::' . print_r($e->getMessage(), true) . '</pre>';
            }
        }
        return false;
    }
}

To mi umožňuje používat CreateNewUser z různých částí aplikace, jako jsou secí stroje, adminarea, registrace uživatele s různými chování. Pro mě se to zdá dobrý způsob, jak pomocí opevnit a CreateNewUser...

2021-11-26 08:59:54

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................