如何为Laravel的用户模型创建编辑表单?

时间:2016-05-18 17:07:28

标签: php laravel laravel-5

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

执行此操作后,您可以禁用注册路由。因此,不要在您的routes.php中使用Router::auth(),而是将其自己拉出来并省去您不需要的内容:https://github.com/laravel/framework/blob/ea9fd03f5c5aef12018812e22e82979d914fef93/src/Illuminate/Routing/Router.php#L367

您需要自己编码的其他内容。一个很好的起点是将视图用于注册并将其放入登录用户的表单中。当用户创建*新用户时,您运行验证(email => required,password => required等),您将拥有类似

的内容
// 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')]);

其余由您决定。

答案 1 :(得分:1)

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

对于用户桌面上的新方法,我认为最好制作一个UserController并使你的逻辑远离Laravel的auth控制器,这里用户将像任何资源一样,但是您需要验证尝试添加其他用户的经过身份验证的用户是否具有该权限。

此添加新用户的权限取决于您的系统,我认为您不需要制作所有"角色和权限"如果您的系统只需要管理员用户来添加新用户,则可以从用户表中的其他列进行操作,但如果您将拥有更多权限控制区域或操作,请将此视为ACL将是好多了。