打开一个文章内容的编辑界面 ... 现在不管用户是谁,在这个编辑界面上会显示全部的用户选项 .. 我现在只想让特定的用户有这个权限可以修改文章内容的作者 .. 普通用户不能修改文章内容的作者 ..
回到项目 ... 打开 PostController .. 先找到 edit 方法 .. 文章内容的编辑界面是用这个方法来处理的 ..
这个 userItems 就是一组用户选项 .. 改造一下它 .. 先添加一个 let userItems .. 让它等于一个空白的数组 .. 如果是普通用户 ... 这个 userItems 里面只能有一个用户选项,就是文章原本的作者 ..
把 post.user 里的东西放进来 .. 因为上面查询文章数据的时候,有个 loadMany ,载入了文章的用户这个关系,所以在 post 里的 user 这个属性里的数据就是文章的相关的作者 ..
再添加一个 checked .. 值是 true,让这个用户选项变成默认勾选的状态 ..
然后我们再判断一下 .. 如果 auth.user.id 等于 1 ... 这样这个 userItems 的值应该就是网站上的全部的用户 ..
在我们的项目里现在还没有权限控制功能 .. 所以这里我们只是简单的验证了一下用户的 id 号,假设网站上只有一个管理员,就是 id 号是 1 的这个人 ..
另外如果网站上的用户很多的话,使用单选按钮显示这些用户就不太合适了 .. 以后我们可以添加一个搜索功能 .. 就是管理员在编辑内容的时候,可以搜索网站上的用户 .. 选中需要的用户,让他作为内容的作者 ..
暂时先这样简单的处理一下就行 .. 因为现在我们的主要目的是去学习一些思路,还有方法 ..
再找到 update 方法 ...
这里需要判断一下用户,看看 auth.user.id 是不是 1 ,就是当前登录的用户的 id 号是不是 1 .. 我们假设 id 号是 1 的用户就是网站上的管理员 ..
只有这种情况下,才去更新内容相关的用户 .. 更新文章和内容的关系,现在用的是 post 模型上的 user 这个关系,使用 associate 这个方法可以更新它们之间的关系 ..
把方法需要用的这个 auth,从它的 context 参数里解构出来 ...
试验
再去试一下 ... 刷新一下这个编辑界面 .. 提示 auth 没有定义 ..
回到项目 ... 因为在这个 edit 方法里面,我们用了 auth .. 所以需要把它从方法的 context 参数里解构出来 ..
再回来试一下 ... 现在我登录的用户的 id 号是 1 .. 所以打开文章内容的编辑界面的时候,会显示网站上的所有的用户 .. 修改一下这个文章的用户 .. 更新一下 ... 可以成功的保存修改 ..
下面可以用一个普通的用户再登录一下 ... 输入用户名 .. 密码 ... 确认登录 ... 再打开一个文章 ... 编辑一下 ..
这里就只会显示文章原本的作者 .. 因为普通用户没有权限修改内容的作者 ...