| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- <?php
- namespace app\admin\controller\auth;
- use app\common\controller\AdminController;
- use app\http\IResponse;
- class User extends AdminController
- {
- /**
- * 登录个人信息
- *
- * @author 许祖兴 < zuxing.xu@lettered.cn>
- * @date 2020/3/16 14:39
- *
- * @return \think\response\Json
- * @throws \Lettered\Support\Exceptions\FailedException
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function person()
- {
- // 接受参数
- $params = $this->request->param();
- // 获取用户信息
- $user = $this->auth->user();
- // 修改密码
- if ($this->request->isPut() && isset($params['password']) && $params['password'] != ''){
- // 检查原始密码
- if (!password_verify($params['password'], $user->password)){
- return $this->ApiJson(-1,"原始密码不正确");
- }
- // 查改
- $user = model('Users')->findBy($user->id);
- // 更新
- $user->allowField(true)->updateBy($user->id, ['password' => $params['npassword']]);
- return $this->JsonSuccess([],"密码修改成,请重新登录!");
- }
- // 非超级管理员
- if ($user->id != 1){
- // 获取用户角色
- $roles = [];
- // 角色的规则
- $permissions_r = [];
- foreach ( $this->enforcer::GetRolesForUser('user_id_' . $user->id) as $role){
- $roles[] = model('Roles')->getBy(['name' => $role]);
- // 找啊找啊找朋友
- foreach ( $this->enforcer::GetPermissionsForUser($role) as $permissions_u){
- $permissions_r[] = model('Permissions')->field('sort,status,created_at,updated_at,deleted_at',true)
- ->where(['url' => $permissions_u[1],'policy' => $permissions_u[2]])->find();
- }
- }
- // 角色菜单权限
- $permission_idx = model('PermissionsRole')->where(['role_id' => $roles[0]['id']])->value('permission_idx');
- $permissions_m = [];
- foreach (str2arr($permission_idx) as $idx){
- $permissions_m[] = model('Permissions')->field('sort,status,created_at,updated_at,deleted_at',true)
- ->find($idx);
- }
- $permissions = array_merge($permissions_r, $permissions_m);
- }else{ // 超级用户
- $permissions = model('Permissions')
- ->field('sort,status,created_at,updated_at,deleted_at',true)
- ->select()->toArray();
- $roles = ['super'];
- }
- // 服务端处理树形
- //$user->permissions = arr2tree($permissions,'id','parent_id','subMenus');
- // 直接返回客户端处理树形
- $user->permissions = $permissions;
- // 用户角色
- $user->roles = $roles;
- return IResponse::success($user);
- }
- /**
- * 获取用户的角色
- *
- * @author 许祖兴 < zuxing.xu@lettered.cn>
- * @date 2020/3/16 14:44
- *
- * @param $id
- * @return \think\response\Json
- */
- public function roles($id)
- {
- // 获取用户信息
- $user = model('Users')->getBy($id);
- if ($user) {
- $roles = [];
- foreach ( $this->enforcer::GetRolesForUser('user_id_' . $user->id) as $role){
- $roles[] = model('Roles')->getBy(['name' => $role]);
- }
- return IResponse::success($roles);
- }
- return IResponse::failure('用户不存在!');
- }
- /**
- * 用户列表
- *
- * @author 许祖兴 < zuxing.xu@lettered.cn>
- * @date 2020/3/16 14:39
- *
- * @return \think\response\Json
- * @throws \think\exception\DbException
- */
- public function index()
- {
- $where = [];
- //组合搜索
- !empty(input('keyword')) && $where[]
- = ['email|username', 'like', '%' . input('keyword') . '%'];
- $users = model('Users');
- if (input('status') == 'trashed'){
- // ->withTrashed() 包括软删除的数据;
- // ->onlyTrashed() 只查询删除
- $users = $users->onlyTrashed();
- }else {
- $users = $users->withTrashed();
- (!empty(input('status')) || input('status') == '0' ) &&
- $where[] = ['status', 'eq', input('status')];
- }
- return IResponse::paginate($users->where($where)
- ->paginate(input('limit'),false));
- }
- /**
- * 新增角色
- *
- * @author 许祖兴 < zuxing.xu@lettered.cn>
- * @date 2020/3/16 14:24
- *
- */
- public function save()
- {
- // 接收数据
- $params = $this->request->param();
- // 数据校验
- $valid = $this->validate($params,[
- 'email|账号' => 'require|email|unique:Users',
- 'username|用户名' => 'require|alpha|unique:Users',
- 'password|密码' => 'require'
- ],[
- 'email.unique' => '账号已存在!',
- 'name.alpha' => '用户名名称仅支持英文!',
- 'name.unique' => '用户名名称已存在!'
- ]);
- (true !== $valid) && IResponse::failure($valid);
- // 保存数据
- $userId = model('Users')->storeBy($params);
- // 获取角色信息
- $role = model('Roles')->getBy($params['roles']);
- // 写入用户权限
- $this->enforcer::AddRoleForUser('user_id_' . $userId,$role->name);
- return $userId ? IResponse::success([],'新增用户成功'):
- IResponse::failure('新增用户异常');
- }
- /**
- * 更新数据
- *
- * @author 许祖兴 < zuxing.xu@lettered.cn>
- * @date 2020/3/16 14:24
- *
- * @param $id
- * @return \think\response\Json
- */
- public function update($id)
- {
- // 接收数据
- $params = $this->request->param();
- // 查询用户
- $user = model('Users')->findBy($id);
- // 是否更改状态操作
- if (isset($params['status']) && $params['status'] != '') {
- $valid = $this->validate($params, [
- 'status|配置状态' => 'require|integer'
- ]);
- if ($params['id'] == $user->id && $params['status'] == 0)
- return IResponse::failure("连自己够搞,不太好吧");
- }else {
- // 数据校验
- $valid = $this->validate($params, [
- 'email|账号' => 'require|email',
- 'username|用户名' => 'require|alpha'
- ], [
- 'name.alpha' => '用户名称仅支持英文!',
- ]);
- }
- // 错误返回
- (true !== $valid) && IResponse::failure($valid);
- // 是否更改状态操作
- if (!isset($params['status'])) {
- // 密码处理
- if (isset($params['password']) && $params['password'] == '') {
- // 密码空则不变动
- unset($params['password']);
- }
- // 原先的角色
- $user_role = $this->enforcer::GetRolesForUser('user_id_' . $user->id);
- // 获取角色信息
- $role = model('Roles')->getBy($params['roles']);
- // 没有原先直接新增
- if (!empty($user_role)) {
- // 是否变更操作
- if ($user_role[0] != $role->name) {
- // 删除原先
- $this->enforcer::DeleteRoleForUser('user_id_' . $user->id, $user_role[0]);
- }
- }
- // 写入变更用户角色
- $this->enforcer::AddRoleForUser('user_id_' . $user->id, $role->name);
- }
- // 更新用户信息
- $user->updateBy($id, $params);
- return IResponse::success('更新用户信息成功');
- }
- /**
- * 删除角色
- *
- * @author 许祖兴 < zuxing.xu@lettered.cn>
- * @date 2020/3/16 14:22
- *
- * @param $id
- * @return \think\response\Json
- */
- public function delete($id)
- {
- model('Users')->deleteBy($id);
- return IResponse::success([],'删除用户成功');
- }
- /**
- * 用户批量操作
- *
- * @author 许祖兴 < zuxing.xu@lettered.cn>
- * @date 2020/3/23 11:38
- *
- * @return mixed
- */
- public function plectron(){
- // 收参数
- $params = $this->request->param();
- foreach (str2arr($params['ids']) as $id){
- $user = model('Users')->getBy($id);
- if ($this->request->isDelete()){
- $user->deleteBy($id);
- return IResponse::success([],'删除用户成功');
- }
- $user->allowField(true)->updateBy($id, $params);
- }
- return IResponse::success([],'操作成功');
- }
- /**
- * 恢复删除用户
- *
- * @author 许祖兴 < zuxing.xu@lettered.cn>
- * @date 2020/3/23 13:05
- *
- * @param $id
- * @return mixed
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function restore($id)
- {
- // 查询数据
- $user = model('Users')->onlyTrashed()->find($id);
- if (!$user){
- return IResponse::failure('用户不存在!');
- }
- // 恢复
- return $user->restore() ? IResponse::success('恢复用户成功!')
- : IResponse::failure('恢复用户失败!');
- }
- }
|