servermgrv2 init...1

This commit is contained in:
최준흠git config git config --helpgit config --global user.name 최준흠 2023-07-17 23:24:40 +09:00
parent c2066abca2
commit bbd2c11f28
15 changed files with 135 additions and 137 deletions

View File

@ -23,7 +23,7 @@ class UserController extends \App\Controllers\Admin\AdminController
'passwd' => 'required|trim|min_length[4]|max_length[130]',
'name' => 'required|min_length[2]|max_length[20]',
'email' => 'required|valid_email',
'role' => 'required|in_list[member,manager,cloudflare,director,master]',
'role' => 'required|in_list[user,manager,cloudflare,director,master]',
]
],
'update' => [
@ -33,7 +33,7 @@ class UserController extends \App\Controllers\Admin\AdminController
'passwd' => 'required|trim|min_length[4]|max_length[30]',
'name' => 'required|min_length[2]|max_length[20]',
'email' => 'required|valid_email',
'role' => 'required|in_list[member,manager,cloudflare,director,master]',
'role' => 'required|in_list[user,manager,cloudflare,director,master]',
]
],
'view' => [
@ -57,21 +57,6 @@ class UserController extends \App\Controllers\Admin\AdminController
$this->_viewDatas['className'] = $this->_className;
}
//Insert관련
protected function insert_process()
{
//암호값 hash작업
$this->_viewDatas['fieldDatas']['passwd'] = password_hash($this->_viewDatas['fieldDatas']['passwd'], PASSWORD_DEFAULT);
return parent::insert_process();
}
//Update관련
protected function update_process($entity)
{
//암호값 hash작업
$entity->passwd = password_hash($entity->passwd, PASSWORD_DEFAULT);
return parent::update_process($entity);
}
////Action 모음
//Insert관련
final public function insert()

View File

@ -10,7 +10,7 @@ use Psr\Log\LoggerInterface;
class CommonController extends BaseController
{
use CommonTrait;
use \App\Controllers\Trait\CommonTrait;
protected $_className = '';
protected $_model = null;
@ -28,6 +28,49 @@ class CommonController extends BaseController
];
}
//Field별 Form Option용
protected function getFieldFormOption(string $field): array
{
switch ($field) {
default:
$temps = lang($this->_className . '.' . strtoupper($field));
if (!is_array($temps)) {
throw new \Exception(__FUNCTION__ . "에서 {$field}의 데이터가 array가 아닙니다.\n" . var_export($temps, true));
}
return array_merge(
[DEFAULTS['EMPTY'] => lang($this->_className . '.label.' . $field) . ' 선택'],
lang($this->_className . '.' . strtoupper($field))
);
break;
}
}
//Field별 Form Option용
final protected function getFieldFormOptions(array $fieldFilters): array
{
$fieldFormOptions = array();
foreach ($fieldFilters as $field) {
if (is_array($field)) {
throw new \Exception(__FUNCTION__ . "에서 field가 array 입니다.\n" . var_export($fieldFilters, true));
}
$fieldFormOptions[$field] = $this->getFieldFormOption($field);
}
return $fieldFormOptions;
}
//Field별 Form Rule용
final protected function getFieldRules(array $fields, array $fieldRules): array
{
$tempRules = $this->_model->getValidationRules(['only' => $fields]);
foreach ($fields as $field) {
if (is_array($field)) {
throw new \Exception(__FUNCTION__ . "에서 field가 array 입니다.\n" . var_export($fieldRules, true));
}
if (array_key_exists($field, $fieldRules)) {
$tempRules[$field] = $fieldRules[$field];
}
}
return $tempRules;
}
//Insert관련
protected function insert_init()
{
@ -58,16 +101,16 @@ class CommonController extends BaseController
protected function insert_validate()
{
//변경할 값 확인
if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//변경된 값 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'][$field] = rtrim($this->request->getVar($field));
Log::add("info", "{$field} : {$this->_viewDatas['fieldDatas'][$field]}");
}
//변경할 값 확인
if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
}
protected function insert_process()
{
@ -84,7 +127,6 @@ class CommonController extends BaseController
Log::save("{$this->_viewDatas['title']} {$message}");
return alert_CommonHelper($message, session()->get(LOGINS['RETURN_URL']));
} catch (\Exception $e) {
throw new \Exception($e->getMessage());
$message = __FUNCTION__ . " 실패하였습니다.";
Log::add("warning", $e->getMessage());
Log::add("warning", var_export($this->_viewDatas['fieldDatas'], true));
@ -124,10 +166,6 @@ class CommonController extends BaseController
}
protected function update_validate($entity)
{
//변경할 값 확인
if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//변경된 값 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
@ -142,6 +180,10 @@ class CommonController extends BaseController
);
}
}
//변경할 값 확인
if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
return $entity;
}
protected function update_process($entity)

View File

