init backend presensi

This commit is contained in:
mwpn
2026-03-05 14:37:36 +07:00
commit b4fda6b9c9
319 changed files with 27261 additions and 0 deletions

View File

@@ -0,0 +1 @@
# Auth Module - Models

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Modules\Auth\Models;
use App\Modules\Auth\Entities\Role;
use CodeIgniter\Model;
/**
* Role Model
*/
class RoleModel extends Model
{
protected $table = 'roles';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = Role::class;
protected $useSoftDeletes = false;
protected $protectFields = true;
protected $allowedFields = [
'role_code',
'role_name',
];
protected $useTimestamps = false;
protected $validationRules = [
'role_code' => 'required|max_length[50]|is_unique[roles.role_code,id,{id}]',
'role_name' => 'required|max_length[100]',
];
protected $validationMessages = [];
protected $skipValidation = false;
protected $cleanValidationRules = true;
public function findByCode(string $code): ?Role
{
return $this->where('role_code', $code)->first();
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Modules\Auth\Models;
use App\Modules\Auth\Entities\User;
use CodeIgniter\Model;
/**
* User Model
*/
class UserModel extends Model
{
protected $table = 'users';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = User::class;
protected $useSoftDeletes = false;
protected $protectFields = true;
protected $allowedFields = [
'name',
'email',
'password_hash',
'is_active',
];
protected $useTimestamps = true;
protected $dateFormat = 'datetime';
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $validationRules = [
'name' => 'required|max_length[255]',
'email' => 'required|valid_email|max_length[255]|is_unique[users.email,id,{id}]',
'password_hash' => 'required|max_length[255]',
'is_active' => 'permit_empty|in_list[0,1]',
];
protected $validationMessages = [];
protected $skipValidation = false;
protected $cleanValidationRules = true;
public function findByEmail(string $email): ?User
{
return $this->where('email', $email)->first();
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Modules\Auth\Models;
use CodeIgniter\Model;
/**
* User Role Model (pivot)
*/
class UserRoleModel extends Model
{
protected $table = 'user_roles';
// Use a simple primary key to avoid composite PK issues in Model internals.
// Database level tetap punya primary key (user_id, role_id) via migration.
protected $primaryKey = 'user_id';
protected $useAutoIncrement = false;
protected $returnType = 'array';
protected $useSoftDeletes = false;
protected $protectFields = true;
protected $allowedFields = [
'user_id',
'role_id',
];
protected $useTimestamps = false;
/**
* Get role IDs for a user
*
* @param int $userId
* @return array<int>
*/
public function getRoleIdsForUser(int $userId): array
{
$rows = $this->where('user_id', $userId)->findAll();
$ids = [];
foreach ($rows as $row) {
$ids[] = (int) $row['role_id'];
}
return $ids;
}
}