added api page
added login added api.ejs added middleware for authorization check
This commit is contained in:
@ -3801,3 +3801,15 @@
|
||||
.fas {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-weight: 900; }
|
||||
|
||||
.contact-right p {
|
||||
/* Your CSS styles here */
|
||||
color: #4e3914;
|
||||
font-size: 16px;
|
||||
/* Add any other styles you need */
|
||||
}
|
||||
|
||||
|
||||
.card-text {
|
||||
color: #000000;
|
||||
}
|
||||
|
526
consumerWebsite/public/css/api.css
Normal file
526
consumerWebsite/public/css/api.css
Normal file
@ -0,0 +1,526 @@
|
||||
@charset "utf-8";
|
||||
|
||||
/* RESET
|
||||
----------------------------------------------------------------------------------------*/
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size:100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
img, embed, object, video { max-width: 100%; }
|
||||
.ie6 img.full, .ie6 object.full, .ie6 embed, .ie6 video { width: 100%; }
|
||||
|
||||
/* BASE
|
||||
----------------------------------------------------------------------------------------*/
|
||||
|
||||
*{
|
||||
-webkit-transition: all 0.3s ease;
|
||||
-moz-transition: all 0.3s ease;
|
||||
-o-transition: all 0.3s ease;
|
||||
-ms-transition: all 0.3s ease;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
html,
|
||||
body{
|
||||
position:relative;
|
||||
min-height: 100%;
|
||||
height: 100%;
|
||||
-webkit-backface-visibility: hidden;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
}
|
||||
strong{
|
||||
font-weight: 500;
|
||||
}
|
||||
i{
|
||||
font-style: italic;
|
||||
}
|
||||
.overflow-hidden{
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.content a{
|
||||
color: #00a8e3;
|
||||
text-decoration: none;
|
||||
}
|
||||
.content a:hover{
|
||||
text-decoration: underline;
|
||||
}
|
||||
.scroll-to-link{
|
||||
cursor: pointer;
|
||||
}
|
||||
p, .content ul, .content ol{
|
||||
font-size: 14px;
|
||||
color: #ffffff;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.6;
|
||||
font-weight: 300;
|
||||
}
|
||||
.content h1:first-child{
|
||||
font-size: 1.333em;
|
||||
color: #034c8f;
|
||||
padding-top: 2.5em;
|
||||
text-transform: uppercase;
|
||||
border-top: 1px solid rgba(255,255,255,0.3);
|
||||
border-top-width: 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1.3em;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
code,
|
||||
pre{
|
||||
font-family: 'Source Code Pro', monospace;
|
||||
}
|
||||
.higlighted{
|
||||
background-color: rgba(0,0,0,0.05);
|
||||
padding: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
/* LEFT-MENU
|
||||
----------------------------------------------------------------------------------------*/
|
||||
|
||||
.left-menu{
|
||||
position: fixed;
|
||||
z-index: 3;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 300px;
|
||||
box-sizing: border-box;
|
||||
background-color: #f4f5f8;
|
||||
overflow-x: hidden;
|
||||
font-size: 18px;
|
||||
}
|
||||
.left-menu .content-infos {
|
||||
position: relative;
|
||||
padding: 12px 13.25%;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.left-menu .info {
|
||||
position: relative;
|
||||
font-size: 14px;
|
||||
margin-top: 5px;
|
||||
color: #777A7A;
|
||||
}
|
||||
.left-menu .info b {
|
||||
font-weight: 500;
|
||||
color: #034c8f;
|
||||
}
|
||||
.content-logo{
|
||||
position: relative;
|
||||
display: block;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 1.425em 11.5%;
|
||||
padding-right: 0;
|
||||
}
|
||||
.content-logo img{
|
||||
display: inline-block;
|
||||
max-width: 70%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.content-logo span{
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
vertical-align: middle;
|
||||
color: #323F4C;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
.content-menu{
|
||||
margin: 2em auto 2em;
|
||||
padding: 0 0 100px;
|
||||
}
|
||||
.content-menu ul{
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
line-height: 28px;
|
||||
}
|
||||
.content-menu ul li{
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
.content-menu ul li:hover,
|
||||
.content-menu ul li.active{
|
||||
background-color:#DCDEE9;
|
||||
}
|
||||
.content-menu ul li:hover a,
|
||||
.content-menu ul li.active a{
|
||||
color: #00a8e3;
|
||||
}
|
||||
@media (hover: none) {
|
||||
.content-menu ul li:not(.active):hover {
|
||||
background-color: inherit;
|
||||
}
|
||||
.content-menu ul li:not(.active):hover a {
|
||||
color: #777A7A;
|
||||
}
|
||||
}
|
||||
.content-menu ul li a{
|
||||
padding: 12px 13.25%;
|
||||
color: #777A7A;
|
||||
letter-spacing: 0.025em;
|
||||
line-height: 1.1;
|
||||
display: block;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
/* CONTENT-PAGE
|
||||
----------------------------------------------------------------------------------------*/
|
||||
|
||||
.content-page {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
margin-left: 300px;
|
||||
z-index: 2;
|
||||
background-color: #fff;
|
||||
min-height: 100%;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
.content-code{
|
||||
width: 50%;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
background-color: #323f4c;
|
||||
border-color: #323f4c;
|
||||
}
|
||||
.content {
|
||||
position: relative;
|
||||
z-index: 30;
|
||||
}
|
||||
.content h1,
|
||||
.content h2,
|
||||
.content h3,
|
||||
.content h4,
|
||||
.content h5,
|
||||
.content h6,
|
||||
.content p,
|
||||
.content table,
|
||||
.content aside,
|
||||
.content dl,
|
||||
.content ul,
|
||||
.content ol,
|
||||
.content .central-overflow-x {
|
||||
margin-right: 50%;
|
||||
padding: 0 28px;
|
||||
box-sizing: border-box;
|
||||
display: block;
|
||||
max-width: 680px;
|
||||
}
|
||||
.content .central-overflow-x {
|
||||
margin-right: calc(50% + 28px);
|
||||
margin-left: 28px;
|
||||
padding: 0;
|
||||
overflow-y: hidden;
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
}
|
||||
.content p .central-overflow-x {
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
.break-word {
|
||||
word-break: break-word;
|
||||
overflow-wrap: break-word;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.content ul,
|
||||
.content ol {
|
||||
padding: 0 44px;
|
||||
}
|
||||
.content h2,
|
||||
.content h3,
|
||||
.content h4,
|
||||
.content h5,
|
||||
.content h6 {
|
||||
font-size: 15px;
|
||||
margin-top: 2.5em;
|
||||
margin-bottom: 0.8em;
|
||||
color: #034c8f;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.content h2{
|
||||
font-size: 1.333em;
|
||||
}
|
||||
.content h4{
|
||||
color: #00a8e3;
|
||||
margin-top: 0;
|
||||
text-transform: none;
|
||||
font-size: 14px;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
.content-page .content p,
|
||||
.content-page .content pre {
|
||||
max-width: 680px;
|
||||
}
|
||||
.content pre,
|
||||
.content blockquote {
|
||||
background-color: #323f4c;
|
||||
border-color: #323f4c;
|
||||
color: #fff;
|
||||
padding: 0 28px 2em;
|
||||
margin: 0;
|
||||
width: 50%;
|
||||
float: right;
|
||||
clear: right;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.content pre code, .content pre {
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.content blockquote,
|
||||
.content pre,
|
||||
.content pre code{
|
||||
padding-top: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
.content pre code{
|
||||
margin-top: -2em;
|
||||
}
|
||||
.content table {
|
||||
font-size: 0.825em;
|
||||
margin-bottom: 1.5em;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
.content table tr:last-child {
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
.content table th {
|
||||
font-size: 0.925em;
|
||||
padding: 5px 18px 5px 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
vertical-align: bottom;
|
||||
text-align: left;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.content table td {
|
||||
padding: 5px 18px 5px 0;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
line-height: 1.6;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-weight: 300;
|
||||
color: #777A7A;
|
||||
}
|
||||
|
||||
|
||||
/* burger-menu-icon
|
||||
----------------------------------------------------------------------------------------*/
|
||||
.burger-menu-icon {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
right: 26px;
|
||||
top: 26px;
|
||||
display: none;
|
||||
}
|
||||
.burger-menu-icon .line {
|
||||
fill: none;
|
||||
stroke: #000;
|
||||
stroke-width: 6;
|
||||
transition: stroke-dasharray 600ms cubic-bezier(0.4, 0, 0.2, 1),
|
||||
stroke-dashoffset 600ms cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
.burger-menu-icon .line1 {
|
||||
stroke-dasharray: 60 207;
|
||||
stroke-width: 6;
|
||||
}
|
||||
.burger-menu-icon .line2 {
|
||||
stroke-dasharray: 60 60;
|
||||
stroke-width: 6;
|
||||
}
|
||||
.burger-menu-icon .line3 {
|
||||
stroke-dasharray: 60 207;
|
||||
stroke-width: 6;
|
||||
}
|
||||
html.menu-opened .burger-menu-icon .line1 {
|
||||
stroke-dasharray: 90 207;
|
||||
stroke-dashoffset: -134;
|
||||
stroke-width: 6;
|
||||
}
|
||||
html.menu-opened .burger-menu-icon .line2 {
|
||||
stroke-dasharray: 1 60;
|
||||
stroke-dashoffset: -30;
|
||||
stroke-width: 6;
|
||||
}
|
||||
html.menu-opened .burger-menu-icon .line3 {
|
||||
stroke-dasharray: 90 207;
|
||||
stroke-dashoffset: -134;
|
||||
stroke-width: 6;
|
||||
}
|
||||
|
||||
|
||||
/* ONE CONTENT COLUMN VERSION
|
||||
----------------------------------------------------------------------------------------*/
|
||||
|
||||
body.one-content-column-version .content h1,
|
||||
body.one-content-column-version .content h2,
|
||||
body.one-content-column-version .content h3,
|
||||
body.one-content-column-version .content h4,
|
||||
body.one-content-column-version .content h5,
|
||||
body.one-content-column-version .content h6,
|
||||
body.one-content-column-version .content p,
|
||||
body.one-content-column-version .content table,
|
||||
body.one-content-column-version .content ul,
|
||||
body.one-content-column-version .content ol,
|
||||
body.one-content-column-version .content aside,
|
||||
body.one-content-column-version .content dl,
|
||||
body.one-content-column-version .content ul,
|
||||
body.one-content-column-version .content ol {
|
||||
margin-right: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
body.one-content-column-version .content-page .content p,
|
||||
body.one-content-column-version .content-page .content pre {
|
||||
max-width: 100%;
|
||||
}
|
||||
body.one-content-column-version .content-page {
|
||||
background-color: #323f4c;
|
||||
}
|
||||
body.one-content-column-version .content h1:first-child,
|
||||
body.one-content-column-version .content h2,
|
||||
body.one-content-column-version .content h3,
|
||||
body.one-content-column-version .content h4,
|
||||
body.one-content-column-version .content h5,
|
||||
body.one-content-column-version .content h6 {
|
||||
color: #59C3C3;
|
||||
}
|
||||
body.one-content-column-version p {
|
||||
color: #D6F0F0;
|
||||
}
|
||||
body.one-content-column-version .content table td {
|
||||
color: #D6F0F0;
|
||||
}
|
||||
body.one-content-column-version .content thead {
|
||||
color: #417179;
|
||||
}
|
||||
|
||||
/* RESPONSIVE
|
||||
----------------------------------------------------------------------------------------*/
|
||||
|
||||
@media only screen and (max-width:980px){
|
||||
.content h1, .content h2, .content h3, .content h4, .content h5, .content h6, .content p, .content table, .content ul, .content ol, .content aside, .content dl, .content ul, .content ol {
|
||||
margin-right: 0;
|
||||
}
|
||||
.content .central-overflow-x {
|
||||
margin: 0;
|
||||
padding: 0 28px;
|
||||
}
|
||||
.content-code{
|
||||
display: none;
|
||||
}
|
||||
.content pre, .content blockquote {
|
||||
margin: 20px 0;
|
||||
padding: 28px;
|
||||
display: block;
|
||||
width: auto;
|
||||
float: none;
|
||||
}
|
||||
.content pre code {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width:680px){
|
||||
html {
|
||||
scroll-padding-top: 83px;
|
||||
}
|
||||
html.menu-opened {
|
||||
overflow: hidden;
|
||||
}
|
||||
.left-menu {
|
||||
position: relative;
|
||||
width: auto;
|
||||
}
|
||||
.left-menu .content-menu {
|
||||
position: fixed;
|
||||
width: 400px;
|
||||
max-width: 90vw;
|
||||
z-index: 3;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: -405px;
|
||||
left: auto;
|
||||
background-color: #fff;
|
||||
margin: 0;
|
||||
overflow-x: hidden;
|
||||
padding-top: 83px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.left-menu .content-menu ul {
|
||||
position: relative;
|
||||
}
|
||||
.left-menu .mobile-menu-closer {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 2;
|
||||
background-color: rgba(50, 63, 76, .5);
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
html.menu-opened .left-menu .mobile-menu-closer {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
html.menu-opened .left-menu .content-menu {
|
||||
right: 0;
|
||||
}
|
||||
.left-menu .content-logo {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 4;
|
||||
background-color: #f4f5f8;
|
||||
}
|
||||
.content-logo .logo {
|
||||
margin-right: 65px;
|
||||
}
|
||||
.content-page{
|
||||
margin-left: 0;
|
||||
padding-top: 83px;
|
||||
}
|
||||
.burger-menu-icon {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
/* BROWSER AND NON-SEMANTIC STYLING
|
||||
----------------------------------------------------------------------------------------*/
|
||||
|
||||
.cf:before, .cf:after { content: ""; display: block; }
|
||||
.cf:after { clear: both; }
|
||||
.ie6 .cf { zoom: 1 }
|
@ -73,6 +73,21 @@ button.btn-secondary:hover{
|
||||
color: #ffffff;
|
||||
border-radius: 4.8px;
|
||||
}
|
||||
.btn-outline-danger{
|
||||
width: 78px;
|
||||
height: 40px;
|
||||
padding-top: 8px;
|
||||
font-size: 16px;
|
||||
|
||||
}
|
||||
.btn-outline-info{
|
||||
width: 78px ;
|
||||
height: 40px ;
|
||||
padding-top: 8px;
|
||||
font-size: 16px;
|
||||
|
||||
}
|
||||
|
||||
.navbar-expand-lg.top-nav .navbar-nav .dropdown-menu{
|
||||
margin: 0px;
|
||||
box-shadow: 3px 5px 15px rgba(0,0,0, .15);
|
||||
|
BIN
consumerWebsite/public/images/apilogo.png
Normal file
BIN
consumerWebsite/public/images/apilogo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
88
consumerWebsite/public/js/api.js
Normal file
88
consumerWebsite/public/js/api.js
Normal file
@ -0,0 +1,88 @@
|
||||
|
||||
var elements = [];
|
||||
|
||||
[].forEach.call(document.querySelectorAll('.scroll-to-link'), function (div) {
|
||||
div.onclick = function (e) {
|
||||
e.preventDefault();
|
||||
var target = this.dataset.target;
|
||||
document.getElementById(target).scrollIntoView({ behavior: 'smooth' });
|
||||
var elems = document.querySelectorAll(".content-menu ul li");
|
||||
[].forEach.call(elems, function (el) {
|
||||
el.classList.remove("active");
|
||||
});
|
||||
this.classList.add("active");
|
||||
return false;
|
||||
};
|
||||
});
|
||||
|
||||
document.getElementById('button-menu-mobile').onclick = function (e) {
|
||||
e.preventDefault();
|
||||
document.querySelector('html').classList.toggle('menu-opened');
|
||||
}
|
||||
document.querySelector('.left-menu .mobile-menu-closer').onclick = function (e) {
|
||||
e.preventDefault();
|
||||
document.querySelector('html').classList.remove('menu-opened');
|
||||
}
|
||||
|
||||
function debounce (func) {
|
||||
var timer;
|
||||
return function (event) {
|
||||
if (timer) clearTimeout(timer);
|
||||
timer = setTimeout(func, 100, event);
|
||||
};
|
||||
}
|
||||
|
||||
function calculElements () {
|
||||
var totalHeight = 0;
|
||||
elements = [];
|
||||
[].forEach.call(document.querySelectorAll('.content-section'), function (div) {
|
||||
var section = {};
|
||||
section.id = div.id;
|
||||
totalHeight += div.offsetHeight;
|
||||
section.maxHeight = totalHeight - 25;
|
||||
elements.push(section);
|
||||
});
|
||||
onScroll();
|
||||
}
|
||||
|
||||
function onScroll () {
|
||||
var scroll = window.pageYOffset;
|
||||
console.log('scroll', scroll, elements)
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
var section = elements[i];
|
||||
if (scroll <= section.maxHeight) {
|
||||
var elems = document.querySelectorAll(".content-menu ul li");
|
||||
[].forEach.call(elems, function (el) {
|
||||
el.classList.remove("active");
|
||||
});
|
||||
var activeElems = document.querySelectorAll(".content-menu ul li[data-target='" + section.id + "']");
|
||||
[].forEach.call(activeElems, function (el) {
|
||||
el.classList.add("active");
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (window.innerHeight + scroll + 5 >= document.body.scrollHeight) { // end of scroll, last element
|
||||
var elems = document.querySelectorAll(".content-menu ul li");
|
||||
[].forEach.call(elems, function (el) {
|
||||
el.classList.remove("active");
|
||||
});
|
||||
var activeElems = document.querySelectorAll(".content-menu ul li:last-child");
|
||||
[].forEach.call(activeElems, function (el) {
|
||||
el.classList.add("active");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
calculElements();
|
||||
window.onload = () => {
|
||||
calculElements();
|
||||
};
|
||||
window.addEventListener("resize", debounce(function (e) {
|
||||
e.preventDefault();
|
||||
calculElements();
|
||||
}));
|
||||
window.addEventListener('scroll', function (e) {
|
||||
e.preventDefault();
|
||||
onScroll();
|
||||
});
|
@ -134,7 +134,6 @@ app.api = (function (app) {
|
||||
complete: function (res, text) {
|
||||
callback(
|
||||
text !== "success" ? res.statusText : null,
|
||||
//console.log(res.responseText),
|
||||
JSON.parse(res.responseText),
|
||||
res.status
|
||||
);
|
||||
@ -151,8 +150,9 @@ app.auth = (function (app) {
|
||||
localStorage.setItem("APIToken", token);
|
||||
}
|
||||
|
||||
function setUserId(userId) {
|
||||
localStorage.setItem("userId", userId);
|
||||
function setUserId(userid) {
|
||||
console.log("userid", userid);
|
||||
localStorage.setItem("userid", userid);
|
||||
}
|
||||
|
||||
function setUsername(username) {
|
||||
@ -185,25 +185,39 @@ app.auth = (function (app) {
|
||||
*/
|
||||
|
||||
function logOut(callback) {
|
||||
localStorage.removeItem("APIToken");
|
||||
localStorage.removeItem("userId");
|
||||
localStorage.removeItem("username");
|
||||
//call logout route
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: "/api/v0/user/logout",
|
||||
headers: {
|
||||
"auth-token": app.auth.getToken(),
|
||||
},
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
complete: function (res, text) {
|
||||
callback(
|
||||
text !== "success" ? res.statusText : null,
|
||||
JSON.parse(res.responseText),
|
||||
res.status
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
//remove token from db NOT the api key.
|
||||
localStorage.removeItem("APIToken");
|
||||
localStorage.removeItem("userid");
|
||||
localStorage.removeItem("username");
|
||||
callback();
|
||||
}
|
||||
|
||||
function forceLogin() {
|
||||
$.holdReady(true);
|
||||
app.auth.isLoggedIn(function (error, isLoggedIn) {
|
||||
if (error || !isLoggedIn) {
|
||||
app.auth.logOut(function () {});
|
||||
location.replace(`/login`);
|
||||
} else {
|
||||
$.holdReady(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
app.auth.isLoggedIn(function (error, isLoggedIn) {
|
||||
if (error || !isLoggedIn) {
|
||||
app.auth.logOut(function () {
|
||||
location.replace(`/login`);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function logInRedirect() {
|
||||
window.location.href =
|
||||
@ -215,6 +229,18 @@ app.auth = (function (app) {
|
||||
window.location.href = location.href.replace(location.replace(`/`)) || "/";
|
||||
}
|
||||
|
||||
//if isLoggedin is true, redirect user away from login / register page
|
||||
function redirectIfLoggedIn() {
|
||||
$.holdReady(true);
|
||||
app.auth.isLoggedIn(function (error, isLoggedIn) {
|
||||
if (error || isLoggedIn) {
|
||||
location.replace(`/`);
|
||||
} else {
|
||||
$.holdReady(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
getToken: getToken,
|
||||
setToken: setToken,
|
||||
@ -226,6 +252,7 @@ app.auth = (function (app) {
|
||||
forceLogin,
|
||||
logInRedirect,
|
||||
homeRedirect,
|
||||
redirectIfLoggedIn,
|
||||
};
|
||||
})(app);
|
||||
|
||||
|
@ -1,44 +0,0 @@
|
||||
require('dotenv').config({ path: path.resolve(__dirname, '../../../.env') })
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const form = document.getElementById('form');
|
||||
|
||||
// Set the new value for the access_key input field
|
||||
form.querySelector('input[name="access_key"]').value = process.env.emailKey;
|
||||
|
||||
form.addEventListener('submit', async (event) => {
|
||||
event.preventDefault(); // Prevent default form submission
|
||||
|
||||
// Create a FormData object to include the key
|
||||
const formData = new FormData(form);
|
||||
|
||||
// Submit the form using fetch API
|
||||
try {
|
||||
const response = await fetch('https://api.web3forms.com/submit', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
// Handle the API response
|
||||
//console.log(result);
|
||||
|
||||
if (result.success) {
|
||||
// Form submitted successfully, display notification
|
||||
alert('Form submitted successfully!');
|
||||
location.reload()
|
||||
// You can replace the alert with your custom notification logic
|
||||
} else {
|
||||
// Form submission failed, display error notification
|
||||
alert('Form submission failed. Please try again.');
|
||||
// You can replace the alert with your custom error notification logic
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
//console.error('Error:', error);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -1,193 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<title>N & LW Lawn Care - Landscaping Bootstrap4 HTML5 Responsive Template </title>
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
<!-- Fontawesome CSS -->
|
||||
<link href="css/all.css" rel="stylesheet">
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/style.css" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-light top-nav fixed-top">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="index.html">
|
||||
<img src="images/logo.png" alt="logo" />
|
||||
</a>
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
|
||||
data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false"
|
||||
aria-label="Toggle navigation">
|
||||
<span class="fas fa-bars"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="index.html">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="news.html">News</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="contactform.html">Contact</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="profile.html">Profile</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="signuplogin.html">Logout</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="full-title">
|
||||
<div class="container">
|
||||
<h1 class="mt-4 mb-3">Profile
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="centered-content">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-3 border-right">
|
||||
<div class="d-flex flex-column align-items-center text-center p-3 py-5"><img
|
||||
class="rounded-circle mt-5" width="150px"
|
||||
src="https://st3.depositphotos.com/15648834/17930/v/600/depositphotos_179308454-stock-illustration-unknown-person-silhouette-glasses-profile.jpg">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-5 border-right">
|
||||
<div class="p-3 py-5">
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<h4 class="text-right">Profile Settings</h4>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-md-6"><label class="labels">Name</label><input type="text"
|
||||
class="form-control" placeholder="first name" value=""></div>
|
||||
<div class="col-md-6"><label class="labels">Surname</label><input type="text"
|
||||
class="form-control" value="" placeholder="surname"></div>
|
||||
</div>
|
||||
<div class="row mt-3">
|
||||
<div class="col-md-12"><label class="labels">Mobile Number</label><input type="text"
|
||||
class="form-control" placeholder="enter phone number" value=""></div>
|
||||
<div class="col-md-12"><label class="labels">Address</label><input type="text"
|
||||
class="form-control" placeholder="enter address" value=""></div>
|
||||
<div class="col-md-12"><label class="labels">Email</label><input type="text"
|
||||
class="form-control" placeholder="enter email" value=""></div>
|
||||
<div class="col-md-12"><label class="labels">Password</label><input type="text"
|
||||
class="form-control" placeholder="enter password" value=""></div>
|
||||
<div class="col-md-12"><label class="labels">Password</label><input type="text"
|
||||
class="form-control" placeholder="re enter password" value=""></div>
|
||||
</div>
|
||||
<div class="mt-2 text-center">
|
||||
<button class="btn btn-sm btn-secondary change-password-button" type="button">Change
|
||||
Password</button>
|
||||
</div>
|
||||
<div class="mt-5 text-center"><button class="btn btn-primary profile-button" type="button">Save
|
||||
Profile</button></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<footer class="footer">
|
||||
<div class="container bottom_border">
|
||||
<div class="row">
|
||||
<div class="col-lg-3 col-md-6 col-sm-6 col">
|
||||
<h5 class="headin5_amrc col_white_amrc pt2">Find us</h5>
|
||||
<p><i class="fa fa-location-arrow"></i> Blk 645 Jalan Tenaga</p>
|
||||
<p><i class="fa fa-phone"></i> +65 90064959</p>
|
||||
<p><i class="fa fa fa-envelope"></i> Leongdingxuan@gmail.com </p>
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-6 col-sm-6 col">
|
||||
<h5 class="headin5_amrc col_white_amrc pt2">Follow us</h5>
|
||||
<!--headin5_amrc ends here-->
|
||||
<ul class="footer_ul2_amrc">
|
||||
<li>
|
||||
<a href="#"><i class="fab fa-facebook-f fleft padding-right"></i> </a>
|
||||
<a href="#">https://www.facebook.com/</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fab fa-instagram fleft padding-right"></i> </a>
|
||||
<a href="#">https://www.instagram.com/</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fab fa-twitter fleft padding-right"></i> </a>
|
||||
<a href="#">https://twitter.com/</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<!--footer_ul2_amrc ends here-->
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-6 col-sm-6">
|
||||
<h5 class="headin5_amrc col_white_amrc pt2">Quick links</h5>
|
||||
<!--headin5_amrc-->
|
||||
<ul class="footer_ul_amrc">
|
||||
<li><a href="#">Home</a></li>
|
||||
<li><a href="#">News</a></li>
|
||||
<li><a href="#">Contact</a></li>
|
||||
</ul>
|
||||
<!--footer_ul_amrc ends here-->
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-6 col-sm-6 ">
|
||||
<h5 class="headin5_amrc col_white_amrc pt2">News</h5>
|
||||
<!--headin5_amrc-->
|
||||
<ul class="footer_ul_amrc">
|
||||
<li class="media">
|
||||
<div class="media-left">
|
||||
<img class="img-fluid" src="images/post-img-01.jpg" alt="" />
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<p>Singapore's air quality ...</p>
|
||||
<span>7 oct 2023</span>
|
||||
</div>
|
||||
</ul>
|
||||
<ul class="footer_ul_amrc">
|
||||
<li class="media">
|
||||
<div class="media-left">
|
||||
<img class="img-fluid" src="images/post-img-01.jpg" alt="" />
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<p>Singapore Government ...</p>
|
||||
<span>29 Sep 2023</span>
|
||||
</div>
|
||||
</ul>
|
||||
<ul class="footer_ul_amrc">
|
||||
<li class="media">
|
||||
<div class="media-left">
|
||||
<img class="img-fluid" src="images/post-img-01.jpg" alt="" />
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<p>High risk of severe ...</p>
|
||||
<span>22 Jun 2023</span>
|
||||
</div>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container text-center">
|
||||
<br>
|
||||
<p>All Rights Reserved. © 2023 <a href="#">EcoSaver</a>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- Bootstrap core JavaScript -->
|
||||
<script src="vendor/jquery/jquery.min.js"></script>
|
||||
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
Reference in New Issue
Block a user