You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
371 lines
16 KiB
371 lines
16 KiB
<?php
|
|
// ini_set('display_errors', 'off');
|
|
|
|
// 維護專用
|
|
// include "maintenance.php";
|
|
// $maintenancePeriod = "2023-11-17 15:30 AM 至 17:30 PM";
|
|
// $maintenancePage = new MaintenancePage($maintenancePeriod);
|
|
// $maintenancePage->displayPage();
|
|
|
|
function CreateToken($user_id, $user_name)
|
|
{
|
|
date_default_timezone_set("Asia/Taipei");
|
|
$start_time = date("Y-m-d H:i:s");
|
|
$end_time = date('Y-m-d H:i:s', strtotime('+24 hour')); #设定24小时
|
|
$info = $user_id . '.' . base64_encode(urlencode($user_name)) . '.' . $start_time . '.' . $end_time; //设置token过期时间为一天
|
|
$encryption_code = "MASADA!^***";
|
|
//根据以上信息信息生成签名(密钥为 SIGNATURE 自定义全局常量)
|
|
$signature = hash_hmac('md5', $info, $encryption_code);
|
|
//最后将这两部分拼接起来,得到最终的Token字符串
|
|
return $token = $info . '.' . $signature;
|
|
}
|
|
|
|
|
|
require_once dirname(__FILE__) . "/../mkt/database.php";
|
|
include "fun_global.php";
|
|
if (isset($_REQUEST["function_name"])) {
|
|
$function_name = $_REQUEST["function_name"];
|
|
$function_flag = True;
|
|
} else {
|
|
$function_name = "";
|
|
$function_flag = False;
|
|
}
|
|
/**
|
|
* 連線T8 MSSQL
|
|
*/
|
|
try {
|
|
$conn = new PDO("sqlsrv:Server=erp.masada.com.tw;Database=T8MASADA", "masada", "ztPmPP!HRoV6SL3E");
|
|
if ($conn) {
|
|
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
}
|
|
} catch (PDOException $e) {
|
|
//echo "fail";
|
|
//echo $e->getMessage();
|
|
}
|
|
|
|
|
|
|
|
/*****************************
|
|
* global:
|
|
* $token
|
|
* $token_link 含token的連結
|
|
* $user_id 使用者ID
|
|
* $user_name 使用者姓名
|
|
* $login_dt 登入時間
|
|
* $user_auth 使用權限:1,2,3
|
|
*****************************/
|
|
$token = isset($_REQUEST["token"]) ? $_REQUEST["token"] : "";
|
|
|
|
if (count(explode(".", $token)) > 1) {
|
|
$token_link = "token=" . $_REQUEST["token"];
|
|
list($user_id, $enc_user_name, $login_dt) = explode(".", $token);
|
|
$user_name = urldecode(base64_decode($enc_user_name));
|
|
} else {
|
|
$referrer = isset($_GET['referer']) ? $_GET['referer'] : "";
|
|
date_default_timezone_set('Asia/Taipei');
|
|
$currentTimestamp = time();
|
|
$hashReferer = "";
|
|
for ($i = -3; $i <= 3; $i++) {
|
|
$modifiedTimestamp = strtotime("$i seconds", $currentTimestamp);
|
|
$formattedTime = date("Y-m-d H:i:s", $modifiedTimestamp);
|
|
$hashReferer .= md5("https://bpm.masada.com.twMasada@2023" . $formattedTime);
|
|
}
|
|
if (strpos($hashReferer, $referrer)) {
|
|
$user_id = !empty($_GET["employee_no"]) ? $_GET["employee_no"] : $user_id;
|
|
$login_dt = !empty($_GET["timestamp"]) ? substr($_GET["timestamp"], 0, 10) : $login_dt;
|
|
$login_dt = date('Y-m-d H:i:s', $login_dt);
|
|
// 藍凌超連結過來 token 設置永久
|
|
$login_dt = (date("Y") + 100) . "-12-31 23:59:59";
|
|
$user_name = accountid2name()[$user_id];
|
|
$token = CreateToken($user_id, $user_name);
|
|
$token_link = "token=" . $token;
|
|
} else {
|
|
echo "非法訪問!";
|
|
echo "<script>location.href='/wms/login.php'</script>";
|
|
}
|
|
}
|
|
|
|
include 'IncludeCommon.php';
|
|
$includecommon = new IncludeCommon();
|
|
$accounttype = getAccounttype($link, $user_id);
|
|
$login_json = null;
|
|
if (strlen($accounttype) != 0) {
|
|
$jsonres['menu'] = $includecommon->menu_v3($user_id, $accounttype);
|
|
$login_json = json_encode($jsonres, JSON_UNESCAPED_UNICODE);
|
|
}
|
|
?>
|
|
<script>
|
|
res = eval("(" + JSON.stringify(<?php echo $login_json; ?>) + ")");
|
|
window.localStorage.setItem("menu_<?php echo $user_id; ?>", res.menu);
|
|
</script>
|
|
<?php
|
|
|
|
// echo $token;
|
|
// exit;
|
|
// uesr可操作權限
|
|
$user_auth = check_user_permission($user_id, $token);
|
|
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
<title>Masada後臺系統</title>
|
|
<link rel="stylesheet" href="<?php dirname(__DIR__); ?>/wms/css/styles.css" />
|
|
<link rel="stylesheet" href="<?php dirname(__DIR__); ?>/wms/css/bootstrap.min.css">
|
|
<style>
|
|
a svg {
|
|
display: inline-block;
|
|
vertical-align: text-top;
|
|
}
|
|
|
|
.nav .icon {
|
|
display: none;
|
|
}
|
|
|
|
input:read-only {
|
|
background-color: #eee5e5;
|
|
}
|
|
|
|
@media screen and (max-width: 992px) {
|
|
.header-right {
|
|
float: left !important;
|
|
margin-top: -40px;
|
|
margin-left: -15px;
|
|
}
|
|
|
|
/*.nav.navbar-nav a:not(:last-child), .dropdown {*/
|
|
.nav.navbar-nav a,
|
|
.dropdown {
|
|
display: none;
|
|
}
|
|
|
|
.nav.navbar-nav .icon {
|
|
color: #fff;
|
|
display: block;
|
|
position: fixed;
|
|
right: 0;
|
|
top: 0;
|
|
}
|
|
}
|
|
|
|
@media screen and (max-width: 992px) {
|
|
.nav.navbar-nav.responsive {
|
|
position: relative;
|
|
}
|
|
|
|
.nav.navbar-nav.responsive a.icon {
|
|
position: fixed;
|
|
right: 0;
|
|
top: 0;
|
|
}
|
|
|
|
.nav.navbar-nav.responsive li {
|
|
float: none;
|
|
display: block;
|
|
text-align: left;
|
|
}
|
|
|
|
.nav.navbar-nav.responsive .dropdown {
|
|
float: none;
|
|
}
|
|
|
|
.nav.navbar-nav.responsive .dropdown li {
|
|
position: relative;
|
|
}
|
|
|
|
.nav.navbar-nav.responsive .dropdown a {
|
|
display: block;
|
|
width: 100%;
|
|
text-align: left;
|
|
top: -10px;
|
|
line-height: 10px;
|
|
}
|
|
|
|
.navbar-inverse .navbar-nav .open .dropdown-menu>li>a {
|
|
color: #000;
|
|
}
|
|
|
|
.nav.navbar-nav.responsive .dropdown ul {
|
|
width: 200px;
|
|
background-color: #fff;
|
|
}
|
|
|
|
.navbar-nav .open .dropdown-menu {
|
|
position: absolute;
|
|
}
|
|
}
|
|
|
|
@media screen and (max-width: 992px) {
|
|
#member_content_phone {
|
|
display: inline-grid !important;
|
|
}
|
|
}
|
|
</style>
|
|
<script src="<?php dirname(__DIR__); ?>/wms/css/jquery.min.js"></script>
|
|
<script src="<?php dirname(__DIR__); ?>/wms/css/bootstrap.min.js"></script>
|
|
<script src="<?php dirname(__DIR__); ?>/wms/css/jquery.dataTables.min.js"></script>
|
|
<script src="<?php dirname(__DIR__); ?>/wms/css/dataTables.bootstrap4.min.js"></script>
|
|
<script src="<?php dirname(__DIR__); ?>/wms/css/function.js"></script>
|
|
<script>
|
|
$(document).ready(function() {
|
|
if ($('#table_index').length !== 0) $('#table_index').DataTable();
|
|
|
|
if (window.localStorage) {
|
|
//var tokendata=window.localStorage.getItem("token");
|
|
//var namedata=window.localStorage.getItem("name");
|
|
//var logindata=window.localStorage.getItem("login");
|
|
var menudata = window.localStorage.getItem("menu_<?php echo $user_id; ?>");
|
|
//if(tokendata==null || namedata==null || menudata==null){
|
|
if (menudata == null) {
|
|
window.location.href = "<?php dirname(__DIR__); ?>/wms/login.php";
|
|
}
|
|
} else {
|
|
// var tokendata=$.cookie("token");
|
|
}
|
|
|
|
|
|
var url = "<?php dirname(__DIR__); ?>/wms/headerapi.php";
|
|
$.ajax({
|
|
method: 'post',
|
|
url: url,
|
|
data: {
|
|
token: '<?php echo $token; ?>'
|
|
},
|
|
success: function(data) {
|
|
var res = eval('(' + data + ')');
|
|
//console.log(res);
|
|
if (res.code != '200') {
|
|
window.location.href = '<?php dirname(__DIR__); ?>/wms/login.php?errno=3';
|
|
}
|
|
}
|
|
});
|
|
|
|
var mdata = JSON.parse(menudata);
|
|
var menuStr = '';
|
|
var checkAuth = 0;
|
|
var m = 1;
|
|
for (var i in mdata) {
|
|
menuStr += '<li class="dropdown">';
|
|
menuStr += '<a class="dropdown-toggle" data-toggle="dropdown" href="#">' + i;
|
|
menuStr += '<span class="caret"></span></a>';
|
|
menuStr += '<ul class="dropdown-menu">';
|
|
for (var j in mdata[i]) {
|
|
for (var k in mdata[i][j]) {
|
|
menuStr += '<li';
|
|
if (k == '<?php echo $function_name; ?>') menuStr += " class='active'";
|
|
menuStr += '><a href="<?php dirname(__DIR__); ?>/wms/' + mdata[i][j][k] + '?function_name=' + k + '&<?php echo $token_link; ?>"';
|
|
if (k.indexOf('open-') !== -1) menuStr += ' target="_blank"';
|
|
menuStr += '>' + j + '</a></li>';
|
|
if (mdata[i][j][k] == window.location.pathname) checkAuth = 1;
|
|
m++;
|
|
}
|
|
}
|
|
menuStr += '</ul>';
|
|
menuStr += '</li>';
|
|
}
|
|
menuStr += '<li><a href="javascript:void(0);" class="icon" onclick="myFunction()"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-3x3-gap-fill" viewBox="0 0 16 16"><path d="M1 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V2zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V2zM1 7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V7zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V7zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V7zM1 12a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-2zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-2zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2z"/></svg></a></li>';
|
|
/*
|
|
if (checkAuth == 0 && ('/wms/custom-create.php' != window.location.pathname)) {
|
|
window.location.href='login.php?errno=4';
|
|
}
|
|
*/
|
|
$('#menu_content').html(menuStr);
|
|
|
|
$('.dropdown a').on('click', function() {
|
|
$('.dropdown').removeClass('open');
|
|
});
|
|
});
|
|
|
|
function myFunction() {
|
|
var x = document.getElementById("menu_content");
|
|
if (x.className === "nav navbar-nav") {
|
|
x.className += " responsive";
|
|
} else {
|
|
x.className = "nav navbar-nav";
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<nav class="navbar navbar-inverse">
|
|
<div class="container-fluid">
|
|
<div class="navbar-header">
|
|
<a class="navbar-brand" href="<?php dirname(__DIR__); ?>/wms/index.php?<?php echo $token_link; ?>">Masada</a>
|
|
</div>
|
|
<ul class="nav navbar-nav" id="menu_content">
|
|
</ul>
|
|
<!--
|
|
<div class="topnav" id="myTopnav">
|
|
<a href="#home" class="active">Home</a>
|
|
<a href="#news">News</a>
|
|
<a href="#contact">Contact</a>
|
|
<div class="dropdown">
|
|
<button class="dropbtn">Dropdown
|
|
<span class="caret"></span></a>
|
|
</button>
|
|
<div class="dropdown-content">
|
|
<a href="#">Link 1</a>
|
|
<a href="#">Link 2</a>
|
|
<a href="#">Link 3</a>
|
|
</div>
|
|
</div>
|
|
<a href="#about">About</a>
|
|
<a href="javascript:void(0);" style="font-size:15px;" class="icon" onclick="myFunction()">☰</a>
|
|
</div>
|
|
-->
|
|
|
|
<div class="header-right">
|
|
<ul class="nav navbar-nav" id="member_content">
|
|
<li class="dropdown d-lg-none">
|
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#" style='padding:0px;padding-top:5px;'>
|
|
<?php echo $user_name . "(" . $user_id . ")" . "<br/>" . $login_dt; ?>
|
|
<span class="caret"></span>
|
|
</a>
|
|
<ul class="dropdown-menu">
|
|
<li>
|
|
<a style="color:#000;" href="<?php dirname(__DIR__); ?>/wms/change-password.php?<?php echo $token_link; ?>" class="navbar-brand" style="font-size:14px;line-height:34px;">
|
|
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<g id="SVGRepo_bgCarrier" stroke-width="0"></g>
|
|
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g>
|
|
<g id="SVGRepo_iconCarrier">
|
|
<rect width="24" height="24" fill="white"></rect>
|
|
<path d="M2.5 12C2.5 12.2761 2.72386 12.5 3 12.5C3.27614 12.5 3.5 12.2761 3.5 12H2.5ZM3.5 12C3.5 7.30558 7.30558 3.5 12 3.5V2.5C6.75329 2.5 2.5 6.75329 2.5 12H3.5ZM12 3.5C15.3367 3.5 18.2252 5.4225 19.6167 8.22252L20.5122 7.77748C18.9583 4.65062 15.7308 2.5 12 2.5V3.5Z" fill="#000000"></path>
|
|
<path d="M20.4716 2.42157V8.07843H14.8147" stroke="#000000" stroke-linecap="round" stroke-linejoin="round"></path>
|
|
<path d="M21.5 12C21.5 11.7239 21.2761 11.5 21 11.5C20.7239 11.5 20.5 11.7239 20.5 12L21.5 12ZM20.5 12C20.5 16.6944 16.6944 20.5 12 20.5L12 21.5C17.2467 21.5 21.5 17.2467 21.5 12L20.5 12ZM12 20.5C8.66333 20.5 5.77477 18.5775 4.38328 15.7775L3.48776 16.2225C5.04168 19.3494 8.26923 21.5 12 21.5L12 20.5Z" fill="#000000"></path>
|
|
<path d="M3.52844 21.5784L3.52844 15.9216L9.18529 15.9216" stroke="#000000" stroke-linecap="round" stroke-linejoin="round"></path>
|
|
</g>
|
|
</svg>
|
|
更改密碼
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a style="color:#000;" href="<?php dirname(__DIR__); ?>/wms/logout.php?<?php echo $token_link; ?>" class="navbar-brand" style="font-size:14px;line-height:34px;">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-right" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M10 12.5a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v2a.5.5 0 0 0 1 0v-2A1.5 1.5 0 0 0 9.5 2h-8A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-2a.5.5 0 0 0-1 0v2z" />
|
|
<path fill-rule="evenodd" d="M15.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L14.293 7.5H5.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z" />
|
|
</svg>
|
|
登出
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<div id="member_content_phone" style="display:none">
|
|
<span class="navbar-brand">
|
|
<h5><?php echo $user_name . "(" . $user_id . ")" . $login_dt; ?></h5>
|
|
</span>
|
|
<a href="<?php dirname(__DIR__); ?>/wms/change-password.php?<?php echo $token_link; ?>" class="navbar-brand" style="font-size:14px;line-height:34px;">
|
|
更改密碼</a>
|
|
<a href="<?php dirname(__DIR__); ?>/wms/logout.php?<?php echo $token_link; ?>" class="navbar-brand" style="font-size:14px;line-height:34px;"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-right" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M10 12.5a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v2a.5.5 0 0 0 1 0v-2A1.5 1.5 0 0 0 9.5 2h-8A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-2a.5.5 0 0 0-1 0v2z" />
|
|
<path fill-rule="evenodd" d="M15.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L14.293 7.5H5.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z" />
|
|
</svg>
|
|
登出</a>
|
|
</div>
|
|
</div>
|
|
</nav>
|