133 regels
3.4 KiB
PHP
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();
|
|
}
|
|
}
|