cfmgrv4 init...2
This commit is contained in:
parent
e8257f3813
commit
375c6cd48a
@ -3,8 +3,4 @@
|
|||||||
</IfModule>
|
</IfModule>
|
||||||
<IfModule !authz_core_module>
|
<IfModule !authz_core_module>
|
||||||
Deny from all
|
Deny from all
|
||||||
</IfModule>
|
</IfModule>
|
||||||
RewriteEngine On
|
|
||||||
RewriteCond %{REQUEST_FILENAME} !-f
|
|
||||||
RewriteCond %{REQUEST_FILENAME} !-d
|
|
||||||
RewriteRule ^(.*)$ index.php/$1 [L]
|
|
||||||
@ -246,7 +246,6 @@ define('LAYOUTS', [
|
|||||||
'<meta property="og:description" content="' . KEYWORD . '">',
|
'<meta property="og:description" content="' . KEYWORD . '">',
|
||||||
],
|
],
|
||||||
'stylesheets' => [
|
'stylesheets' => [
|
||||||
'<link rel="canonical" href="//daemonidc.com/" />',
|
|
||||||
'<link rel="icon" href="/favicon.ico">',
|
'<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="//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">',
|
'<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="//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/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="//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' => [
|
'admin' => [
|
||||||
|
|||||||
@ -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
|
//1. app/Filters/AuthFilter.php
|
||||||
//2. Config/Filters.php -> $aliases = ['authFilter' => AuthFilter::class]
|
//2. Config/Filters.php -> $aliases = ['authFilter' => AuthFilter::class]
|
||||||
$routes->get('/', 'Home::index');
|
$routes->get('/', 'Home::index');
|
||||||
$routes->group('/user', function ($routes) {
|
$routes->group('/user', function ($routes) {
|
||||||
$routes->get('login', 'UserController::create_form');
|
$routes->get('login', 'UserController::login_form');
|
||||||
$routes->post('login', 'UserController::create');
|
$routes->post('login', 'UserController::login');
|
||||||
$routes->get('logout', 'UserController::logout', ['filter' => 'authFilter:user']);
|
$routes->get('logout', 'UserController::logout', ['filter' => 'authFilter:user']);
|
||||||
});
|
});
|
||||||
$routes->group('cli', ['namespace' => 'App\CLI'], function ($routes) {
|
$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->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:manager'], function ($routes) {
|
||||||
$routes->get('/', 'Home::index');
|
$routes->get('/', 'Home::index');
|
||||||
$routes->group('user', function ($routes) {
|
$routes->group('user', function ($routes) {
|
||||||
$routes->get('/', 'UserController::index');
|
$routes->get('/', 'UserController::index');
|
||||||
$routes->get('create', 'UserController::create_form', ['filter' => 'authFilter:master']);
|
$routes->get('create', 'UserController::create_form', ['filter' => 'authFilter:master']);
|
||||||
$routes->post('create', 'UserController::create', ['filter' => 'authFilter:master']);
|
$routes->post('create', 'UserController::create', ['filter' => 'authFilter:master']);
|
||||||
|
|||||||
@ -11,6 +11,7 @@ use App\Models\UserModel;
|
|||||||
|
|
||||||
use App\Libraries\MyAuth\LocalAuth;
|
use App\Libraries\MyAuth\LocalAuth;
|
||||||
use App\Libraries\MyAuth\GoogleAuth;
|
use App\Libraries\MyAuth\GoogleAuth;
|
||||||
|
use App\Helpers\UserHelper;
|
||||||
|
|
||||||
class UserController extends FrontController
|
class UserController extends FrontController
|
||||||
{
|
{
|
||||||
@ -20,9 +21,8 @@ class UserController extends FrontController
|
|||||||
parent::initController($request, $response, $logger);
|
parent::initController($request, $response, $logger);
|
||||||
$this->class_name .= "User";
|
$this->class_name .= "User";
|
||||||
$this->class_path .= $this->class_name;
|
$this->class_path .= $this->class_name;
|
||||||
$this->view_path = strtolower($this->view_root . $this->class_name);
|
$this->title = lang("{$this->class_path}.title");
|
||||||
$this->title = lang("{$this->class_path}.title");
|
$this->helper = new UserHelper();
|
||||||
helper($this->class_path);
|
|
||||||
}
|
}
|
||||||
protected function getModel(): UserModel
|
protected function getModel(): UserModel
|
||||||
{
|
{
|
||||||
@ -71,18 +71,30 @@ class UserController extends FrontController
|
|||||||
}
|
}
|
||||||
private function init(string $action): void
|
private function init(string $action): void
|
||||||
{
|
{
|
||||||
$this->action = $action;
|
$this->action = $action;
|
||||||
$this->fields = ['id', 'passwd'];
|
$this->fields = ['id', 'passwd'];
|
||||||
$this->field_rules = $this->getModel()->getFieldRules($this->action, $this->fields);
|
$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');
|
$this->init('login');
|
||||||
return $this->create_form_procedure();
|
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');
|
$this->init('login');
|
||||||
//Transaction Start
|
//Transaction Start
|
||||||
|
|||||||
@ -30,10 +30,10 @@ class AccountHelper extends CommonHelper
|
|||||||
case AccountModel::TITLE:
|
case AccountModel::TITLE:
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, [
|
||||||
"placeholder" => "예)test@exmaple.com",
|
"placeholder" => "예)test@exmaple.com",
|
||||||
"style" =>
|
"style" =>
|
||||||
"width:100%; ::placeholder{color:silver; opacity: 1;}",
|
"width:100%; ::placeholder{color:silver; opacity: 1;}",
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'type':
|
case 'type':
|
||||||
@ -61,7 +61,7 @@ class AccountHelper extends CommonHelper
|
|||||||
current_url() . "/reload/" . $viewDatas['entity']->getParent(),
|
current_url() . "/reload/" . $viewDatas['entity']->getParent(),
|
||||||
ICONS["RELOAD"],
|
ICONS["RELOAD"],
|
||||||
[
|
[
|
||||||
"class" => "btn btn-sm btn-primary btn-circle",
|
"class" => "btn btn-sm btn-primary btn-circle",
|
||||||
"target" => "_self",
|
"target" => "_self",
|
||||||
]
|
]
|
||||||
) . " <span class=\"label_auth\">" .
|
) . " <span class=\"label_auth\">" .
|
||||||
@ -75,7 +75,7 @@ class AccountHelper extends CommonHelper
|
|||||||
base_url() . $viewDatas['uri_path'] . 'zone/reload/' . $viewDatas['entity']->getPK(),
|
base_url() . $viewDatas['uri_path'] . 'zone/reload/' . $viewDatas['entity']->getPK(),
|
||||||
ICONS["RELOAD"],
|
ICONS["RELOAD"],
|
||||||
[
|
[
|
||||||
"class" => "btn btn-sm btn-primary btn-circle",
|
"class" => "btn btn-sm btn-primary btn-circle",
|
||||||
"target" => "_self",
|
"target" => "_self",
|
||||||
]
|
]
|
||||||
) . " " .
|
) . " " .
|
||||||
@ -83,7 +83,7 @@ class AccountHelper extends CommonHelper
|
|||||||
base_url() . $viewDatas['uri_path'] . "zone?account_uid=" . $viewDatas['entity']->getPK(),
|
base_url() . $viewDatas['uri_path'] . "zone?account_uid=" . $viewDatas['entity']->getPK(),
|
||||||
ICONS["FLAG"],
|
ICONS["FLAG"],
|
||||||
[
|
[
|
||||||
"class" => "btn btn-sm btn-primary btn-circle",
|
"class" => "btn btn-sm btn-primary btn-circle",
|
||||||
"target" => "_self",
|
"target" => "_self",
|
||||||
]
|
]
|
||||||
) . " <span class=\"label_Accounts\">{$value}</span>";
|
) . " <span class=\"label_Accounts\">{$value}</span>";
|
||||||
|
|||||||
@ -20,7 +20,7 @@ class AuthHelper extends CommonHelper
|
|||||||
"placeholder" => "예)test@example.com",
|
"placeholder" => "예)test@example.com",
|
||||||
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@ -35,26 +35,26 @@ class RecordHelper extends CommonHelper
|
|||||||
case RecordModel::TITLE: //host
|
case RecordModel::TITLE: //host
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, [
|
||||||
"placeholder" => "예)www.example.com",
|
"placeholder" => "예)www.example.com",
|
||||||
"style" =>
|
"style" =>
|
||||||
"width:200px; ::placeholder{color:silver; opacity: 1;}",
|
"width:200px; ::placeholder{color:silver; opacity: 1;}",
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'hosts':
|
case 'hosts':
|
||||||
$form = form_textarea($field, html_entity_decode($value), [
|
$form = form_textarea($field, html_entity_decode($value), [
|
||||||
'rows' => '5',
|
'rows' => '5',
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'content':
|
case 'content':
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, [
|
||||||
"placeholder" => "예)123.123.123.123",
|
"placeholder" => "예)123.123.123.123",
|
||||||
"style" =>
|
"style" =>
|
||||||
"width:200px; ::placeholder{color:silver; opacity: 1;}",
|
"width:200px; ::placeholder{color:silver; opacity: 1;}",
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case "type":
|
case "type":
|
||||||
@ -85,7 +85,7 @@ class RecordHelper extends CommonHelper
|
|||||||
current_url() . "/reload/" . $viewDatas['entity']->getParent(),
|
current_url() . "/reload/" . $viewDatas['entity']->getParent(),
|
||||||
ICONS["RELOAD"],
|
ICONS["RELOAD"],
|
||||||
[
|
[
|
||||||
"class" => "btn btn-sm btn-primary btn-circle",
|
"class" => "btn btn-sm btn-primary btn-circle",
|
||||||
"target" => "_self",
|
"target" => "_self",
|
||||||
]
|
]
|
||||||
) . " " . "<span class=\"label_zones\">{$viewDatas['field_options'][$field][$value]}</span>";
|
) . " " . "<span class=\"label_zones\">{$viewDatas['field_options'][$field][$value]}</span>";
|
||||||
|
|||||||
@ -31,32 +31,32 @@ class ZoneHelper extends CommonHelper
|
|||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, [
|
||||||
"placeholder" => "예)exmaple.com",
|
"placeholder" => "예)exmaple.com",
|
||||||
"style" =>
|
"style" =>
|
||||||
"width:100%; ::placeholder{color:silver; opacity: 1;}",
|
"width:100%; ::placeholder{color:silver; opacity: 1;}",
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'domains':
|
case 'domains':
|
||||||
$form = form_textarea($field, $value, [
|
$form = form_textarea($field, $value, [
|
||||||
'rows' => '5',
|
'rows' => '5',
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'hosts':
|
case 'hosts':
|
||||||
$form = form_textarea($field, $value == DEFAULTS['EMPTY'] ? "@\n*\nm\nwww" : $value, [
|
$form = form_textarea($field, $value == DEFAULTS['EMPTY'] ? "@\n*\nm\nwww" : $value, [
|
||||||
'rows' => '5',
|
'rows' => '5',
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'content':
|
case 'content':
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, [
|
||||||
"placeholder" => "예)123.123.123.123",
|
"placeholder" => "예)123.123.123.123",
|
||||||
"style" =>
|
"style" =>
|
||||||
"width:200px; ::placeholder{color:silver; opacity: 1;}",
|
"width:200px; ::placeholder{color:silver; opacity: 1;}",
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case "development_mode":
|
case "development_mode":
|
||||||
|
|||||||
@ -19,16 +19,16 @@ class MapurlHelper extends CommonHelper
|
|||||||
"placeholder" => "예)http://old.example.com",
|
"placeholder" => "예)http://old.example.com",
|
||||||
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'newurl':
|
case 'newurl':
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, [
|
||||||
"placeholder" => "예)https://new.example.com",
|
"placeholder" => "예)https://new.example.com",
|
||||||
"style" =>
|
"style" =>
|
||||||
"width:100%; ::placeholder{color:silver; opacity: 1;}",
|
"width:100%; ::placeholder{color:silver; opacity: 1;}",
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
(strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : ""
|
"required" => ""
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@ -14,12 +14,36 @@ class UserHelper extends CommonHelper
|
|||||||
{
|
{
|
||||||
$value = $value ?: DEFAULTS['EMPTY'];
|
$value = $value ?: DEFAULTS['EMPTY'];
|
||||||
switch ($field) {
|
switch ($field) {
|
||||||
|
case 'id':
|
||||||
case UserModel::TITLE:
|
case UserModel::TITLE:
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, [
|
||||||
"placeholder" => "예)",
|
"placeholder" => "예)",
|
||||||
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
||||||
"class" => "form-control",
|
"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;
|
break;
|
||||||
case 'role':
|
case 'role':
|
||||||
@ -42,29 +66,6 @@ class UserHelper extends CommonHelper
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
|
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?= $this->extend("layouts/{$viewDatas['layout']}/{$viewDatas['action_form']}") ?>
|
<?= $this->extend("layouts/{$viewDatas['layout']}/{$viewDatas['action_form']}") ?>
|
||||||
<?= $this->section('content') ?>
|
<?= $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">
|
<div class="login-container border rounded p-4 shadow">
|
||||||
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
|
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
|
||||||
<h2 class="text-center mb-4">로그인</h2>
|
<h2 class="text-center mb-4">로그인</h2>
|
||||||
17
public/css/front/login.css
Normal file
17
public/css/front/login.css
Normal 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;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user