PMCORE-2887
This commit is contained in:
@@ -2,7 +2,11 @@
|
||||
|
||||
namespace ProcessMaker\Model;
|
||||
|
||||
use Exception;
|
||||
use G;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use ProcessMaker\Model\Groupwf;
|
||||
use ProcessMaker\Model\RbacUsers;
|
||||
|
||||
class GroupUser extends Model
|
||||
{
|
||||
@@ -57,5 +61,57 @@ class GroupUser extends Model
|
||||
|
||||
return $groups;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify if a user is already assigned to a group
|
||||
*
|
||||
* @param int $usrId
|
||||
* @param int $grpId
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function verifyUserIsInGroup($usrId, $grpId)
|
||||
{
|
||||
$query = GroupUser::select()->where('GRP_ID', $grpId)->where('USR_ID', $usrId);
|
||||
if (empty($query->get()->values()->toArray())) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign user to group
|
||||
*
|
||||
* @param string $usrUid
|
||||
* @param int $usrId
|
||||
* @param string $grpUid
|
||||
* @param int $grpId
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function assignUserToGroup($usrUid, $usrId, $grpUid, $grpId)
|
||||
{
|
||||
if (!RbacUsers::verifyUserExists($usrUid)) {
|
||||
return ['message' => G::loadTranslation('ID_USER_NOT_REGISTERED_SYSTEM')];
|
||||
}
|
||||
if (!Groupwf::verifyGroupExists($grpUid)) {
|
||||
return ['message' => G::loadTranslation('ID_GROUP_NOT_REGISTERED_SYSTEM')];
|
||||
}
|
||||
if (GroupUser::verifyUserIsInGroup($usrId, $grpId)) {
|
||||
return ['message' => G::loadTranslation('ID_USER_ALREADY_EXISTS_GROUP')];
|
||||
}
|
||||
|
||||
try {
|
||||
$data = [
|
||||
'GRP_UID' => $grpUid,
|
||||
'GRP_ID' => $grpId,
|
||||
'USR_UID' => $usrUid,
|
||||
'USR_ID' => $usrId,
|
||||
];
|
||||
GroupUser::insert($data);
|
||||
} catch (Exception $e) {
|
||||
throw new Exception("Error: {$e->getMessage()}.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,5 +42,31 @@ class Groupwf extends Model
|
||||
{
|
||||
return $query->where('GRP_UID', $uid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify if group exists
|
||||
*
|
||||
* @param string $grpUid
|
||||
* @return boolean
|
||||
*/
|
||||
public static function verifyGroupExists($grpUid)
|
||||
{
|
||||
$query = Groupwf::select()->group($grpUid);
|
||||
if (empty($query->get()->values()->toArray())) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get group Id
|
||||
*
|
||||
* @param string $grpUid
|
||||
* @return array
|
||||
*/
|
||||
public static function getGroupId($grpUid)
|
||||
{
|
||||
$query = Groupwf::select('GRP_ID')->where('GRP_UID', $grpUid);
|
||||
return $query->get()->first()->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,22 @@ class RbacRoles extends Model
|
||||
protected $table = 'RBAC_ROLES';
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* Get rol Uid by code
|
||||
*
|
||||
* @param string $rolCode
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getRolUidByCode($rolCode)
|
||||
{
|
||||
$query = RbacRoles::select('ROL_UID')->where('ROL_CODE', $rolCode);
|
||||
$query = $query->get()->first();
|
||||
|
||||
if (is_null($query)) {
|
||||
return [];
|
||||
} else {
|
||||
return $query->toArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,77 @@
|
||||
|
||||
namespace ProcessMaker\Model;
|
||||
|
||||
use Exception;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use ProcessMaker\Model\RbacUsersRoles;
|
||||
|
||||
class RbacUsers extends Model
|
||||
{
|
||||
protected $table = 'RBAC_USERS';
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* Create a new user
|
||||
*
|
||||
* @param array $data
|
||||
* @return array
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function createUser($data)
|
||||
{
|
||||
try {
|
||||
$dataInsert = [
|
||||
'USR_UID' => $data['USR_UID'],
|
||||
'USR_USERNAME' => $data['USR_USERNAME'],
|
||||
'USR_PASSWORD' => $data['USR_PASSWORD'],
|
||||
'USR_FIRSTNAME' => $data['USR_FIRSTNAME'],
|
||||
'USR_LASTNAME' => $data['USR_LASTNAME'],
|
||||
'USR_EMAIL' => $data['USR_EMAIL'],
|
||||
'USR_DUE_DATE' => $data['USR_DUE_DATE'],
|
||||
'USR_CREATE_DATE' => $data['USR_CREATE_DATE'],
|
||||
'USR_UPDATE_DATE' => $data['USR_UPDATE_DATE'],
|
||||
'USR_STATUS' => $data['USR_STATUS_ID'],
|
||||
'USR_AUTH_TYPE' => $data['USR_AUTH_TYPE'],
|
||||
'UID_AUTH_SOURCE' => $data['UID_AUTH_SOURCE'],
|
||||
'USR_AUTH_USER_DN' => $data['USR_AUTH_USER_DN'],
|
||||
'USR_AUTH_SUPERVISOR_DN' => $data['USR_AUTH_SUPERVISOR_DN'],
|
||||
];
|
||||
RbacUsers::insert($dataInsert);
|
||||
RbacUsersRoles::assignRolToUser($data['USR_UID'], $data['ROL_UID']);
|
||||
} catch (Exception $e) {
|
||||
throw new Exception("Error: {$e->getMessage()}.");
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify if username exists
|
||||
*
|
||||
* @param string $username
|
||||
* @return boolean
|
||||
*/
|
||||
public static function verifyUsernameExists($username)
|
||||
{
|
||||
$query = RbacUsers::select()->where('USR_USERNAME', $username);
|
||||
$result = $query->get()->values()->toArray();
|
||||
if (empty($result)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify if user exists
|
||||
*
|
||||
* @param string $usrUid
|
||||
* @return boolean
|
||||
*/
|
||||
public static function verifyUserExists($usrUid)
|
||||
{
|
||||
$query = RbacUsers::select()->where('USR_UID', $usrUid);
|
||||
if (empty($query->get()->values()->toArray())) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,19 @@ class RbacUsersRoles extends Model
|
||||
protected $table = 'RBAC_USERS_ROLES';
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* Assign rol to user
|
||||
*
|
||||
* @param string $userUid
|
||||
* @param string $rolUid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function assignRolToUser($userUid, $rolUid)
|
||||
{
|
||||
RbacUsersRoles::insert([
|
||||
'USR_UID' => $userUid,
|
||||
'ROL_UID' => $rolUid
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,49 @@ class User extends Model
|
||||
return $this->belongsTo(GroupUser::class, 'USR_UID', 'USR_UID');
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a user
|
||||
*
|
||||
* @param array $data
|
||||
*
|
||||
* @return integer
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function createUser($data)
|
||||
{
|
||||
try {
|
||||
$usrData = [
|
||||
'USR_UID' => $data['USR_UID'],
|
||||
'USR_USERNAME' => $data['USR_USERNAME'],
|
||||
'USR_PASSWORD' => $data['USR_PASSWORD'],
|
||||
'USR_FIRSTNAME' => $data['USR_FIRSTNAME'],
|
||||
'USR_LASTNAME' => $data['USR_LASTNAME'],
|
||||
'USR_EMAIL' => $data['USR_EMAIL'],
|
||||
'USR_DUE_DATE' => $data['USR_DUE_DATE'],
|
||||
'USR_CREATE_DATE' => $data['USR_CREATE_DATE'],
|
||||
'USR_UPDATE_DATE' => $data['USR_UPDATE_DATE'],
|
||||
'USR_STATUS' => $data['USR_STATUS'],
|
||||
'USR_STATUS_ID' => $data['USR_STATUS_ID'],
|
||||
'USR_COUNTRY' => $data['USR_COUNTRY'],
|
||||
'USR_CITY' => $data['USR_CITY'],
|
||||
'USR_LOCATION' => $data['USR_LOCATION'],
|
||||
'USR_ADDRESS' => $data['USR_ADDRESS'],
|
||||
'USR_PHONE' => $data['USR_PHONE'],
|
||||
'USR_FAX' => $data['USR_FAX'],
|
||||
'USR_CELLULAR' => $data['USR_CELLULAR'],
|
||||
'USR_ZIP_CODE' => $data['USR_ZIP_CODE'],
|
||||
'DEP_UID' => $data['DEP_UID'],
|
||||
'USR_POSITION' => $data['USR_POSITION'],
|
||||
'USR_RESUME' => $data['USR_RESUME'],
|
||||
'USR_ROLE' => $data['ROL_CODE']
|
||||
];
|
||||
$usrId = User::insertGetId($usrData);
|
||||
return $usrId;
|
||||
} catch(Exception $e) {
|
||||
throw new Exception("Error: {$e->getMessage()}.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope for query to get the user by USR_UID
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user