AddController.class.php
3.64 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
<?php
/**
* 新增管理员
* 鲜彤 2016-07-29 15:42:10
*/
namespace Apicp\Controller\AdminManager;
use Com\PackageValidate;
use VcySDK\Adminer;
class AddController extends AbstractController
{
/**
* 用户可能的状态值
*
* @type array 管理员状态, 1: 启用; 2: 禁用
*/
private $userStatuses = array(Adminer::MANAGER_ABLE_LOGIN, Adminer::MANAGER_DISABLE_LOGIN);
/*
* 提交的数据
*/
private $postData = [];
public function Index()
{
$this->getParams();
// 提交UC
$res = $this->_sdkAdminer->register($this->postData);
if (empty($res['eaId'])) {
E("_ERR_ADD_ADMIN");
return false;
}
// 发送邀请 邮件和短信
$this->inviteMsgSend($res['eaId']);
// 菜单权限清空缓存文件
$options['temp'] = get_sitedir();
S('authAction_' . $res['eaId'], null, $options);
$this->_result = $res;
return true;
}
/**
* 获取和验证数据
*/
protected function getParams()
{
// 初始化验证器
$validate = new PackageValidate([
'eaMobile' => ['require', 'regex' => PackageValidate::PHONE_REGEX],
'eaRealname' => 'require|length:2,20',
'eaEmail' => 'require|email',
'earId' => 'require',
'eaUserstatus' => 'in:' . implode(',', $this->userStatuses),
'eaLevel' => 'require|in:' . implode(',', [Adminer::ADMIN_LEVEL_SUPER, Adminer::ADMIN_LEVEL_BRANCH]),
], [
'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' => '邮箱']),
'earId' => L('_ERR_PLS_SUBMIT_ID', ['name' => 'ID']),
'eaLevel.require' => L('_ERR_PLS_SUBMIT_ID', ['name' => '管理级别']),
'eaLevel.in' => '_ERR_ADMIN_MANAGER_EALEVEL_INVALID',
]);
// 获取提交数据
$validate->getParams([
'eaMobile',
'eaRealname',
'eaUserstatus',
'eaEmail',
'earId',
'memUid',
'adminerBusinessAuthor',
'eaLevel',
]);
// 当memUid不为空时: authorType必填, 当authorType为2时: dpIds必填
$validateData = $validate->postData;
if (!empty($validateData['memUid'])) {
$validateData['authorType'] = $validateData['adminerBusinessAuthor']['authorType'];
$validateData['dpIds'] = $validateData['adminerBusinessAuthor']['dpIds'];
$validate->rule['authorType'] = 'requireWithNone:memUid|in:1,2';
$validate->rule['dpIds'] = 'requeireIf:authorType,2';
$validate->message['authorType'] = L('_ERR_FIELD_REQUIRE_WITH_FIELF', ['name' => '通讯录人员', 'condition' => '不为空', 'requireName' => '业务权限类型']);
$validate->message['dpIds'] = L('_ERR_FIELD_REQUIRE_WITH_FIELF', ['name' => '业务权限类型', 'condition' => '为指定部门', 'requireName' => '指定部门ID']);
}
// 验证 并获取提交数据
if (!$validate->check($validateData)) {
E($validate->getError());
}
// 校验当前管理员是否有权限设置管理级别、角色组
$checkRes = $this->checkAdminRole($validateData['eaLevel'], $validateData['earId']);
if (!$checkRes) {
E('_ERR_ADMIN_EALEVEL_ADMINROLE');
}
$this->postData = $validate->postData;
}
}