【问题标题】:How can I create an edit form for Laravel's user model?如何为 Laravel 的用户模型创建编辑表单?
【发布时间】:2023-03-15 11:40:01
【问题描述】:

我想使用 laravel 5.2 中内置的默认身份验证,但是我的应用程序不需要让用户注册自己,因为用户是管理员仪表板的授权用户。只有当前存在的用户才能创建用户。

因此,我需要能够完成一些事情:

  • 需要为公共用户禁用注册
  • 需要允许认证用户注册新用户,访问注册表
  • 需要提供一个表单以允许经过身份验证的用户编辑用户、允许密码重置、名称更改等...

我应该在哪里为这些视图构建控制器方法?我应该完全构建一个新的用户控制器,还是直接将创建和编辑方法写入 authcontroller?总的来说,基于 Laravel 的身份验证构建这样一个系统的最佳实践是什么。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    对于禁用公共用户注册,您可以删除视图中的所有链接以注册路由,您可以编辑AuthController方法showRegistrationForm()register(),首先加载视图,您可以重定向到'登录' 路由,第二个是保存用户的POST。

    对于用户表上的新方法,我认为最好创建一个 UserController 并将您的逻辑远离 Laravel 的身份验证控制器,这里用户将作为任何资源,但您需要验证是否经过身份验证的用户正在尝试添加另一个用户的用户具有该权限。

    对于添加新用户的权限取决于您的系统,如果您的系统只需要管理员用户来添加新用户,我认为您不需要制作所有“角色和权限”的东西,您可以这样做它来自用户表中的另一列,但如果您将有更多的权限控制区域或操作,那么将其视为 ACL 会好很多。

    【讨论】:

      【解决方案2】:

      听起来您需要将通过函数调用拉入的路由引入文件本身。

      这样做可以让您禁用注册路由。因此,不要让您的 routes.php 中的 Router::auth() 自己将它们拉入并留下您不需要的:https://github.com/laravel/framework/blob/ea9fd03f5c5aef12018812e22e82979d914fef93/src/Illuminate/Routing/Router.php#L367

      您需要自己编写代码的其余部分。一个很好的起点是获取注册视图并将其放入登录用户的表单中。当用户创建 *new 用户时,您运行验证(电子邮件 => 必需,密码 => 必需等),您将拥有类似

      // this would be in something like public function createUser(Request $request)
      $rules = [
        'email' => 'required|unique:users,email',
        'password' => 'required|confirmed'
      ];
      
      // validate the request, if it doesn't pass it will redirect back with input and errors
      $this->validate($request, $rules);
      
      // create the user now
      User::create(['email' => $request->input('email'), 'password' => \Hash::make($request->input('password')]);
      

      剩下的就看你写代码了。

      【讨论】:

        猜你喜欢
        • 2016-12-13
        • 1970-01-01
        • 2013-08-20
        • 1970-01-01
        • 1970-01-01
        • 2014-02-14
        • 1970-01-01
        • 2016-08-07
        • 2019-05-01
        相关资源
        最近更新 更多