41 private $aclDataCache;
46 private $observerConfig;
60 \
Magento\Authorization\Model\RoleFactory $roleFactory,
67 $this->_roleFactory = $roleFactory;
80 $this->
_init(
'admin_user',
'user_id');
90 $this->_uniqueFields = [
91 [
'field' =>
'email',
'title' =>
__(
'Email')],
92 [
'field' =>
'username',
'title' =>
__(
'User Name')],
108 'logdate' => (new \DateTime())->format(\
Magento\Framework\Stdlib\DateTime::DATETIME_PHP_FORMAT),
109 'lognum' =>
$user->getLognum() + 1,
112 $condition = [
'user_id = ?' => (int)
$user->getUserId()];
131 $binds = [
'username' => $username];
144 if (is_numeric(
$user)) {
147 $userId =
$user->getUserId();
157 ->where(
'parent_id > :parent_id')
158 ->where(
'user_id = :user_id')
159 ->where(
'user_type = :user_type');
161 $binds = [
'parent_id' => 0,
'user_id' => $userId,
180 if (
$user->hasRoleId()) {
182 $this->_createUserRole(
$user->getRoleId(),
$user);
206 protected function _createUserRole($parentId, ModelUser
$user)
210 $parentRole = $this->_roleFactory->create()->load($parentId);
212 $role = new \Magento\Framework\DataObject();
213 $role->setTreeLevel(0);
216 if ($parentRole->getId()) {
217 $data = new \Magento\Framework\DataObject(
219 'parent_id' => $parentRole->getId(),
220 'tree_level' => $parentRole->getTreeLevel() + 1,
222 'role_type' => RoleUser::ROLE_TYPE,
223 'user_id' =>
$user->getId(),
225 'role_name' =>
$user->getFirstName(),
231 $this->aclDataCache->clean();
243 if (is_string(
$user->getExtra())) {
246 return parent::_afterLoad(
$user);
261 $uid =
$user->getId();
266 $this->
getTable(
'authorization_role'),
271 }
catch (\Exception $e) {
288 if (!
$user->getId()) {
300 "(ar.role_id = {$table}.parent_id and ar.role_type = '" . RoleGroup::ROLE_TYPE .
"')",
303 "{$table}.user_id = :user_id" 305 "{$table}.user_type = :user_type" 308 $binds = [
'user_id' => (int)
$user->getId(),
329 if (
$user->getUserId() <= 0) {
332 if (
$user->getRoleId() <= 0) {
339 'user_id = ?' => (int)
$user->getId(),
340 'parent_id = ?' => (int)
$user->getRoleId(),
344 $dbh->delete($this->
getTable(
'authorization_role'), $condition);
356 if (
$user->getUserId() > 0) {
357 $roleTable = $this->
getTable(
'authorization_role');
362 'parent_id' =>
$user->getRoleId(),
363 'user_id' =>
$user->getUserId(),
367 $select = $dbh->select()->from($roleTable)
368 ->where(
'parent_id = :parent_id')
369 ->where(
'user_type = :user_type')
370 ->where(
'user_id = :user_id');
372 return $dbh->fetchCol(
$select, $binds);
390 'username' =>
$user->getUsername(),
391 'email' =>
$user->getEmail(),
392 'user_id' => (int)
$user->getId(),
398 '(username = :username OR email = :email)' 400 'user_id <> :user_id' 426 if ($object->getId()) {
430 [
'user_id = ?' => (
int)$object->getId()]
458 $userIdentity = new \Zend_Validate_Callback([$this,
'isUserUnique']);
459 $userIdentity->setMessage(
460 __(
'A user with the same user name or email already exists.'),
464 return $userIdentity;
476 $users = $role->getRoleUsers();
479 if (
sizeof($users) > 0) {
480 $bind = [
'reload_acl_flag' => 1];
481 $where = [
'user_id IN(?)' => $users];
485 return $rowsCount > 0;
501 [
'failures_num' => 0,
'first_failure' =>
null,
'lock_expires' =>
null],
519 $exceptId = (int)$exceptId;
522 [
'lock_expires' => $this->dateTime->formatDate(
time() + $lifetime)],
523 "{$this->getIdFieldName()} IN (" . $this->
getConnection()->quote(
525 ) .
")\n AND {$this->getIdFieldName()} <> {$exceptId}" 537 public function updateFailure($user, $setLockExpires =
false, $setFirstFailure =
false)
539 $update = [
'failures_num' => new \Zend_Db_Expr(
'failures_num + 1')];
540 if (
false !== $setFirstFailure) {
541 $update[
'first_failure'] = $this->dateTime->formatDate($setFirstFailure);
542 $update[
'failures_num'] = 1;
544 if (
false !== $setLockExpires) {
545 $update[
'lock_expires'] = $this->dateTime->formatDate($setLockExpires);
563 $userId = (int)
$user->getId();
570 ->from(
$table,
'password_id')
571 ->where(
'user_id = :user_id')
572 ->order(
'password_id ' . \
Magento\Framework\DB\Select::SQL_DESC)
573 ->limit($retainLimit),
574 [
':user_id' => $userId]
577 'user_id = ?' => $userId,
578 'last_updated <= ?' =>
time() - $this->observerConfig->getAdminPasswordLifetime()
580 if ($retainPasswordIds) {
581 $where[
'password_id NOT IN (?)'] = $retainPasswordIds;
589 ->from(
$table,
'password_hash')
590 ->where(
'user_id = :user_id'),
591 [
':user_id' => $userId]
612 'user_id' => $user->getId(),
613 'password_hash' => $passwordHash,
614 'last_updated' =>
time()
631 ->from($this->
getTable(
'admin_passwords'))
632 ->where(
'user_id = :user_id')
633 ->order(
'password_id ' . \
Magento\Framework\DB\Select::SQL_DESC)
635 [
':user_id' => $userId]
_prepareDataForTable(DataObject $object, $table)
elseif(isset( $params[ 'redirect_parent']))
userExists(\Magento\Framework\Model\AbstractModel $user)
lock($userIds, $exceptId, $lifetime)
_beforeDelete(\Magento\Framework\Model\AbstractModel $object)
trackPassword($user, $passwordHash, $lifetime=0)
_init($mainTable, $idFieldName)
getValidationRulesBeforeSave()
deleteFromRole(\Magento\Framework\Model\AbstractModel $user)
_afterSave(\Magento\Framework\Model\AbstractModel $user)
isUserUnique(\Magento\Framework\Model\AbstractModel $user)
_afterDelete(\Magento\Framework\Model\AbstractModel $object)
saveExtra($object, $data)
__construct(\Magento\Framework\Model\ResourceModel\Db\Context $context, \Magento\Authorization\Model\RoleFactory $roleFactory, \Magento\Framework\Stdlib\DateTime $dateTime, $connectionName=null, CacheInterface $aclDataCache=null, ObserverConfig $observerConfig=null)
updateFailure($user, $setLockExpires=false, $setFirstFailure=false)
recordLogin(ModelUser $user)
loadByUsername($username)
roleUserExists(\Magento\Framework\Model\AbstractModel $user)
_clearUserRoles(ModelUser $user)
getLatestPassword($userId)
getOldPasswords($user, $retainLimit=4)
getRoles(\Magento\Framework\Model\AbstractModel $user)
updateRoleUsersAcl(\Magento\Authorization\Model\Role $role)
_afterLoad(\Magento\Framework\Model\AbstractModel $user)