EditController.class.php
4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
/**
* 编辑管理员信息
* 鲜彤 2016年08月01日10:25:42
*/
namespace Apicp\Controller\AdminManager;
use Com\Validate;
use VcySDK\Adminer;
class EditController extends AbstractController
{
/**
* 用户可能的状态值
*
* @type array 管理员状态, 1: 启用; 2: 禁用
*/
private $userStatuses = array(1, 2);
/** 提交的数据 */
protected $postData = [];
public function Index()
{
$this->getParams();
$eaData = $this->_sdkAdminer->fetch(['eaId' => $this->postData['eaId']]);
// 调用UC,编辑管理员提交
$this->_sdkAdminer->modify($this->postData);
// 邮箱有改变 并且 未激活
if ($eaData['eaIsactivated'] != Adminer::IS_ACTIVATED) {
$this->inviteMsgSend($this->postData['eaId']);
}
return true;
}
/**
* 获取提交数据
* @return bool
*/
protected function getParams()
{
$field = [
'eaId',
'eaMobile',
'eaRealname',
'eaPassword',
'eaUserstatus',
'eaEmail',
'earId',
'memUid',
'adminerBusinessAuthor',
'eaLevel',
];
foreach ($field as $_name) {
$this->postData[$_name] = I('post.' . $_name);
}
if (empty($this->postData['eaPassword'])) {
unset($this->postData['eaPassword']);
}
$this->validateParams();
return true;
}
/**
* 验证数据
* @return bool
*/
protected function validateParams()
{
$role = [
'eaId' => 'require',
'earId' => 'require',
'eaMobile' => ['require', 'regex' => '/(^0?1[2,3,5,6,7,8,9]\d{9}$)|(^(\d{3,4})-(\d{7,8})$)|(^(\d{7,8})$)|(^(\d{3,4})-(\d{7,8})-(\d{1,4})$)|(^(\d{7,8})-(\d{1,4})$)/'],
'eaRealname' => 'length:2,20',
'eaEmail' => 'email',
'eaUserstatus' => 'in:' . implode(',', $this->userStatuses),
'eaLevel' => 'require|in:' . implode(',', [Adminer::ADMIN_LEVEL_SUPER, Adminer::ADMIN_LEVEL_BRANCH]),
];
$errormsg = [
'eaId' => L('_ERR_PLS_SUBMIT_ID', ['name' => 'ID']),
'eaMobile' => '_ERR_PHONE_FORMAT',
'eaRealname' => '_ERR_REAL_NAME_FORMAT',
'eaUserstatus' => '_ERR_USER_STATUS_INVALID',
'eaEmail.require' => L('_ERR_PLS_SUBMIT_ID', ['name' => '邮箱']),
'eaEmail.email' => L('_ERR_DATA_FORMAT', ['name' => '邮箱']),
'eaLevel.require' => L('_ERR_PLS_SUBMIT_ID', ['name' => '管理级别']),
'eaLevel.in' => '_ERR_ADMIN_MANAGER_EALEVEL_INVALID',
'earId.require' => L('_ERR_PLS_SUBMIT_ID', ['name' => '管理级别']),
];
$validateData = $this->postData;
if (!empty($validateData['memUid'])) {
if (isset($validateData['adminerBusinessAuthor']['authorType'])) {
$validateData['authorType'] = $validateData['adminerBusinessAuthor']['authorType'];
}
if (isset($validateData['adminerBusinessAuthor']['dpIds'])) {
$validateData['dpIds'] = $validateData['adminerBusinessAuthor']['dpIds'];
}
$role['authorType'] = 'requireWithNone:memUid|in:1,2';
$role['dpIds'] = 'requeireIf:authorType,2';
$errormsg['authorType'] = L('_ERR_FIELD_REQUIRE_WITH_FIELF', ['name' => '通讯录人员', 'condition' => '不为空', 'requireName' => '业务权限类型']);
$errormsg['dpIds'] = L('_ERR_FIELD_REQUIRE_WITH_FIELF', ['name' => '业务权限类型', 'condition' => '为指定部门', 'requireName' => '指定部门ID']);
}
$validator = new Validate($role, $errormsg);
if (!$validator->check($validateData)) {
E($validator->getError());
}
// 校验当前管理员是否有权限设置管理级别、角色组
$checkRes = $this->checkAdminRole($validateData['eaLevel'], $validateData['earId']);
if (!$checkRes) {
E('_ERR_ADMIN_EALEVEL_ADMINROLE');
}
return true;
}
}