更新用户功能
This commit is contained in:
@@ -9,7 +9,11 @@
|
||||
|
||||
namespace app\controller\admin;
|
||||
|
||||
use think\facade\Cache;
|
||||
use app\model\Member;
|
||||
use app\model\AuthGroup;
|
||||
use app\model\AuthGroupAccess;
|
||||
|
||||
/**
|
||||
* @title 用户管理
|
||||
*/
|
||||
@@ -34,15 +38,18 @@ class User extends Base {
|
||||
*/
|
||||
public function add(Member $member) {
|
||||
if ($this->request->isPost()) {
|
||||
$data = $this->request->param();
|
||||
//创建注册用户
|
||||
$result = $member->register($data['username'], $data['password'], $data['repassword'], $data['email'], false);
|
||||
$result = $member->register($this->request);
|
||||
if ($result) {
|
||||
return $this->success('用户添加成功!', url('admin/user/index'));
|
||||
return $this->success('用户添加成功!', url('/admin/user/index'));
|
||||
} else {
|
||||
return $this->error($model->getError());
|
||||
}
|
||||
} else {
|
||||
$this->data = array(
|
||||
'info' => [],
|
||||
'keyList' => $member->addfield,
|
||||
);
|
||||
return $this->fetch('admin/public/edit');
|
||||
}
|
||||
}
|
||||
@@ -51,26 +58,23 @@ class User extends Base {
|
||||
* @title 修改用户
|
||||
* @author huajie <banhuajie@163.com>
|
||||
*/
|
||||
public function edit() {
|
||||
$model = model('Member');
|
||||
public function edit(Member $member) {
|
||||
if ($this->request->isPost()) {
|
||||
$data = $this->request->post();
|
||||
|
||||
$reuslt = $model->editUser($data, true);
|
||||
$reuslt = $member->editUser($this->request);
|
||||
|
||||
if (false !== $reuslt) {
|
||||
return $this->success('修改成功!', url('admin/user/index'));
|
||||
return $this->success('修改成功!', url('/admin/user/index'));
|
||||
} else {
|
||||
return $this->error($model->getError(), '');
|
||||
return $this->error('修改失败');
|
||||
}
|
||||
} else {
|
||||
$info = $this->getUserinfo();
|
||||
|
||||
$this->data = array(
|
||||
'info' => $info,
|
||||
'keyList' => $model->editfield,
|
||||
'keyList' => $member->editfield,
|
||||
);
|
||||
return $this->fetch('public/edit');
|
||||
return $this->fetch('admin/public/edit');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,27 +95,28 @@ class User extends Base {
|
||||
* @author colin <colin@tensent.cn>
|
||||
*/
|
||||
public function auth() {
|
||||
$access = model('AuthGroupAccess');
|
||||
$group = model('AuthGroup');
|
||||
$uid = $this->request->param('id', 0, 'trim,intval');
|
||||
if ($this->request->isPost()) {
|
||||
$uid = input('uid', '', 'trim,intval');
|
||||
$access->where(array('uid' => $uid))->delete();
|
||||
$group_type = config('user_group_type');
|
||||
foreach ($group_type as $key => $value) {
|
||||
$group_id = input($key, '', 'trim,intval');
|
||||
if ($group_id) {
|
||||
$add = array(
|
||||
'uid' => $uid,
|
||||
'group_id' => $group_id,
|
||||
);
|
||||
$access->save($add);
|
||||
$data = $this->request->post();
|
||||
$config = Cache::get('system_config_data');
|
||||
$group_type = isset($config['user_group_type']) ? $config['user_group_type'] : [];
|
||||
$add = [];
|
||||
foreach ($group_type as $value) {
|
||||
if (isset($data[$value['key']]) && $data[$value['key']]) {
|
||||
$add[] = ['uid' => $uid, 'group_id' => $data[$value['key']]];
|
||||
}
|
||||
}
|
||||
return $this->success("设置成功!");
|
||||
AuthGroupAccess::where('uid', $uid)->delete();
|
||||
$result = (new AuthGroupAccess())->saveAll($add);
|
||||
if (false !== $result) {
|
||||
return $this->success("设置成功!");
|
||||
}else{
|
||||
return $this->error('设置失败!');
|
||||
}
|
||||
|
||||
} else {
|
||||
$uid = input('id', '', 'trim,intval');
|
||||
$row = $group::select();
|
||||
$auth = $access::where(array('uid' => $uid))->select();
|
||||
$row = AuthGroup::select();
|
||||
$auth = AuthGroupAccess::where(array('uid' => $uid))->select();
|
||||
|
||||
$auth_list = array();
|
||||
foreach ($auth as $key => $value) {
|
||||
@@ -120,13 +125,11 @@ class User extends Base {
|
||||
foreach ($row as $key => $value) {
|
||||
$list[$value['module']][] = $value;
|
||||
}
|
||||
$data = array(
|
||||
$this->data = array(
|
||||
'uid' => $uid,
|
||||
'auth_list' => $auth_list,
|
||||
'list' => $list,
|
||||
);
|
||||
$this->assign($data);
|
||||
$this->setMeta("用户分组");
|
||||
return $this->fetch();
|
||||
}
|
||||
}
|
||||
@@ -139,7 +142,6 @@ class User extends Base {
|
||||
* @author colin <colin@tensent.cn>
|
||||
*/
|
||||
private function getUserinfo($uid = null, $pass = null, $errormsg = null) {
|
||||
$user = model('Member');
|
||||
$uid = $uid ? $uid : input('id');
|
||||
//如果无UID则修改当前用户
|
||||
$uid = $uid ? $uid : session('user_auth.uid');
|
||||
@@ -148,7 +150,7 @@ class User extends Base {
|
||||
unset($map);
|
||||
$map['password'] = $pass;
|
||||
}
|
||||
$list = $user::where($map)->field('uid,username,nickname,sex,email,qq,score,signature,status,salt')->find();
|
||||
$list = Member::where($map)->field('uid,username,nickname,sex,email,qq,score,signature,status,salt')->find();
|
||||
if (!$list) {
|
||||
return $this->error($errormsg ? $errormsg : '不存在此用户!');
|
||||
}
|
||||
@@ -203,14 +205,15 @@ class User extends Base {
|
||||
*/
|
||||
public function editpwd() {
|
||||
if ($this->request->isPost()) {
|
||||
$user = model('Member');
|
||||
$data = $this->request->post();
|
||||
$data['salt'] = \xin\helper\Str::random(6);
|
||||
|
||||
$res = $user->editpw($data);
|
||||
if ($res) {
|
||||
return $this->success('修改密码成功!');
|
||||
$reuslt = Member::update($data, ['uid' => $data['uid']]);
|
||||
|
||||
if (false !== $reuslt) {
|
||||
return $this->success('修改成功!', url('/admin/user/index'));
|
||||
} else {
|
||||
return $this->error($user->getError());
|
||||
return $this->error('修改失败');
|
||||
}
|
||||
} else {
|
||||
return $this->fetch();
|
||||
|
||||
1
app/http/form/template/password.html
Normal file
1
app/http/form/template/password.html
Normal file
@@ -0,0 +1 @@
|
||||
<input type="text" class="form-control" name="{$name}" id="{$name}" autocomplete="false" value="">
|
||||
1
app/http/form/template/readonly.html
Normal file
1
app/http/form/template/readonly.html
Normal file
@@ -0,0 +1 @@
|
||||
<input type="text" class="form-control" name="{$name}" id="{$name}" autocomplete="false" value="{$value}" readonly>
|
||||
57
app/http/validate/User.php
Normal file
57
app/http/validate/User.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\http\validate;
|
||||
|
||||
use think\Validate;
|
||||
use app\model\Member;
|
||||
|
||||
/**
|
||||
* 菜单验证
|
||||
*/
|
||||
class User extends Validate{
|
||||
protected $rule = [
|
||||
'uid' => 'require',
|
||||
'oldpassword' => 'require|checkOldpaswd',
|
||||
'username' => 'require|unique:member|alphaDash',
|
||||
'email' => 'email|unique:member',
|
||||
'password' => 'require|min:8',
|
||||
'repassword' =>'require|confirm:password'
|
||||
];
|
||||
|
||||
protected $message = [
|
||||
'uid.require' => '用户UID必须',
|
||||
'oldpassword.require' => '旧密码必须',
|
||||
'oldpassword.checkOldpaswd' => '旧密码错误',
|
||||
'username.require' => '用户名称必须',
|
||||
'username.unique' => '该用户名已存在',
|
||||
'username.alphaDash' => '用户名只能使用字母、数字、_、-',
|
||||
'password.min' => '密码不能小于8位',
|
||||
'repassword.require' => '确认密码不能为空',
|
||||
'repassword.confirm' => '确认密码和密码必须相同',
|
||||
'email.email' => '邮箱格式错误',
|
||||
'email.unique' => '邮箱已存在',
|
||||
];
|
||||
|
||||
protected $scene = [
|
||||
'adminadd' => ['username', 'email', 'password', 'repassword'],
|
||||
'adminedit' => ['username', 'email'],
|
||||
'admineditpwd' => ['uid', 'password', 'repassword', 'oldpassword']
|
||||
];
|
||||
|
||||
protected function checkOldpaswd($value, $rule, $data){
|
||||
if(!$data['uid']){
|
||||
return false;
|
||||
}
|
||||
$user = Member::find($data['uid']);
|
||||
if (md5($value . $user['salt']) === $user['password']) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,48 @@ class Member extends Model {
|
||||
protected $createTime = 'reg_time';
|
||||
protected $updateTime = 'last_login_time';
|
||||
|
||||
protected $insert = ['reg_ip'];
|
||||
protected $insert = ['reg_ip', 'status' => 1];
|
||||
|
||||
public $editfield = [
|
||||
['name'=>'uid','type'=>'hidden'],
|
||||
['name'=>'username','title'=>'用户名','type'=>'readonly','help'=>''],
|
||||
['name'=>'nickname','title'=>'昵称','type'=>'text','help'=>''],
|
||||
['name'=>'password','title'=>'密码','type'=>'password','help'=>'为空时则不修改'],
|
||||
['name'=>'sex','title'=>'性别','type'=>'select','option'=> [['key' => '0', 'label'=>'保密'],['key' => '1', 'label' =>'男'],['key' => '2', 'label'=>'女']],'help'=>''],
|
||||
['name'=>'email','title'=>'邮箱','type'=>'text','help'=>'用户邮箱,用于找回密码等安全操作'],
|
||||
['name'=>'qq','title'=>'QQ','type'=>'text','help'=>''],
|
||||
['name'=>'score','title'=>'用户积分','type'=>'text','help'=>''],
|
||||
['name'=>'signature','title'=>'用户签名','type'=>'textarea','help'=>''],
|
||||
['name'=>'status','title'=>'状态','type'=>'select','option'=>[['key' => '0', 'label'=>'禁用'],['key' => '1', 'label'=>'启用']],'help'=>''],
|
||||
];
|
||||
|
||||
public $addfield = [
|
||||
['name'=>'username','title'=>'用户名','type'=>'text','help'=>'用户名会作为默认的昵称'],
|
||||
['name'=>'nickname','title'=>'昵称','type'=>'text','help'=>''],
|
||||
['name'=>'password','title'=>'密码','type'=>'password','help'=>'用户密码不能少于6位'],
|
||||
['name'=>'repassword','title'=>'确认密码','type'=>'password','help'=>'确认密码'],
|
||||
['name'=>'email','title'=>'邮箱','type'=>'text','help'=>'用户邮箱,用于找回密码等安全操作'],
|
||||
];
|
||||
|
||||
public $useredit = [
|
||||
['name'=>'uid','type'=>'hidden'],
|
||||
['name'=>'nickname','title'=>'昵称','type'=>'text','help'=>''],
|
||||
['name'=>'sex','title'=>'性别','type'=>'select','option'=>[['key' => '0', 'label'=>'保密'],['key' => '1', 'label' =>'男'],['key' => '2', 'label'=>'女']],'help'=>''],
|
||||
['name'=>'email','title'=>'邮箱','type'=>'text','help'=>'用户邮箱,用于找回密码等安全操作'],
|
||||
['name'=>'mobile','title'=>'联系电话','type'=>'text','help'=>''],
|
||||
['name'=>'qq','title'=>'QQ','type'=>'text','help'=>''],
|
||||
['name'=>'signature','title'=>'用户签名','type'=>'textarea','help'=>''],
|
||||
];
|
||||
|
||||
public $userextend = [
|
||||
['name'=>'company','title'=>'单位名称','type'=>'text','help'=>''],
|
||||
['name'=>'company_addr','title'=>'单位地址','type'=>'text','help'=>''],
|
||||
['name'=>'company_contact','title'=>'单位联系人','type'=>'text','help'=>''],
|
||||
['name'=>'company_zip','title'=>'单位邮编','type'=>'text','help'=>''],
|
||||
['name'=>'company_depart','title'=>'所属部门','type'=>'text','help'=>''],
|
||||
['name'=>'company_post','title'=>'所属职务','type'=>'text','help'=>''],
|
||||
['name'=>'company_type','title'=>'单位类型','type'=>'select', 'option'=>'', 'help'=>''],
|
||||
];
|
||||
|
||||
protected $status = [
|
||||
1 => '正常',
|
||||
@@ -56,20 +97,20 @@ class Member extends Model {
|
||||
$username = $request->param('username', '');
|
||||
$password = $request->param('password', '');
|
||||
$type = $request->param('type', 1);
|
||||
$map = array();
|
||||
$map = [];
|
||||
switch ($type) {
|
||||
case 1:
|
||||
$map['username'] = $username;
|
||||
break;
|
||||
case 2:
|
||||
$map['email'] = $username;
|
||||
break;
|
||||
case 3:
|
||||
$map['mobile'] = $username;
|
||||
break;
|
||||
default:
|
||||
throw new \think\Exception('参数错误', 10006);
|
||||
return false; //参数错误
|
||||
case 1:
|
||||
$map['username'] = $username;
|
||||
break;
|
||||
case 2:
|
||||
$map['email'] = $username;
|
||||
break;
|
||||
case 3:
|
||||
$map['mobile'] = $username;
|
||||
break;
|
||||
default:
|
||||
throw new \think\Exception('参数错误', 10006);
|
||||
return false; //参数错误
|
||||
}
|
||||
if (!$username) {
|
||||
throw new \think\Exception('用户名不能为空', 10006);
|
||||
@@ -99,11 +140,12 @@ class Member extends Model {
|
||||
public function register($request) {
|
||||
$data = [];
|
||||
$data['username'] = $request->param('username', '');
|
||||
$data['nickname'] = $request->param('nickname', '');
|
||||
$data['password'] = $request->param('password', '');
|
||||
$data['repassword'] = $request->param('repassword', '');
|
||||
$data['email'] = $request->param('email', '');
|
||||
$data['mobile'] = $request->param('mobile', '');
|
||||
$data['salt'] = rand_string(6);
|
||||
$data['salt'] = \xin\helper\Str::random(6);
|
||||
|
||||
$result = self::create($data);
|
||||
if (false !== $result) {
|
||||
@@ -114,14 +156,14 @@ class Member extends Model {
|
||||
}
|
||||
/* 更新登录信息 */
|
||||
$this->record($user);
|
||||
return $user->append(array('access_token', 'avatar'))->visible($this->loginVisible)->toArray(); //登录成功,返回用户信息
|
||||
return $user->append(['access_token', 'avatar'])->visible($this->loginVisible)->toArray(); //登录成功,返回用户信息
|
||||
}
|
||||
|
||||
/**
|
||||
* @title: 获取用户列表
|
||||
*/
|
||||
public function getUserList($request) {
|
||||
$map = array();
|
||||
$map = [];
|
||||
$param = $request->param();
|
||||
|
||||
$order = "status desc, uid desc";
|
||||
@@ -166,6 +208,20 @@ class Member extends Model {
|
||||
return $info->append(['avatar', 'status_text'])->toArray();
|
||||
}
|
||||
|
||||
public function editUser($request){
|
||||
$data = $request->post();
|
||||
|
||||
if (!$data['uid']) {
|
||||
return false;
|
||||
}
|
||||
if ($data['password'] !== '') {
|
||||
$data['salt'] = \xin\helper\Str::random(6);
|
||||
return self::update($data, ['uid' => $data]);
|
||||
}else{
|
||||
return $this->where('uid', $data['uid'])->save($data);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户登录信息更新
|
||||
* @param [type] $user [description]
|
||||
@@ -179,7 +235,7 @@ class Member extends Model {
|
||||
'last_login_time' => time(),
|
||||
'last_login_ip' => get_client_ip(1),
|
||||
);
|
||||
self::where(array('uid' => $user['uid']))->update($data);
|
||||
self::where(['uid' => $user['uid']])->update($data);
|
||||
}
|
||||
|
||||
public function depart() {
|
||||
|
||||
@@ -9,15 +9,15 @@
|
||||
<h2>{$meta_title}</h2>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<a href="{:url('Group/add',array('type'=>$type))}" class="btn btn-danger"><i class="fa fa-plus"></i> 添加用户组</a>
|
||||
<a href="{:url('/admin/group/add',array('type'=>$type))}" class="btn btn-danger"><i class="fa fa-plus"></i> 添加用户组</a>
|
||||
</div>
|
||||
</header>
|
||||
<div class="main-box-body clearfix">
|
||||
<div class="tabs-wrapper">
|
||||
<ul class="nav nav-tabs">
|
||||
{volist name=":config('USER_GROUP_TYPE')" id="item"}
|
||||
<li {if condition="$key eq $type"}class="active"{/if}>
|
||||
<a href="{:url('Group/index',array('type'=>$key))}">{$item}</a>
|
||||
{volist name="config['user_group_type']" id="item"}
|
||||
<li {if $item['key'] == $type}class="active"{/if}>
|
||||
<a href="{:url('/admin/group/index',array('type'=>$item['key']))}">{$item['label']}</a>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
@@ -43,7 +43,7 @@
|
||||
<tr>
|
||||
<td><input class="ids row-selected" type="checkbox" name="ids[]" value="{$item['id']}"></td>
|
||||
<td>{$item['id']}</td>
|
||||
<td><a href="#" class="editable editable-click" data-id="{$item['id']}" data-name="title" data-type="text" data-pk="{$item['id']}" data-url="{:url('editable')}">{$item['title']}</a></td>
|
||||
<td><a href="#" class="editable editable-click" data-id="{$item['id']}" data-name="title" data-type="text" data-pk="{$item['id']}" data-url="{:url('/admin/group/editable')}">{$item['title']}</a></td>
|
||||
<td>{$item['description']}</td>
|
||||
<td>
|
||||
{if condition="$item['status'] eq '0'"}
|
||||
@@ -53,9 +53,9 @@
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
<a href="{:url('Group/edit',array('id'=>$item['id']))}">编辑</a>
|
||||
<a href="{:url('Group/auth',array('id'=>$item['id']))}">授权</a>
|
||||
<a href="{:url('Group/del',array('id'=>$item['id']))}" class="confirm ajax-get">删除</a>
|
||||
<a href="{:url('/admin/group/edit',array('id'=>$item['id']))}">编辑</a>
|
||||
<a href="{:url('/admin/group/auth',array('id'=>$item['id']))}">授权</a>
|
||||
<a href="{:url('/admin/group/del',array('id'=>$item['id']))}" class="confirm ajax-get">删除</a>
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
{/if}
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<input type="hidden" name="id" value="{$info['id']|default=''}">
|
||||
{if isset($info['id'])}<input type="hidden" name="id" value="{$info['id']|default=''}">{/if}
|
||||
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
|
||||
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
|
||||
</div>
|
||||
|
||||
@@ -19,16 +19,18 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{volist name="list" id="group"}
|
||||
{volist name="config['user_group_type']" id="group"}
|
||||
<tr>
|
||||
<td class="info col-lg-2 text-right">{:config('USER_GROUP_TYPE')[$key]}</td>
|
||||
<td class="info col-lg-2 text-right">{$group['label']}</td>
|
||||
<td class="col-lg-10 text-left">
|
||||
{volist name="group" id="item"}
|
||||
{if isset($list[$group['key']])}
|
||||
{volist name="list[$group['key']]" id="item"}
|
||||
<div class="radio radio-nice radio-inline">
|
||||
<input type="radio" name="{$item['module']}" value="{$item['id']}" id="{$item['module']}-{$item['id']}" {if condition="in_array($item['id'],$auth_list)"}checked{/if} />
|
||||
<label for="{$item['module']}-{$item['id']}">{$item['title']}</label>
|
||||
</div>
|
||||
{/volist}
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<input type="hidden" name="uid" value="{:session('userInfo.uid')}">
|
||||
<button type="submit" class="btn btn-primary submit-btn ajax-post" target-form="form-horizontal">确 认</button>
|
||||
<button class="btn btn-default btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
|
||||
</div>
|
||||
|
||||
@@ -70,9 +70,9 @@
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
<a href="{:url('User/edit',array('id'=>$item['uid']))}" class="table-link" title="">编辑</a>
|
||||
<a href="{:url('User/auth',array('id'=>$item['uid']))}" class="table-link">授权</a>
|
||||
<a href="{:url('User/del',array('id'=>$item['uid']))}" class="table-link confirm ajax-get">删除</a>
|
||||
<a href="{:url('/admin/user/edit', ['id'=>$item['uid']])}" class="table-link" title="">编辑</a>
|
||||
<a href="{:url('/admin/user/auth', ['id'=>$item['uid']])}" class="table-link">授权</a>
|
||||
<a href="{:url('/admin/user/del', ['id'=>$item['uid']])}" class="table-link confirm ajax-get">删除</a>
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
|
||||
Reference in New Issue
Block a user