如何为Laravel';的用户模型


How can I create an edit form for Laravel's user model?

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

因此,我需要能够完成以下几件事:

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

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

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

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

由于添加新用户的权限取决于你的系统,我认为你不需要做所有的"角色和权限",如果你的系统只需要一个管理员用户来添加新用户,你可以从用户表中的另一列来做,但如果你有更多的权限控制区域或操作,那么ACL会更好。

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

这样做可以禁用到路由进行注册。因此,与其在routes.php中有Router::auth(),不如自己把它们拉进去,去掉你不需要的:https://github.com/laravel/framework/blob/ea9fd03f5c5aef12018812e22e82979d914fef93/src/Illuminate/Routing/Router.php#L367

剩下的事情你将需要自己编码。一个好的起点是获取视图进行注册,并将其放入登录用户的表单中。当用户创建*新用户时,您运行验证(需要电子邮件=>、需要密码=>等),您将获得类似的东西

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

剩下的就由你来编码了。