|
|
|
<?php
|
|
|
|
/*
|
|
|
|
* @Author: witersen
|
|
|
|
* @Date: 2022-04-24 23:37:05
|
|
|
|
* @LastEditors: witersen
|
|
|
|
* @LastEditTime: 2022-04-26 16:57:57
|
|
|
|
* @Description: QQ:1801168257
|
|
|
|
*/
|
|
|
|
|
|
|
|
class svnuser extends controller
|
|
|
|
{
|
|
|
|
function __construct()
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
* 避免子类的构造函数覆盖父类的构造函数
|
|
|
|
*/
|
|
|
|
parent::__construct();
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 其它自定义操作
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 将SVN用户数据同步到数据库
|
|
|
|
*
|
|
|
|
* 目的为维护用户启用状态和自定义备注信息
|
|
|
|
*/
|
|
|
|
function SyncUserToDb()
|
|
|
|
{
|
|
|
|
$svnUserPassList = FunGetSvnUserPassList($this->globalPasswdContent);
|
|
|
|
if ($svnUserPassList == 0) {
|
|
|
|
FunMessageExit(200, 0, '文件格式错误(不存在[users]标识)');
|
|
|
|
}
|
|
|
|
$dbUserPassList = $this->database->select('svn_users', [
|
|
|
|
'svn_user_id',
|
|
|
|
'svn_user_name',
|
|
|
|
'svn_user_pass',
|
|
|
|
'svn_user_status',
|
|
|
|
'svn_user_note'
|
|
|
|
]);
|
|
|
|
|
|
|
|
$combinArray1 = array_combine(FunArrayColumn($svnUserPassList, 'userName'), FunArrayColumn($svnUserPassList, 'disabled'));
|
|
|
|
$combinArray2 = array_combine(FunArrayColumn($svnUserPassList, 'userName'), FunArrayColumn($svnUserPassList, 'userPass'));
|
|
|
|
foreach ($dbUserPassList as $value) {
|
|
|
|
if (!in_array($value['svn_user_name'], FunArrayColumn($svnUserPassList, 'userName'))) {
|
|
|
|
$this->database->delete('svn_users', [
|
|
|
|
'svn_user_name' => $value['svn_user_name']
|
|
|
|
]);
|
|
|
|
} else {
|
|
|
|
//更新启用状态和密码
|
|
|
|
$this->database->update('svn_users', [
|
|
|
|
'svn_user_pass' => $combinArray2[$value['svn_user_name']],
|
|
|
|
'svn_user_status' => !$combinArray1[$value['svn_user_name']]
|
|
|
|
], [
|
|
|
|
'svn_user_name' => $value['svn_user_name']
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($svnUserPassList as $value) {
|
|
|
|
if (!in_array($value['userName'], FunArrayColumn($dbUserPassList, 'svn_user_name'))) {
|
|
|
|
$this->database->insert('svn_users', [
|
|
|
|
'svn_user_name' => $value['userName'],
|
|
|
|
'svn_user_pass' => $value['userPass'],
|
|
|
|
'svn_user_status' => !$value['disabled'],
|
|
|
|
'svn_user_note' => ''
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取全部的SVN用户
|
|
|
|
*
|
|
|
|
* 只包含用户名和启用状态
|
|
|
|
*/
|
|
|
|
function GetAllUserList()
|
|
|
|
{
|
|
|
|
$svnUserList = FunGetSvnUserList($this->globalPasswdContent);
|
|
|
|
if ($svnUserList == '0') {
|
|
|
|
FunMessageExit(200, 0, '文件格式错误(不存在[users]标识)');
|
|
|
|
} else {
|
|
|
|
FunMessageExit(200, 1, '成功', $svnUserList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取带有分页的SVN用户
|
|
|
|
*
|
|
|
|
* 只包含用户名和启用状态
|
|
|
|
*/
|
|
|
|
function GetUserList()
|
|
|
|
{
|
|
|
|
//将SVN用户数据同步到数据库
|
|
|
|
$this->SyncUserToDb();
|
|
|
|
|
|
|
|
$pageSize = $this->requestPayload['pageSize'];
|
|
|
|
$currentPage = $this->requestPayload['currentPage'];
|
|
|
|
$searchKeyword = trim($this->requestPayload['searchKeyword']);
|
|
|
|
|
|
|
|
//分页
|
|
|
|
$begin = $pageSize * ($currentPage - 1);
|
|
|
|
|
|
|
|
$list = $this->database->select('svn_users', [
|
|
|
|
'svn_user_id',
|
|
|
|
'svn_user_name',
|
|
|
|
'svn_user_pass',
|
|
|
|
'svn_user_status',
|
|
|
|
'svn_user_note'
|
|
|
|
], [
|
|
|
|
'AND' => [
|
|
|
|
'OR' => [
|
|
|
|
'svn_user_name[~]' => $searchKeyword,
|
|
|
|
// 'svn_user_pass[~]' => $searchKeyword,
|
|
|
|
'svn_user_note[~]' => $searchKeyword,
|
|
|
|
],
|
|
|
|
],
|
|
|
|
'LIMIT' => [$begin, $pageSize],
|
|
|
|
'ORDER' => [
|
|
|
|
$this->requestPayload['sortName'] => strtoupper($this->requestPayload['sortType'])
|
|
|
|
]
|
|
|
|
]);
|
|
|
|
|
|
|
|
$total = $this->database->count('svn_users', [
|
|
|
|
'svn_user_id'
|
|
|
|
], [
|
|
|
|
'AND' => [
|
|
|
|
'OR' => [
|
|
|
|
'svn_user_name[~]' => $searchKeyword,
|
|
|
|
// 'svn_user_pass[~]' => $searchKeyword,
|
|
|
|
'svn_user_note[~]' => $searchKeyword,
|
|
|
|
],
|
|
|
|
],
|
|
|
|
]);
|
|
|
|
|
|
|
|
foreach ($list as $key => $value) {
|
|
|
|
$list[$key]['svn_user_status'] = $value['svn_user_status'] == '1' ? true : false;
|
|
|
|
}
|
|
|
|
|
|
|
|
FunMessageExit(200, 1, '成功', [
|
|
|
|
'data' => $list,
|
|
|
|
'total' => $total
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 启用SVN用户
|
|
|
|
*/
|
|
|
|
function EnableUser()
|
|
|
|
{
|
|
|
|
$result = FunEnabledUser($this->globalPasswdContent, $this->requestPayload['svn_user_name']);
|
|
|
|
if ($result == '0') {
|
|
|
|
FunMessageExit(200, 0, '文件格式错误(不存在[users]标识)');
|
|
|
|
}
|
|
|
|
if ($result == '1') {
|
|
|
|
FunMessageExit(200, 0, '要启用的用户不存在');
|
|
|
|
}
|
|
|
|
|
|
|
|
FunShellExec('echo \'' . $result . '\' > ' . SVN_PASSWD_FILE);
|
|
|
|
|
|
|
|
FunMessageExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 禁用SVN用户
|
|
|
|
*/
|
|
|
|
function DisableUser()
|
|
|
|
{
|
|
|
|
$result = FunDisabledUser($this->globalPasswdContent, $this->requestPayload['svn_user_name']);
|
|
|
|
if ($result == '0') {
|
|
|
|
FunMessageExit(200, 0, '文件格式错误(不存在[users]标识)');
|
|
|
|
}
|
|
|
|
if ($result == '1') {
|
|
|
|
FunMessageExit(200, 0, '要禁用的用户不存在');
|
|
|
|
}
|
|
|
|
|
|
|
|
FunShellExec('echo \'' . $result . '\' > ' . SVN_PASSWD_FILE);
|
|
|
|
|
|
|
|
FunMessageExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 修改SVN用户的备注信息
|
|
|
|
*/
|
|
|
|
function EditUserNote()
|
|
|
|
{
|
|
|
|
$this->database->update('svn_users', [
|
|
|
|
'svn_user_note' => $this->requestPayload['svn_user_note']
|
|
|
|
], [
|
|
|
|
'svn_user_name' => $this->requestPayload['svn_user_name']
|
|
|
|
]);
|
|
|
|
|
|
|
|
FunMessageExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 新建SVN用户
|
|
|
|
*/
|
|
|
|
function CreateUser()
|
|
|
|
{
|
|
|
|
//检查用户名是否合法
|
|
|
|
FunCheckRepUser($this->requestPayload['svn_user_name']);
|
|
|
|
|
|
|
|
//检查用户是否已存在
|
|
|
|
$result = FunAddSvnUser($this->globalPasswdContent, $this->requestPayload['svn_user_name'], $this->requestPayload['svn_user_pass']);
|
|
|
|
if ($result == '0') {
|
|
|
|
FunMessageExit(200, 0, '文件格式错误(不存在[users]标识)');
|
|
|
|
}
|
|
|
|
if ($result == '1') {
|
|
|
|
FunMessageExit(200, 0, '用户已存在');
|
|
|
|
}
|
|
|
|
|
|
|
|
//检查密码是否不为空
|
|
|
|
if (trim($this->requestPayload['svn_user_pass']) == '') {
|
|
|
|
FunMessageExit(200, 0, '密码不能为空');
|
|
|
|
}
|
|
|
|
|
|
|
|
//写入配置文件
|
|
|
|
FunShellExec('echo \'' . $result . '\' > ' . SVN_PASSWD_FILE);
|
|
|
|
|
|
|
|
//写入数据库
|
|
|
|
$this->database->insert('svn_users', [
|
|
|
|
'svn_user_name' => $this->requestPayload['svn_user_name'],
|
|
|
|
'svn_user_pass' => $this->requestPayload['svn_user_pass'],
|
|
|
|
'svn_user_status' => 1,
|
|
|
|
'svn_user_note' => ''
|
|
|
|
]);
|
|
|
|
|
|
|
|
FunMessageExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 修改SVN用户的密码
|
|
|
|
*/
|
|
|
|
function EditUserPass()
|
|
|
|
{
|
|
|
|
//检查用户是否已存在
|
|
|
|
$result = FunUpdSvnUserPass($this->globalPasswdContent, $this->requestPayload['svn_user_name'], $this->requestPayload['svn_user_pass'], !$this->requestPayload['svn_user_status']);
|
|
|
|
if ($result == '0') {
|
|
|
|
FunMessageExit(200, 0, '文件格式错误(不存在[users]标识)');
|
|
|
|
}
|
|
|
|
if ($result == '1') {
|
|
|
|
FunMessageExit(200, 0, '用户不存在 请刷新重试');
|
|
|
|
}
|
|
|
|
|
|
|
|
//检查密码是否不为空
|
|
|
|
if (trim($this->requestPayload['svn_user_pass']) == '') {
|
|
|
|
FunMessageExit(200, 0, '密码不能为空');
|
|
|
|
}
|
|
|
|
|
|
|
|
//写入配置文件
|
|
|
|
FunShellExec('echo \'' . $result . '\' > ' . SVN_PASSWD_FILE);
|
|
|
|
|
|
|
|
//写入数据库
|
|
|
|
$this->database->update('svn_users', [
|
|
|
|
'svn_user_pass' => $this->requestPayload['svn_user_pass'],
|
|
|
|
], [
|
|
|
|
'svn_user_name' => $this->requestPayload['svn_user_name']
|
|
|
|
]);
|
|
|
|
|
|
|
|
FunMessageExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 删除SVN用户
|
|
|
|
*/
|
|
|
|
function DelUser()
|
|
|
|
{
|
|
|
|
//从passwd文件中全局删除
|
|
|
|
$resultPasswd = FunDelSvnUserPasswd($this->globalPasswdContent, $this->requestPayload['svn_user_name'], !$this->requestPayload['svn_user_status']);
|
|
|
|
|
|
|
|
if ($resultPasswd == '0') {
|
|
|
|
FunMessageExit(200, 0, '文件格式错误(不存在[users]标识)');
|
|
|
|
}
|
|
|
|
if ($resultPasswd == '1') {
|
|
|
|
FunMessageExit(200, 0, '用户不存在');
|
|
|
|
}
|
|
|
|
|
|
|
|
//从authz文件中删除
|
|
|
|
$resultAuthz = FunDelUserAuthz($this->globalAuthzContent, $this->requestPayload['svn_user_name']);
|
|
|
|
|
|
|
|
if ($resultAuthz == '0') {
|
|
|
|
FunMessageExit(200, 0, '文件格式错误(不存在[users]标识)');
|
|
|
|
}
|
|
|
|
|
|
|
|
//从数据删除
|
|
|
|
$this->database->delete('svn_users', [
|
|
|
|
'svn_user_name' => $this->requestPayload['svn_user_name']
|
|
|
|
]);
|
|
|
|
|
|
|
|
FunShellExec('echo \'' . $resultAuthz . '\' > ' . SVN_AUTHZ_FILE);
|
|
|
|
|
|
|
|
FunShellExec('echo \'' . $resultPasswd . '\' > ' . SVN_PASSWD_FILE);
|
|
|
|
|
|
|
|
FunMessageExit();
|
|
|
|
}
|
|
|
|
}
|