@ -1,49 +0,0 @@
<?php
namespace App\Controllers\Common;
trait CommonTrait
{
//Field별 Form Option용
protected function getFieldFormOption(string $field): array
{
switch ($field) {
default:
$temps = lang($this->_className . '.' . strtoupper($field));
if (!is_array($temps)) {
throw new \Exception(__FUNCTION__ . "에서 {$field}의 데이터가 array가 아닙니다.\n" . var_export($temps, true));
}
return array_merge(
[DEFAULTS['EMPTY'] => lang($this->_className . '.label.' . $field) . ' 선택'],
lang($this->_className . '.' . strtoupper($field))
);
break;
}
}
//Field별 Form Option용
final protected function getFieldFormOptions(array $fieldFilters): array
{
$fieldFormOptions = array();
foreach ($fieldFilters as $field) {
if (is_array($field)) {
throw new \Exception(__FUNCTION__ . "에서 field가 array 입니다.\n" . var_export($fieldFilters, true));
}
$fieldFormOptions[$field] = $this->getFieldFormOption($field);
}
return $fieldFormOptions;
}
//Field별 Form Rule용
final protected function getFieldRules(array $fields, array $fieldRules): array
{
$tempRules = $this->_model->getValidationRules(['only' => $fields]);
foreach ($fields as $field) {
if (is_array($field)) {
throw new \Exception(__FUNCTION__ . "에서 field가 array 입니다.\n" . var_export($fieldRules, true));
}
if (array_key_exists($field, $fieldRules)) {
$tempRules[$field] = $fieldRules[$field];
}
}
return $tempRules;
}
}

View File

@ -0,0 +1,7 @@
<?php
namespace App\Controllers\Trait;
trait CommonTrait
{
}

View File

