如何实现 管理员账号修改普通用户的账号信息和密码?

我已经按照教程完成了第八章的管理员权限,但是我想知道如何实现通过管理员账号修改其他用户的信息和密码?
如下图,我在用户列表页面内做了些修改,在每个删除用户按钮旁边加了一个修改账户的按钮,我想通过这个按钮来进入用户信息页面进行编辑,重置密码, 然后。。显然是各种报错。想请教一下这个具体要如何实现?不胜感激!
file
图中第一个用户为管理员账户

补充我的代码:
index.blade.php

..........
<ul class="users">
    @foreach ($users as $user)
      <li class="index_list">
        <a href="{{ route('users.show', $user->id) }}" class="username">{{ $user->id }}. {{ $user->name }}</a>

        @can('destroy', $user)
        <form action="{{ route('users.destroy', $user->id) }}" method="post">    //教程里的删除按钮
          {{ csrf_field() }}
          {{ method_field('DELETE') }}
          <button type="submit" class="btn btn-sm btn-danger delete-btn">Delete User</button>
        </form>
        @endcan
        @can('admin_modify', $user)
         <form action="" method="post">
          {{ csrf_field() }}
          <a href="{{ route('users.edit') }}" class="btn btn-sm btn-danger delete-btn">Modify Account</a> 
          //我加的修改用户资料按钮
        </form>
        @endcan
      </li>
    @endforeach
  </ul>
  {!! $users->render() !!}

UserPolicy.php

    ..........
    public function admin_modify(User $currentUser, User $user)
    {
        return $currentUser->is_admin;
    }
    ..........
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

可以将验证逻辑放到 UserPolicyupdate 中:

.
.
.

class UserPolicy
{
    use HandlesAuthorization;

    public function update(User $currentUser, User $user)
    {
        return $currentUser->id === $user->id || $currentUser->is_admin; //添加 $currentUser->is_admin
    }
.
.
.

这样不用admin_nofity这个策略,仅用update这个策略就可以实现判断。
如果按照你的方法,在 UserControllereditupdate 都要添加 Policy 验证,如在edit中:

 public function edit(User $user)
 {
      $currentUser = Auth::user();
      if ($currentUser->can('update', $user) || $currentUser->can('admin_modify', $user))  {
            return view('users.edit', ['user' => $user]);
      } else {
            // 验证不通过的处理
      }  
  }
5年前 评论
讨论数量: 1

可以将验证逻辑放到 UserPolicyupdate 中:

.
.
.

class UserPolicy
{
    use HandlesAuthorization;

    public function update(User $currentUser, User $user)
    {
        return $currentUser->id === $user->id || $currentUser->is_admin; //添加 $currentUser->is_admin
    }
.
.
.

这样不用admin_nofity这个策略,仅用update这个策略就可以实现判断。
如果按照你的方法,在 UserControllereditupdate 都要添加 Policy 验证,如在edit中:

 public function edit(User $user)
 {
      $currentUser = Auth::user();
      if ($currentUser->can('update', $user) || $currentUser->can('admin_modify', $user))  {
            return view('users.edit', ['user' => $user]);
      } else {
            // 验证不通过的处理
      }  
  }
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!