使用Laravel / Fortify创建管理员角色

时间:2020-10-29 22:47:59

标签: laravel-8

我现在正在学习使用Laravel和Fortify创建应用程序。我想创建一个管理员用户,该用户将从应用程序内部创建用户。该应用程序不是供公众使用,而是作为公司管理工具的内部应用程序。 登录正常,但是我在应用程序环境中具有注册视图,因此,目前,任何用户都可以创建其他用户(该应用程序正在构建中,而不在使用中),但是当我尝试访问以创建新用户时用户我被重定向到/ home,而不是注册视图。 我了解这是因为已经创建了用户,并且Fortify了解无需再注册(对于公共应用程序有用)。有什么办法可以让用户注册其他用户? 谢谢!!!

1 个答案:

答案 0 :(得分:1)

最后,我创建了一个几乎自定义的功能。 我创建了一个资源UserController并将注册表单添加到仪表板“注册用户”的新视图中,添加了链接users.create以重定向到注册视图,并包含了{{route('users.store')}}链接在表单的动作中。 然后,在UserController的存储方法中,我使用了Fortify的RegisterUserController类的代码,即方法存储,代码为“事件(new Registered($ user = $ creator-> create($ request-> all()))) ;“。 现在,我可以从其他用户会话中注册用户!! 现在,我需要实现角色,以便只有管理员用户可以注册其他用户!!! 如果您有兴趣,这里是代码!享受吧!

routes / web.php


model_table = {"id1":database1,"no2":database2, .......,"id10":database3}

@app.route('/import/<model_name>',methods=["GET", "POST"])
def data_import(model_name):
    if request.method == 'POST': 
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        file = request.files['file']
        if file.filename == '':
            flash(name + "ファイルを選択してください。", "failed")
            return redirect(request.url)
        if file and allowed_file(file.filename): 
            filename = secure_filename(file.filename)
            filename = os.path.join(app.config['UPLOAD_FOLDER'], filename)
            file.save(filename)
            model = model_table[model_name]
            objects = model.data_import(filename)   #some code inport data
            instance = Model(objects)  #create a database entries 
            db.session.bulk_save_objects(instance)
            db.session.commit()

    return render_template( 
        'import.html',
        forms = range(10)  #number of the total forms
    )

App / Http / Controlles / UserController.php->方法存储

Route::resource('users', UserController::class);

navigation-dropdown.blade.php为导航增加了一个链接

/**
 * Store a newly created resource in storage.
 *
 * @param Request $request
 * @param CreatesNewUsers $creator
 * @return void
 */
public function store(Request $request, CreatesNewUsers $creator)
{
    // Copied and pasted from the store method in the RegisterUserController class of Fortify
    // The code in origin has been commented to avoid duplications
    event(new Registered($user = $creator->create($request->all())));
}

register-user.blade.php

<div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex">
                <x-jet-nav-link href="{{ route('users.create') }}" :active="request()->routeIs('dashboard')">
                    {{ __('Register user') }}
                </x-jet-nav-link>
            </div>