@ -12,7 +12,6 @@ CREATE TABLE user (
created_at timestamp NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (uid),
UNIQUE KEY id (id),
UNIQUE KEY email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT ='사용자 정보';
DROP TABLE IF EXISTS user_sns;

View File

@ -3,9 +3,8 @@
namespace App\Entities;
use CodeIgniter\Entity\Entity;
use JsonSerializable;
class CommonEntity extends Entity implements JsonSerializable
class CommonEntity extends Entity
{
public function getTitle()
{

View File

@ -30,8 +30,8 @@ class UserEntity extends CommonEntity
{
return $this->attributes['passwd'];
}
public function setPassword(string $password)
public function getEncryptedPassword(string $password)
{
$this->attributes['passwd'] = password_hash($password, PASSWORD_DEFAULT);
return password_hash($password, PASSWORD_DEFAULT);
}
}

View File

@ -99,7 +99,7 @@ class GoogleAdapter extends Adapter
// 'verifiedEmail' => true,
// ))
//조건에 해당하는 사용자가 있는지 검사
$snsEntity = $this->getUserModel()->asObject(UserSNSEntity::class)->where(
$snsEntity = $this->getUserSNSModel()->asObject(UserSNSEntity::class)->where(
array("site" => $this->getSiteName(), "uid" => $result['id'])
)->first();
if (is_null($snsEntity)) {

View File

@ -2,12 +2,12 @@
namespace App\Models;
use App\Libraries\Log\Log;
use CodeIgniter\Model;
use App\Libraries\Log\Log;
class CommonModel extends Model
{
// use CommonTrait;
use Trait\CommonTrait;
protected $DBGroup = 'default';
// protected $table = 'user';
@ -42,6 +42,31 @@ class CommonModel extends Model
protected $beforeDelete = [];
protected $afterDelete = [];
final protected function create_process($entity)
{
if (!$this->save($entity)) {
Log::add("error", __FUNCTION__ . "에서 호출:" . $this->getLastQuery());
Log::add("error", implode("\n", $this->errors()));
throw new \Exception(__FUNCTION__ . " 오류 발생.\n" . var_export($this->errors(), true));
}
$pk = $this->primaryKey;
$entity->$pk = $this->insertID();
return $entity;
}
final protected function modify_process($entity)
{
if ($entity->hasChanged()) {
if (!$this->save($entity)) {
Log::add("error", __FUNCTION__ . "에서 호출:" . $this->getLastQuery());
Log::add("error", implode("\n", $this->errors()));
throw new \Exception(__FUNCTION__ . " 오류 발생.\n" . var_export($this->errors(), true));
}
} else {
throw new \Exception(__FUNCTION__ . " 오류 발생.\n 기존정보와 동일하여 수정되지 않았습니다.");
}
return $entity;
}
//Index관련
public function setIndexWordFilter(string $word)
{

View File

@ -1,41 +0,0 @@
<?php
namespace App\Models;
use App\Libraries\Log\Log;
trait CommonTrait
{
private function setEntityDatas_CommonTrait($entity, array $datas)
{
foreach ($this->allowedFields as $field) {
if ($entity->$field != $datas[$field]) {
$entity->$field = $datas[$field];
}
}
return $entity;
}
protected function create_CommonTrait($entity, array $datas)
{
$entity = $this->setEntityDatas_CommonTrait($entity, $datas);
if (!$this->save($entity)) {
Log::add("error", __FUNCTION__ . "에서 호출:" . $this->getLastQuery());
Log::add("error", implode("\n", $this->errors()));
throw new \Exception(__FUNCTION__ . " 오류 발생.\n" . var_export($this->errors(), true));
}
$entity->$this->primaryKey = $this->insertID();
return $entity;
}
protected function modify_CommonTrait($entity, array $datas)
{
$entity = $this->setEntityDatas_CommonTrait($entity, $datas);
if ($entity->hasChanged()) {
if (!$this->save($entity)) {
Log::add("error", __FUNCTION__ . "에서 호출:" . $this->getLastQuery());
Log::add("error", implode("\n", $this->errors()));
throw new \Exception(__FUNCTION__ . " 오류 발생.\n" . var_export($this->errors(), true));
}
}
return $entity;
}
}

View File

@ -37,11 +37,16 @@ class HPILOModel extends CommonModel
}
public function create(array $datas): HPILOEntity
{
return $this->create_CommonTrait(new HPILOEntity($datas), $datas);
return $this->create_process(new HPILOEntity($datas));
}
public function modify(HPILOEntity $entity, array $datas): HPILOEntity
{
return $this->modify_CommonTrait($entity, $datas);
foreach ($datas as $field => $value) {
if ($entity->$field != $datas[$field]) {
$entity->$field = $value;
}
}
return $this->modify_process($entity);
}
//Index관련

View File

@ -9,7 +9,7 @@ class LoggerModel extends CommonModel
protected $table = 'logger';
// protected $primaryKey = 'uid';
// protected $useAutoIncrement = true;
protected $allowedFields = ['user_uid', 'title', 'content', 'status', 'created_at'];
protected $allowedFields = ['user_uid', 'title', 'content', 'status', 'updated_at'];
protected $validationRules = [
'uid' => 'if_exist|numeric',
'user_uid' => 'if_exist|numeric',
@ -30,12 +30,18 @@ class LoggerModel extends CommonModel
}
public function create(array $datas): LoggerEntity
{
$datas['user_uid'] = session()->get('uid');
return $this->create_CommonTrait(new LoggerEntity($datas), $datas);
$entity = new LoggerEntity($datas);
$entity->user_uid = session()->get('uid');
return parent::modify_process($entity);
}
public function modify(LoggerEntity $entity, array $datas): LoggerEntity
{
return $this->modify_CommonTrait($entity, $datas);
foreach ($datas as $field => $value) {
if ($entity->$field != $datas[$field]) {
$entity->$field = $value;
}
}
return parent::modify_process($entity);
}
//Index관련

View File

@ -0,0 +1,7 @@
<?php
namespace App\Models\Trait;
trait CommonTrait
{
}

View File

@ -9,7 +9,7 @@ class UserModel extends CommonModel
protected $table = 'user';
// protected $primaryKey = 'uid';
// protected $useAutoIncrement = true;
protected $allowedFields = ['id', 'passwd', 'name', 'email', 'role', 'oauth_id', 'status', 'updated_at', 'created_at'];
protected $allowedFields = ['id', 'passwd', 'name', 'email', 'role', 'status', 'updated_at'];
protected $validationRules = [
'uid' => 'if_exist|numeric',
'id' => 'if_exist|min_length[4]|max_length[20]',
@ -18,7 +18,6 @@ class UserModel extends CommonModel
'name' => 'if_exist|min_length[2]|max_length[20]',
'email' => 'if_exist|valid_email',
'role' => 'if_exist|in_list[user,manager,cloudflare,director,master]',
'oauth_id' => 'if_exist|trim|min_length[4]',
'status' => 'if_exist|in_list[use,unuse,standby]',
'updated_at' => 'if_exist|valid_date',
'created_at' => 'if_exist|valid_date',
@ -34,11 +33,20 @@ class UserModel extends CommonModel
}
public function create(array $datas): UserEntity
{
return $this->create_CommonTrait(new UserEntity($datas), $datas);
$entity = new UserEntity();
foreach ($datas as $field => $value) {
$entity->$field = $field === 'passwd' ? $entity->getEncryptedPassword($value) : $value;
}
return parent::create_process($entity);
}
public function modify(UserEntity $entity, array $datas): UserEntity
{
return $this->modify_CommonTrait($entity, $datas);
foreach ($datas as $field => $value) {
if ($entity->$field != $datas[$field]) {
$entity->$field = $field === 'passwd' ? $entity->getEncryptedPassword($value) : $value;
}
}
return parent::modify_process($entity);
}
//Index관련

View File

@ -37,11 +37,16 @@ class UserSNSModel extends CommonModel
$entity->name = $datas['name'];
$entity->email = $datas['email'];
$entity->status = "standby";
return $this->create_CommonTrait($entity, $datas);
return $this->create_process($entity);
}
public function modify(UserSNSEntity $entity, array $datas): UserSNSEntity
{
return $this->modify_CommonTrait($entity, $datas);
foreach ($datas as $field => $value) {
if ($entity->$field != $datas[$field]) {
$entity->$field = $value;
}
}
return $this->modify_process($entity);
}
//Index관련