PMCORE-4147
This commit is contained in:
@@ -24,6 +24,14 @@ use ListParticipatedLast;
|
||||
use OauthClients;
|
||||
use PMmemcached;
|
||||
use ProcessMaker\BusinessModel\ProcessSupervisor as BmProcessSupervisor;
|
||||
use ProcessMaker\Model\DashletInstance;
|
||||
use ProcessMaker\Model\GroupUser;
|
||||
use ProcessMaker\Model\ObjectPermission;
|
||||
use ProcessMaker\Model\Process as ModelProcess;
|
||||
use ProcessMaker\Model\ProcessUser as ModelProcessUser;
|
||||
use ProcessMaker\Model\RbacUsers as ModelRbacUsers;
|
||||
use ProcessMaker\Model\TaskUser;
|
||||
use ProcessMaker\Model\User as ModelUser;
|
||||
use ProcessMaker\Plugins\PluginRegistry;
|
||||
use ProcessMaker\Util\DateTime;
|
||||
use ProcessMaker\Util\System;
|
||||
@@ -45,6 +53,7 @@ use UsersRolesPeer;
|
||||
|
||||
class User
|
||||
{
|
||||
const DELETE_USER = 'unknown';
|
||||
private $arrayFieldDefinition = array(
|
||||
"USR_UID" => array(
|
||||
"type" => "string",
|
||||
@@ -1210,11 +1219,11 @@ class User
|
||||
* @access public
|
||||
*
|
||||
* @param array $userData
|
||||
* @param string $sRolCode
|
||||
* @param string $rolCode
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function updateUser($userData = array(), $sRolCode = '')
|
||||
public function updateUser($userData = [], $rolCode = '')
|
||||
{
|
||||
$this->userObj = new RbacUsers();
|
||||
if (isset($userData['USR_STATUS'])) {
|
||||
@@ -1223,9 +1232,9 @@ class User
|
||||
}
|
||||
}
|
||||
$this->userObj->update($userData);
|
||||
if ($sRolCode != '') {
|
||||
if (!empty($rolCode)) {
|
||||
$this->removeRolesFromUser($userData['USR_UID']);
|
||||
$this->assignRoleToUser($userData['USR_UID'], $sRolCode);
|
||||
$this->assignRoleToUser($userData['USR_UID'], $rolCode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1285,7 +1294,7 @@ class User
|
||||
public function delete($usrUid)
|
||||
{
|
||||
try {
|
||||
//Verify data
|
||||
// Verify data
|
||||
$this->throwExceptionIfNotExistsUser($usrUid, $this->arrayFieldNameForException["usrUid"]);
|
||||
// Check user admin
|
||||
if (RBAC::isAdminUserUid($usrUid)) {
|
||||
@@ -1340,6 +1349,76 @@ class User
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete User
|
||||
*
|
||||
* @param string $usrUid Unique id of User
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function deleteGdpr($usrUid)
|
||||
{
|
||||
try {
|
||||
// Verify data
|
||||
$this->throwExceptionIfNotExistsUser($usrUid, $this->arrayFieldNameForException["usrUid"]);
|
||||
// Check user admin
|
||||
if (RBAC::isAdminUserUid($usrUid)) {
|
||||
throw new Exception(G::LoadTranslation("ID_MSG_CANNOT_DELETE_USER", [$usrUid]));
|
||||
}
|
||||
// Check user guest
|
||||
if (RBAC::isGuestUserUid($usrUid)) {
|
||||
throw new Exception(G::LoadTranslation("ID_MSG_CANNOT_DELETE_USER", [$usrUid]));
|
||||
}
|
||||
// Remove the user from groups
|
||||
GroupUser::where('USR_UID', $usrUid)->delete();
|
||||
// Remove the user from tasks assigment
|
||||
TaskUser::where('USR_UID', $usrUid)->where('TU_RELATION', 1)->delete();
|
||||
// Remove the user from process owner and assign to admin
|
||||
ModelProcess::where('PRO_CREATE_USER', $usrUid)
|
||||
->update(['PRO_CREATE_USER' => RBAC::ADMIN_USER_UID]);
|
||||
// Remove the user from process permission
|
||||
ObjectPermission::where('USR_UID', $usrUid)->where('OP_USER_RELATION', 1)->delete();
|
||||
// Remove the user from process supervisor
|
||||
ModelProcessUser::where('USR_UID', $usrUid)->where('PU_TYPE', 'SUPERVISOR')->delete();
|
||||
// Mark the user with the deleted status
|
||||
$fields = [
|
||||
'USR_STATUS' => 'CLOSED',
|
||||
'USR_USERNAME' => '',
|
||||
'USR_FIRSTNAME' => self::DELETE_USER,
|
||||
'USR_LASTNAME' => self::DELETE_USER,
|
||||
'USR_EMAIL' => '',
|
||||
'USR_DUE_DATE' => '0000-00-00',
|
||||
'USR_CREATE_DATE' => '0000-00-00 00:00:00',
|
||||
'USR_UPDATE_DATE' => '0000-00-00 00:00:00',
|
||||
];
|
||||
ModelRbacUsers::where('USR_UID', $usrUid)->update($fields);
|
||||
$fields = array_merge(
|
||||
$fields, [
|
||||
'USR_STATUS_ID' => 0,
|
||||
'USR_COUNTRY' => '',
|
||||
'USR_CITY' => '',
|
||||
'USR_LOCATION' => '',
|
||||
'USR_ADDRESS' => '',
|
||||
'USR_PHONE' => '',
|
||||
'USR_FAX' => '',
|
||||
'USR_CELLULAR' => '',
|
||||
'USR_ZIP_CODE' => '',
|
||||
'USR_BIRTHDAY' => '0000-00-00',
|
||||
'USR_TIME_ZONE' => '',
|
||||
'USR_EXTENDED_ATTRIBUTES_DATA' => '{}',
|
||||
]
|
||||
);
|
||||
ModelUser::where('USR_UID', $usrUid)->update($fields);
|
||||
// Delete Dashboard
|
||||
DashletInstance::where('DAS_INS_OWNER_UID', $usrUid)->where('DAS_INS_OWNER_TYPE', 'USER')->delete();
|
||||
// Destroy session after delete user
|
||||
RBAC::destroySessionUser($usrUid);
|
||||
(new OauthClients())->removeByUser($usrUid);
|
||||
} catch (Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all Users
|
||||
*
|
||||
|
||||
18
workflow/engine/src/ProcessMaker/Model/DashletInstance.php
Normal file
18
workflow/engine/src/ProcessMaker/Model/DashletInstance.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace ProcessMaker\Model;
|
||||
|
||||
use App\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class DashletInstance extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
// Set our table name
|
||||
protected $table = "DASHLET_INSTANCE";
|
||||
// Set the PK
|
||||
protected $primaryKey = 'DAS_INS_UID';
|
||||
// No timestamps
|
||||
public $timestamps = false;
|
||||
}
|
||||
Reference in New Issue
Block a user