cfmgrv4 init...2

This commit is contained in:
최준흠 2024-10-07 21:59:40 +09:00
parent e8257f3813
commit 375c6cd48a
12 changed files with 99 additions and 74 deletions

View File

@ -3,8 +3,4 @@
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

View File

@ -246,7 +246,6 @@ define('LAYOUTS', [
'<meta property="og:description" content="' . KEYWORD . '">',
],
'stylesheets' => [
'<link rel="canonical" href="//daemonidc.com/" />',
'<link rel="icon" href="/favicon.ico">',
'<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">',
'<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">',
@ -260,7 +259,7 @@ define('LAYOUTS', [
'<script src="//code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>',
'<script src="//cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>',
'<script src="//cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>',
'<script src="/vendors/tinymce/tinymce/tinymce.js" referrerpolicy="origin"></script>',
'<script src="/vendors/tinymce/tinymce.js" referrerpolicy="origin"></script>',
],
],
'admin' => [

View File

@ -12,9 +12,9 @@ $routes->addPlaceholder('uuid', '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}
//1. app/Filters/AuthFilter.php
//2. Config/Filters.php -> $aliases = ['authFilter' => AuthFilter::class]
$routes->get('/', 'Home::index');
$routes->group('/user', function ($routes) {
$routes->get('login', 'UserController::create_form');
$routes->post('login', 'UserController::create');
$routes->group('/user', function ($routes) {
$routes->get('login', 'UserController::login_form');
$routes->post('login', 'UserController::login');
$routes->get('logout', 'UserController::logout', ['filter' => 'authFilter:user']);
});
$routes->group('cli', ['namespace' => 'App\CLI'], function ($routes) {
@ -24,7 +24,7 @@ $routes->group('cli', ['namespace' => 'App\CLI'], function ($routes) {
});
$routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:manager'], function ($routes) {
$routes->get('/', 'Home::index');
$routes->group('user', function ($routes) {
$routes->group('user', function ($routes) {
$routes->get('/', 'UserController::index');
$routes->get('create', 'UserController::create_form', ['filter' => 'authFilter:master']);
$routes->post('create', 'UserController::create', ['filter' => 'authFilter:master']);

View File

@ -11,6 +11,7 @@ use App\Models\UserModel;
use App\Libraries\MyAuth\LocalAuth;
use App\Libraries\MyAuth\GoogleAuth;
use App\Helpers\UserHelper;
class UserController extends FrontController
{
@ -20,9 +21,8 @@ class UserController extends FrontController
parent::initController($request, $response, $logger);
$this->class_name .= "User";
$this->class_path .= $this->class_name;
$this->view_path = strtolower($this->view_root . $this->class_name);
$this->title = lang("{$this->class_path}.title");
helper($this->class_path);
$this->title = lang("{$this->class_path}.title");
$this->helper = new UserHelper();
}
protected function getModel(): UserModel
{
@ -71,18 +71,30 @@ class UserController extends FrontController
}
private function init(string $action): void
{
$this->action = $action;
$this->fields = ['id', 'passwd'];
$this->field_rules = $this->getModel()->getFieldRules($this->action, $this->fields);
$this->action = $action;
$this->fields = ['id', 'passwd'];
$this->field_rules = $this->getModel()->getFieldRules($this->action, $this->fields);
}
//로그인화면
public function create_form(): RedirectResponse|string
public function login_form(): RedirectResponse|string
{
$this->init('create');
return $this->create_form_procedure();
$this->init('login');
try {
helper(['form']);
$this->create_form_process();
$this->session->keepFlashdata(SESSION_NAMES['RETURN_URL']);
$this->forms = ['attributes' => ['method' => "post",], 'hiddens' => []];
return view(
$this->view_path . "login",
data: ['viewDatas' => $this->getViewDatas()]
);
} catch (\Exception $e) {
log_message("error", $e->getMessage());
return redirect()->to($this->session->getFlashdata(SESSION_NAMES['RETURN_URL']) ?: "/")->with(SESSION_NAMES['RETURN_MSG'], $e->getMessage());
}
}
//로그인처리
public function create(): RedirectResponse|string
public function login(): RedirectResponse|string
{
$this->init('login');
//Transaction Start

View File

@ -30,10 +30,10 @@ class AccountHelper extends CommonHelper
case AccountModel::TITLE:
$form = form_input($field, $value, [
"placeholder" => "예)test@exmaple.com",
"style" =>
"width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"style" =>
"width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
"required" => ""
]);
break;
case 'type':
@ -61,7 +61,7 @@ class AccountHelper extends CommonHelper
current_url() . "/reload/" . $viewDatas['entity']->getParent(),
ICONS["RELOAD"],
[
"class" => "btn btn-sm btn-primary btn-circle",
"class" => "btn btn-sm btn-primary btn-circle",
"target" => "_self",
]
) . " <span class=\"label_auth\">" .
@ -75,7 +75,7 @@ class AccountHelper extends CommonHelper
base_url() . $viewDatas['uri_path'] . 'zone/reload/' . $viewDatas['entity']->getPK(),
ICONS["RELOAD"],
[
"class" => "btn btn-sm btn-primary btn-circle",
"class" => "btn btn-sm btn-primary btn-circle",
"target" => "_self",
]
) . " " .
@ -83,7 +83,7 @@ class AccountHelper extends CommonHelper
base_url() . $viewDatas['uri_path'] . "zone?account_uid=" . $viewDatas['entity']->getPK(),
ICONS["FLAG"],
[
"class" => "btn btn-sm btn-primary btn-circle",
"class" => "btn btn-sm btn-primary btn-circle",
"target" => "_self",
]
) . " <span class=\"label_Accounts\">{$value}</span>";

View File

@ -20,7 +20,7 @@ class AuthHelper extends CommonHelper
"placeholder" => "예)test@example.com",
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"required" => ""
]);
break;
default:

View File

@ -35,26 +35,26 @@ class RecordHelper extends CommonHelper
case RecordModel::TITLE: //host
$form = form_input($field, $value, [
"placeholder" => "예)www.example.com",
"style" =>
"width:200px; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"style" =>
"width:200px; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
"required" => ""
]);
break;
case 'hosts':
$form = form_textarea($field, html_entity_decode($value), [
'rows' => '5',
'rows' => '5',
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"required" => ""
]);
break;
case 'content':
$form = form_input($field, $value, [
"placeholder" => "예)123.123.123.123",
"style" =>
"width:200px; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"style" =>
"width:200px; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
"required" => ""
]);
break;
case "type":
@ -85,7 +85,7 @@ class RecordHelper extends CommonHelper
current_url() . "/reload/" . $viewDatas['entity']->getParent(),
ICONS["RELOAD"],
[
"class" => "btn btn-sm btn-primary btn-circle",
"class" => "btn btn-sm btn-primary btn-circle",
"target" => "_self",
]
) . " " . "<span class=\"label_zones\">{$viewDatas['field_options'][$field][$value]}</span>";

View File

@ -31,32 +31,32 @@ class ZoneHelper extends CommonHelper
$form = form_input($field, $value, [
"placeholder" => "예)exmaple.com",
"style" =>
"width:100%; ::placeholder{color:silver; opacity: 1;}",
"width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"required" => ""
]);
break;
case 'domains':
$form = form_textarea($field, $value, [
'rows' => '5',
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"required" => ""
]);
break;
case 'hosts':
$form = form_textarea($field, $value == DEFAULTS['EMPTY'] ? "@\n*\nm\nwww" : $value, [
'rows' => '5',
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"required" => ""
]);
break;
case 'content':
$form = form_input($field, $value, [
"placeholder" => "예)123.123.123.123",
"style" =>
"width:200px; ::placeholder{color:silver; opacity: 1;}",
"width:200px; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"required" => ""
]);
break;
case "development_mode":

View File

@ -19,16 +19,16 @@ class MapurlHelper extends CommonHelper
"placeholder" => "예)http://old.example.com",
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"required" => ""
]);
break;
case 'newurl':
$form = form_input($field, $value, [
"placeholder" => "예)https://new.example.com",
"style" =>
"width:100%; ::placeholder{color:silver; opacity: 1;}",
"width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"required" => ""
]);
break;
default:

View File

@ -14,12 +14,36 @@ class UserHelper extends CommonHelper
{
$value = $value ?: DEFAULTS['EMPTY'];
switch ($field) {
case 'id':
case UserModel::TITLE:
$form = form_input($field, $value, [
"placeholder" => "예)",
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
"required" => ""
]);
break;
case 'passwd':
case 'confirmpassword':
$form = form_password($field, "", [
"style" => "width:100%;",
"class" => "form-control",
"required" => ""
]);
break;
case 'email':
$form = form_input($field, $value, [
"placeholder" => "예)test@example.com",
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
"required" => ""
]);
break;
case 'mobile':
$form = form_input($field, $value, [
"placeholder" => "예)010-0010-0010",
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control"
]);
break;
case 'role':
@ -42,29 +66,6 @@ class UserHelper extends CommonHelper
);
}
break;
case 'passwd':
$form = form_password($field, "", [
"style" => "width:100%;",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
]);
break;
case 'email':
$form = form_input($field, $value, [
"placeholder" => "예)test@example.com",
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
]);
break;
case 'mobile':
$form = form_input($field, $value, [
"placeholder" => "예)010-0010-0010",
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
"class" => "form-control",
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
]);
break;
default:
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
break;

View File

@ -1,6 +1,6 @@
<?= $this->extend("layouts/{$viewDatas['layout']}/{$viewDatas['action_form']}") ?>
<?= $this->section('content') ?>
<link href="/css/<?= $viewDatas['layout'] ?>/content.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/css/<?= $viewDatas['layout'] ?>/login.css" media="screen" rel="stylesheet" type="text/css" />
<div class="login-container border rounded p-4 shadow">
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
<h2 class="text-center mb-4">로그인</h2>

View File

@ -0,0 +1,17 @@
.login-wrapper {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.login-container {
width: 400px;
height: 400px;
overflow-y: auto;
/* 추가된 스타일 */
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}