Merge branch 'release/v27.0.2.OS'
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -22,4 +22,4 @@ docker/testing/db_data
|
|||||||
test/frontend/cypress/videos/*
|
test/frontend/cypress/videos/*
|
||||||
test/frontend/cypress/screenshots/*
|
test/frontend/cypress/screenshots/*
|
||||||
test/frontend/node_modules/*
|
test/frontend/node_modules/*
|
||||||
|
!deployment/vagrant/ssl/icehrm.key
|
||||||
|
|||||||
25
Vagrantfile
vendored
Normal file
25
Vagrantfile
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
config.vm.box = "icehrm/icehrm"
|
||||||
|
config.vm.box_version = "1.0.0"
|
||||||
|
config.vm.network "private_network", ip: "192.168.10.12"
|
||||||
|
config.vm.synced_folder ".", "/vagrant", type: "nfs"
|
||||||
|
config.vm.synced_folder "./deployment/vagrant/sites-available", "/etc/nginx/sites-enabled", type: "nfs"
|
||||||
|
config.vm.synced_folder "./deployment/vagrant/ssl", "/etc/nginx/ssl", type: "nfs"
|
||||||
|
|
||||||
|
config.vm.provider "virtualbox" do |vb|
|
||||||
|
vb.memory = "1024"
|
||||||
|
vb.cpus = "2"
|
||||||
|
vb.name = "icehrm-os.test"
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.provision "shell", inline: <<-SHELL
|
||||||
|
sudo service nginx restart
|
||||||
|
SHELL
|
||||||
|
|
||||||
|
config.vm.hostname = "icehrm.test"
|
||||||
|
|
||||||
|
config.hostsupdater.aliases = [
|
||||||
|
"icehrm.test"
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
@@ -13,20 +13,20 @@ $photoAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendan
|
|||||||
$mapAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance: Request Attendance Location on Mobile');
|
$mapAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance: Request Attendance Location on Mobile');
|
||||||
?><div class="span9">
|
?><div class="span9">
|
||||||
|
|
||||||
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
|
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
|
||||||
<li class="active"><a id="tabAttendance" href="#tabPageAttendance"><?=t('Monitor Attendance')?></a></li>
|
<li class="active"><a id="tabAttendance" href="#tabPageAttendance"><?=t('Monitor Attendance')?></a></li>
|
||||||
<li class=""><a id="tabAttendanceStatus" href="#tabPageAttendanceStatus"><?=t('Current Clocked In Status')?></a></li>
|
<li class=""><a id="tabAttendanceStatus" href="#tabPageAttendanceStatus"><?=t('Current Clocked In Status')?></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
<div class="tab-pane active" id="tabPageAttendance">
|
<div class="tab-pane active" id="tabPageAttendance">
|
||||||
<div id="Attendance" class="reviewBlock" data-content="List" style="padding-left:5px;">
|
<div id="Attendance" class="reviewBlock" data-content="List" style="padding-left:5px;">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="AttendanceForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
|
<div id="AttendanceForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane" id="tabPageAttendanceStatus">
|
<div class="tab-pane" id="tabPageAttendanceStatus">
|
||||||
<div id="AttendanceStatus" class="reviewBlock" data-content="List" style="padding-left:5px;">
|
<div id="AttendanceStatus" class="reviewBlock" data-content="List" style="padding-left:5px;">
|
||||||
|
|
||||||
@@ -36,20 +36,20 @@ $mapAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal" id="attendancePhotoModel" tabindex="-1" role="dialog" aria-labelledby="messageModelLabel" aria-hidden="true">
|
<div class="modal" id="attendancePhotoModel" tabindex="-1" role="dialog" aria-labelledby="messageModelLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><li class="fa fa-times"/></button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><li class="fa fa-times"/></button>
|
||||||
<h3 style="font-size: 17px;">Attendance Details</h3>
|
<h3 style="font-size: 17px;">Attendance Details</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="row" style="background: #f3f4f5; padding: 10px;text-align: center;">
|
<div class="row" style="background: #f3f4f5; padding: 10px;text-align: center;">
|
||||||
<h4 id="attendnaceCanvasEmp"></h4>
|
<h4 id="attendnaceCanvasEmp"></h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="row" style="background: #f3f4f5; padding: 10px;">
|
<div class="row" style="background: #f3f4f5; padding: 10px;">
|
||||||
<div id="attendnaceCanvasPunchInTimeWraper" class="col-sm-6" style="text-align: center;">
|
<div id="attendnaceCanvasPunchInTimeWraper" class="col-sm-6" style="text-align: center;">
|
||||||
<b>In: </b><span id="attendnaceCanvasPunchInTime"></span>
|
<b>In: </b><span id="attendnaceCanvasPunchInTime"></span>
|
||||||
@@ -62,14 +62,14 @@ $mapAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance
|
|||||||
IP Address: <span id="punchOutIp"></span>
|
IP Address: <span id="punchOutIp"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="attendancePhoto" class="row" style="background: #f3f4f5; padding: 10px;display:none;">
|
<div id="attendancePhoto" class="row" style="background: #f3f4f5; padding: 10px;display:none;">
|
||||||
<div class="col-sm-6" style="text-align: center;">
|
<div id="attendnaceCanvasInWrapper" class="col-sm-6" style="text-align: center;">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6" style="text-align: center;">
|
<div id="attendnaceCanvasOutWrapper" class="col-sm-6" style="text-align: center;">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="attendanceMap" class="row" style="background: #f3f4f5; padding: 10px;display:none;">
|
<div id="attendanceMap" class="row" style="background: #f3f4f5; padding: 10px;display:none;">
|
||||||
<div id="attendnaceMapCanvasInWrapper" class="col-sm-6" style="text-align: center;">
|
<div id="attendnaceMapCanvasInWrapper" class="col-sm-6" style="text-align: center;">
|
||||||
|
|
||||||
@@ -85,21 +85,21 @@ $mapAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance
|
|||||||
<span>Location: <span id="punchOutLocation"></span></span>
|
<span>Location: <span id="punchOutLocation"></span></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var modJsList = new Array();
|
var modJsList = new Array();
|
||||||
modJsList['tabAttendance'] = new AttendanceAdapter('Attendance','Attendance','','in_time desc');
|
modJsList['tabAttendance'] = new AttendanceAdapter('Attendance','Attendance','','in_time desc');
|
||||||
modJsList['tabAttendance'].setRemoteTable(true);
|
modJsList['tabAttendance'].setRemoteTable(true);
|
||||||
modJsList['tabAttendance'].setPhotoAttendance(<?=$photoAttendance == '1' || $mapAttendance == '1'?>);
|
modJsList['tabAttendance'].setPhotoAttendance(<?=$photoAttendance == '1' || $mapAttendance == '1'?>);
|
||||||
modJsList['tabAttendanceStatus'] = new AttendanceStatusAdapter('AttendanceStatus','AttendanceStatus','','');
|
modJsList['tabAttendanceStatus'] = new AttendanceStatusAdapter('AttendanceStatus','AttendanceStatus','','');
|
||||||
modJsList['tabAttendanceStatus'].setShowAddNew(false);
|
modJsList['tabAttendanceStatus'].setShowAddNew(false);
|
||||||
var modJs = modJsList['tabAttendance'];
|
var modJs = modJsList['tabAttendance'];
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<?php include APP_BASE_PATH.'footer.php';?>
|
<?php include APP_BASE_PATH.'footer.php';?>
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ if(!defined('HOME_LINK_OTHERS')){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Version
|
//Version
|
||||||
define('VERSION', '27.0.1.OS');
|
define('VERSION', '27.0.2.OS');
|
||||||
define('CACHE_VALUE', '27.0.1.OS');
|
define('CACHE_VALUE', '27.0.2.OS');
|
||||||
define('VERSION_NUMBER', '270001');
|
define('VERSION_NUMBER', '270002');
|
||||||
define('VERSION_DATE', '29/05/2020');
|
define('VERSION_DATE', '10/06/2020');
|
||||||
|
|
||||||
if(!defined('CONTACT_EMAIL')){define('CONTACT_EMAIL','icehrm@gamonoid.com');}
|
if(!defined('CONTACT_EMAIL')){define('CONTACT_EMAIL','icehrm@gamonoid.com');}
|
||||||
if(!defined('KEY_PREFIX')){define('KEY_PREFIX','IceHrm');}
|
if(!defined('KEY_PREFIX')){define('KEY_PREFIX','IceHrm');}
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
namespace Classes;
|
namespace Classes;
|
||||||
|
|
||||||
class DomainAwareInputCleaner
|
class DomainAwareInputCleaner
|
||||||
@@ -92,6 +90,6 @@ class DomainAwareInputCleaner
|
|||||||
|
|
||||||
private function isValidFilterValue($input)
|
private function isValidFilterValue($input)
|
||||||
{
|
{
|
||||||
return !!preg_match('/^[-_: \p{L}]+$/u', $input);
|
return !!preg_match('/^[-_: \d\p{L}]+$/u', $input);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
50
deployment/vagrant/sites-available/default
Normal file
50
deployment/vagrant/sites-available/default
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
listen 443 ssl;
|
||||||
|
listen [::]:443 ssl;
|
||||||
|
|
||||||
|
|
||||||
|
root /vagrant;
|
||||||
|
|
||||||
|
# Add index.php to the list if you are using PHP
|
||||||
|
index index.html index.php;
|
||||||
|
|
||||||
|
server_name icehrm.test;
|
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/ssl/icehrm.crt;
|
||||||
|
ssl_certificate_key /etc/nginx/ssl/icehrm.key;
|
||||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
# First attempt to serve request as file, then
|
||||||
|
# as directory, then fall back to displaying a 404.
|
||||||
|
try_files $uri $uri/ =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /core/ {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
|
||||||
|
# pass PHP scripts to FastCGI server
|
||||||
|
#
|
||||||
|
location ~ \.php$ {
|
||||||
|
include snippets/fastcgi-php.conf;
|
||||||
|
|
||||||
|
# With php-fpm (or other unix sockets):
|
||||||
|
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
|
||||||
|
# # With php-cgi (or other tcp sockets):
|
||||||
|
# fastcgi_pass 127.0.0.1:9000;
|
||||||
|
}
|
||||||
|
|
||||||
|
# deny access to .htaccess files, if Apache's document root
|
||||||
|
# concurs with nginx's one
|
||||||
|
#
|
||||||
|
location ~ /\.ht {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /app/api/ {
|
||||||
|
try_files $uri /app/api/index.php?/$uri&$args;
|
||||||
|
}
|
||||||
|
}
|
||||||
18
deployment/vagrant/ssl/icehrm.crt
Normal file
18
deployment/vagrant/ssl/icehrm.crt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIC6zCCAdOgAwIBAgIJAOVbCZJCEmMKMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
|
||||||
|
BAMMC2ljZWhybS50ZXN0MB4XDTIwMDYwOTE4MDMxM1oXDTMwMDYwNzE4MDMxM1ow
|
||||||
|
FjEUMBIGA1UEAwwLaWNlaHJtLnRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
||||||
|
ggEKAoIBAQDOTSWgFFHOSvoxGGuRfOUZh1Ihu1S1f+q8fJXSmOUhqqe8UDFVcyFW
|
||||||
|
INoc/cUYoheK3DwVDBOTtrOBr20mq/tNoDyjNELGRVC7UttGUoEG7KSjHpb7xkJ5
|
||||||
|
ycZf09gTZ/xB/joV6AIkw9YMyqvKEq3s9cfHLr+YCOz3ukPQm8NQ3Hthc+iWHgMP
|
||||||
|
6Wypapoe+1OV249G5xJjWukQ8GWB7vmCLWpv+u8WgNs7qDV4M3w5v72gBROk5r4h
|
||||||
|
M8LBFX78eu+YGYxsQB2i/Z+7dWCYtu7LwsrCmc2Ek4HEo0/RP++Ql/FL0J2JlRjb
|
||||||
|
a2I0MwEN4z648NeWusm2SvgF38VGtMD7AgMBAAGjPDA6MBYGA1UdEQQPMA2CC2lj
|
||||||
|
ZWhybS50ZXN0MAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkq
|
||||||
|
hkiG9w0BAQsFAAOCAQEArG936hQSY/E2H2G5KRg/uOq8yMeUdW2IoIZdagcseRF0
|
||||||
|
i2Y69LEiBq4/syZxgqEZCu7w3aulsdpNR6ZAZvxyj6FPc41sbStNrRUeyaBQvKhe
|
||||||
|
7QbqbNS+1iO9DadjcXWAnD30x9qxTqEKNvY17ZgnBgP2RDSajpYZxduJRwW4c19V
|
||||||
|
Qu4YF/CxuwbirSpOANwyMNHy/SyeCwL9W0FFabj5jrHTNWb2IP0IlFEXU4IY4Dlv
|
||||||
|
K/fvzZjGFX5YayYKx4laP33xvIxlI6d1ewzLGAa8KFCKk/n/6HsmYmdTh6e3193E
|
||||||
|
FV6nL9dQ/4ggCIPTfIJWS6PcWuJDzNZj6mZNKiHGmQ==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
28
deployment/vagrant/ssl/icehrm.key
Normal file
28
deployment/vagrant/ssl/icehrm.key
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDOTSWgFFHOSvox
|
||||||
|
GGuRfOUZh1Ihu1S1f+q8fJXSmOUhqqe8UDFVcyFWINoc/cUYoheK3DwVDBOTtrOB
|
||||||
|
r20mq/tNoDyjNELGRVC7UttGUoEG7KSjHpb7xkJ5ycZf09gTZ/xB/joV6AIkw9YM
|
||||||
|
yqvKEq3s9cfHLr+YCOz3ukPQm8NQ3Hthc+iWHgMP6Wypapoe+1OV249G5xJjWukQ
|
||||||
|
8GWB7vmCLWpv+u8WgNs7qDV4M3w5v72gBROk5r4hM8LBFX78eu+YGYxsQB2i/Z+7
|
||||||
|
dWCYtu7LwsrCmc2Ek4HEo0/RP++Ql/FL0J2JlRjba2I0MwEN4z648NeWusm2SvgF
|
||||||
|
38VGtMD7AgMBAAECggEATD9bLqUT7yjq+4ZJC4abrinDg1AXaNWUToHFZga4eQ73
|
||||||
|
27PP6AMbSRfvRVPNquMNzHbFhgnmmmumQMIzl11tDi2w+6jvHRS1V+axwHXx1jtU
|
||||||
|
Ri2iJAAMxbJ7rSNA8zs1kraBhWMwl6IB1Mx7Xb41piTY55cxnOF/o7emJM3NDG8m
|
||||||
|
4xPaDA+I9JapLRbX14XMSMUZNCY3/lYMS0ujoHOmujGFTzEZM3ndvFIuRbnSD88U
|
||||||
|
pmCXEcxlJd6jQhkX7gxzmunNOCD32iJRwTl1V9Vm73xHF0qOJCs5fduUE1TKchuQ
|
||||||
|
SeEfyID7o6SC2ZsOyfTLBI4ofGDq3M2iI5knnzD68QKBgQDwz5uaGTVbTE75UEJs
|
||||||
|
tl/cq/UD0+bukzMXpk4gV8rYmtITVk0EGUeyTP4Dm9r2v24C7LI8xrisZ7DvdqAV
|
||||||
|
n3RboOPKHtmh1HpMCOf2LCdwSXrLnovUoOjgel/vny06uLLFjebvGoBZOZ2F6485
|
||||||
|
20YX5NXMyhb20G0+tlpcGd7BrQKBgQDbUE9XxLJ9UWvCeEAd3lPaBdns/K1c27JD
|
||||||
|
lrpg8FDSkZOy6lj1/vH/SfBS4QQpo1CFBCQ3FUVPkjJtJSr2w2Rev1PxQAoMVdtI
|
||||||
|
VITDrOVpRvSqUcIdWCnnhQPWElCfFUIWpvafDK0r+lPj3vkLOscJWSJzV1+pk5JF
|
||||||
|
6ARJyCZyRwKBgQDKBDAyJ0GmtK5v4o/G6XwkALHMI0FRFXXAOkjCQ0QtUDw58qUr
|
||||||
|
chW+k25pEp+vbkpY875W1BLqtxYs3WRQn3Maxy8xSY4jf7+U98e4sbPoNAxqszf1
|
||||||
|
CYQzhRXkTLHB2F5I8tEv9xiDQZ1PUpzV2YjE1LkzUrnPFmz/NjU5nI5OBQKBgQC0
|
||||||
|
hM5KOCWS8Un5sHFWJIJwmxBd+T3ZiRyadZ7D3Asqx5kDU9IV6dvXfkzKa1y5ySul
|
||||||
|
0Vrd3CxI6tWG8WkD5KDhPCskEMo0jRcJ2kfNqKrMlRMefl2BOeiEIQCfXEPwLddQ
|
||||||
|
Pe4RzKVd5ZbXodjsXV0nXK72sZyUQFvOHsQo1w6OUQKBgQDNwWNnYYC9oH8/+2mA
|
||||||
|
j4D1mO4OF1w6rDb+hvp3lggt3yKcvRK4doFJ9LeJ9C0mGz1JJV/O7l+eAv9n0lFS
|
||||||
|
HGW1YSqbsAwvi8l/qJrYB/gOVfPJPm3GIwX6qBYqiAYb+Fp7igfOZ4ivf2/PhqcU
|
||||||
|
B4Qq9z9sl149+HlKEHINoQHKdQ==
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
Reference in New Issue
Block a user