用户可以创建新对象,并确保新对象连接到正确的用户.我的 idea 是使用当前登录用户的user_id编写一个隐藏字段:

<input style="display:none" name="group_id" type="number" value="{{ Auth()->User()->group_id }}">

现在的问题是,有人可以更改此处的值,并为另一个数字创建Objekt.

我想确保并在后端判断它,或者删除隐藏字段并将值添加到请求中. 目前,我的存储方法如下所示:

public function store(StoreObjektRequest $request)
    {   
        if (Auth()->User()->group_id != $request->group_id) 
        abort(403);

        $this->authorize('create', Objekt::class);
        
        Objekt::create($request->validated());
        return redirect()->route('dashboard')->with('message', 'Objekt erfolgreich erstellt');
    }

我的规则是:

public function rules()
    {
        return [
            'name' => 'required|max:5',
            'strasse' => 'required',
            'hausnummer' => 'required',
            'plz' => 'required',
            'ort' => 'required',
            'group_id' => 'required',
        ];
    }

我的问题是:判断新创建的对象的group_id的最佳方式是什么.我试图将值合并到请求中,但我自己的StoreObjektRequest正在等待所需的group_id.也许我可以使用我的保单,它目前正在返回True.

推荐答案

删除作为输入的group_id,并将其从验证中删除,因为它不是用户输入,而是从当前经过身份验证的用户那里获得.您可以从请求中获得经过验证的输入,然后将group_id合并到该数组中:

Objekt::create(auth()->user()->only('group_id') + $request->validated());

只需确保group_id在该型号上是"可填充的".

Php相关问答推荐

Laravel 10查询中的多个where子句

一列必须指定多个变量的Laravel查询

在WooCommerce中禁用特定日期之前的免费送货

在WooCommerce我的帐户部分添加带有自定义链接的自定义菜单项

WooCommerce我的帐户:从帖子作者处获取自定义帖子类型帖子ID

按与WooCommerce管理顺序列表中的特定字符串不匹配的特定元值筛选订单

Symfony Validator:如何使用XML表示法验证深度嵌套的数据?

调用模型[App\Models\Employee]上未定义的关系[title]

Shopware 6 插件:如何删除布尔配置并将其迁移到多选配置

如何将不同的 Woocommerce 费用合并为一个名称?

WooCommerce 中一件免费产品的数量折扣

用自定义代码替换 WooCommerce 单一产品简短描述

PHP访问子数组列表出错结果和长度

WooCommerce 有关新订单的附加邮箱通知,其中包含具体详细信息

如何在PHP中对多个脚本调用进行排队?

优化后的标题:如何在WooCommerce我的帐户编辑表单中添加账单字段

Woocommerce API 的 PHP Curl 附加参数

PHP 将数组值插入到 csv 列

在 EasyAdmin 中添加全局操作,将我的按钮放在表格下方而不是上方

从 d-m-Y 日期格式 laravel 计算月份 = 01 的列的总和