133 regels
3.4 KiB
PHP

<?php
namespace App\Models;
use CodeIgniter\Model;
use Faker\Generator;
use Myth\Auth\Authorization\GroupModel;
use Myth\Auth\Entities\User;
/**
* @method User|null first()
*/
class UserModel extends Model
{
protected $table = 'users';
protected $primaryKey = 'id';
protected $returnType = User::class;
protected $useSoftDeletes = true;
protected $allowedFields = [
'email', 'password_hash', 'reset_hash', 'reset_at', 'reset_expires', 'activate_hash',
'status', 'status_message', 'active', 'force_pass_reset', 'permissions', 'deleted_at',
'rh_prestador_solicitud_id'
];
protected $useTimestamps = true;
protected $validationRules = [
'email' => 'required|valid_email|is_unique[users.email,id,{id}]',
'password_hash' => 'required',
];
protected $validationMessages = [];
protected $skipValidation = false;
protected $afterInsert = ['addToGroup'];
/**
* The id of a group to assign.
* Set internally by withGroup.
*
* @var int|null
*/
protected $assignGroup;
/**
* Logs a password reset attempt for posterity sake.
*/
public function logResetAttempt(string $email, ?string $token = null, ?string $ipAddress = null, ?string $userAgent = null)
{
$this->db->table('auth_reset_attempts')->insert([
'email' => $email,
'ip_address' => $ipAddress,
'user_agent' => $userAgent,
'token' => $token,
'created_at' => date('Y-m-d H:i:s'),
]);
}
/**
* Logs an activation attempt for posterity sake.
*/
public function logActivationAttempt(?string $token = null, ?string $ipAddress = null, ?string $userAgent = null)
{
$this->db->table('auth_activation_attempts')->insert([
'ip_address' => $ipAddress,
'user_agent' => $userAgent,
'token' => $token,
'created_at' => date('Y-m-d H:i:s'),
]);
}
/**
* Sets the group to assign any users created.
*
* @return $this
*/
public function withGroup(string $groupName)
{
$group = $this->db->table('auth_groups')->where('name', $groupName)->get()->getFirstRow();
$this->assignGroup = $group->id;
return $this;
}
/**
* Clears the group to assign to newly created users.
*
* @return $this
*/
public function clearGroup()
{
$this->assignGroup = null;
return $this;
}
/**
* If a default role is assigned in Config\Auth, will
* add this user to that group. Will do nothing
* if the group cannot be found.
*
* @param mixed $data
*
* @return mixed
*/
protected function addToGroup($data)
{
if (is_numeric($this->assignGroup)) {
$groupModel = model(GroupModel::class);
$groupModel->addUserToGroup($data['id'], $this->assignGroup);
}
return $data;
}
/**
* Faked data for Fabricator.
*/
public function fake(Generator &$faker): User
{
return new User([
'email' => $faker->email,
'password' => bin2hex(random_bytes(16)),
]);
}
public function findUserWithSolicitud($solicitudId)
{
return $this
// ->select('id')
->where('rh_prestador_solicitud_id', $solicitudId)
->first();
}
}