Compare commits
3 Commits
5d13783ed5
...
a3e626a274
Author | SHA1 | Date | |
---|---|---|---|
a3e626a274 | |||
e288966cfe | |||
7e77b8d0f9 |
@ -27,6 +27,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
app: {
|
app: {
|
||||||
locale: 'de-DE', // default locale (de-DE & en-EN should be available)
|
locale: 'de-DE', // default locale (de-DE & en-EN should be available)
|
||||||
|
name: 'authRXBN',
|
||||||
passhashDelimiter: '|'
|
passhashDelimiter: '|'
|
||||||
},
|
},
|
||||||
mongoose: {
|
mongoose: {
|
||||||
|
@ -162,8 +162,8 @@ getRoutes = async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// database error
|
// database error
|
||||||
if(authCode.err) {
|
if(typeof authCode.err !== "undefined") {
|
||||||
global['logs'].debug(authCode[1]);
|
global['logs'].debug(authCode.err);
|
||||||
return res.type('json').status(500).end(JSON.stringify({
|
return res.type('json').status(500).end(JSON.stringify({
|
||||||
status: 500,
|
status: 500,
|
||||||
message: [
|
message: [
|
||||||
@ -171,11 +171,11 @@ getRoutes = async () => {
|
|||||||
]
|
]
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
else if(rep) {
|
else if(typeof authCode.reply !== "undefined") {
|
||||||
// retrieve apps
|
// retrieve apps
|
||||||
apps = await db.getApps();
|
apps = await db.getApps();
|
||||||
// database error
|
// database error
|
||||||
if(apps.reply) {
|
if(typeof apps.err !== "undefined") {
|
||||||
global['logs'].debug(apps.err);
|
global['logs'].debug(apps.err);
|
||||||
return res.type('json').status(500).end(JSON.stringify({
|
return res.type('json').status(500).end(JSON.stringify({
|
||||||
status: 500,
|
status: 500,
|
||||||
@ -189,7 +189,7 @@ getRoutes = async () => {
|
|||||||
// if app.id is equal to queried app
|
// if app.id is equal to queried app
|
||||||
if(app.id == req.query.id) {
|
if(app.id == req.query.id) {
|
||||||
// redirect to app
|
// redirect to app
|
||||||
return res.redirect(app.access+"?uid="+req.session.user.id+"&token="+rep.token);
|
return res.redirect(app.access+"?uid="+req.session.user.id+"&token="+authCode.reply.token);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -11,7 +11,7 @@ asyncer = require('express-async-handler');
|
|||||||
fs = require('fs');
|
fs = require('fs');
|
||||||
path = require('path');
|
path = require('path');
|
||||||
|
|
||||||
|
var cfg = require(global['__dirname']+'/bin/config');
|
||||||
|
|
||||||
// reduce IO file checks - save file state in cache
|
// reduce IO file checks - save file state in cache
|
||||||
var fileCheck = (file) => {
|
var fileCheck = (file) => {
|
||||||
@ -48,7 +48,8 @@ let getRoutes = async () => {
|
|||||||
apps = await db.getApps();
|
apps = await db.getApps();
|
||||||
res.render('index', {
|
res.render('index', {
|
||||||
session: req.session,
|
session: req.session,
|
||||||
apps: apps.reply
|
apps: apps.reply,
|
||||||
|
cfg: cfg
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -85,7 +86,8 @@ let getRoutes = async () => {
|
|||||||
res.render('request', {
|
res.render('request', {
|
||||||
session: req.session,
|
session: req.session,
|
||||||
appRequest: req.session.appRequest,
|
appRequest: req.session.appRequest,
|
||||||
apps: apps.reply
|
apps: apps.reply,
|
||||||
|
cfg: cfg
|
||||||
});
|
});
|
||||||
// if user isnt logged in, show login page
|
// if user isnt logged in, show login page
|
||||||
} else {
|
} else {
|
||||||
@ -110,7 +112,7 @@ let getRoutes = async () => {
|
|||||||
* @method all
|
* @method all
|
||||||
* @TODO comments
|
* @TODO comments
|
||||||
*/
|
*/
|
||||||
route.all('/*', (req, res, next) => {
|
route.all('/*', asyncer(async (req, res, next) => {
|
||||||
// passthrough to next route
|
// passthrough to next route
|
||||||
if(req.path.startsWith('/api'))
|
if(req.path.startsWith('/api'))
|
||||||
return next();
|
return next();
|
||||||
@ -135,22 +137,26 @@ let getRoutes = async () => {
|
|||||||
return res.status(404).render('error/404', {
|
return res.status(404).render('error/404', {
|
||||||
error_code: 404,
|
error_code: 404,
|
||||||
error_msg: 'msg.request.file.not_found',
|
error_msg: 'msg.request.file.not_found',
|
||||||
session: req.session
|
session: req.session,
|
||||||
|
cfg: cfg
|
||||||
});
|
});
|
||||||
} else if(rule.type == "missing_permission") {
|
} else if(rule.type == "missing_permission") {
|
||||||
return res.status(401).render('error/permission', {
|
return res.status(401).render('error/permission', {
|
||||||
error_code: 401,
|
error_code: 401,
|
||||||
session: req.session
|
session: req.session,
|
||||||
|
cfg: cfg
|
||||||
});
|
});
|
||||||
} else if(rule.type == "login") {
|
} else if(rule.type == "login") {
|
||||||
return res.status(401).render('error/login', {
|
return res.status(401).render('error/login', {
|
||||||
error_code: 401,
|
error_code: 401,
|
||||||
session: req.session
|
session: req.session,
|
||||||
|
cfg: cfg
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return res.status(401).render('error/error', {
|
return res.status(401).render('error/error', {
|
||||||
error_code: 401,
|
error_code: 401,
|
||||||
session: req.session
|
session: req.session,
|
||||||
|
cfg: cfg
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -159,23 +165,28 @@ let getRoutes = async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if(fileCheck(req.path)) {
|
if(fileCheck(req.path)) {
|
||||||
|
// query apps
|
||||||
|
apps = await db.getApps();
|
||||||
|
|
||||||
return res.render(req.path.replace(/^\//, ''), {
|
return res.render(req.path.replace(/^\//, ''), {
|
||||||
session: req.session,
|
session: req.session,
|
||||||
cfg: global['gds'].cfg
|
apps: apps.reply,
|
||||||
|
cfg: cfg
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
global['logs'].info("[web] (404) path not found: "+req.path);
|
global['logs'].info("[web] (404) path not found: "+req.path);
|
||||||
return res.status(404).render('error/404', {
|
return res.status(404).render('error/404', {
|
||||||
error_code: 404,
|
error_code: 404,
|
||||||
error_msg: 'msg.request.file.not_found',
|
error_msg: 'msg.request.file.not_found',
|
||||||
session: req.session
|
session: req.session,
|
||||||
|
cfg: cfg
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: try to login
|
// TODO: try to login
|
||||||
// TODO: role-based authorization
|
// TODO: role-based authorization
|
||||||
// TODO: show login page or page
|
// TODO: show login page or page
|
||||||
});
|
}));
|
||||||
|
|
||||||
return route;
|
return route;
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
footer
|
footer
|
||||||
.uk-text-center
|
.uk-text-center
|
||||||
small Copyright © <a href="https://www.rxbn.de/">Ruben Meyer</a> 2019
|
small Copyright © <a href="https://www.rxbn.de/">Ruben Meyer</a> 2019-2020
|
||||||
|
|
||||||
.modals
|
.modals
|
||||||
//- Logout Modal
|
//- Logout Modal
|
||||||
@ -21,5 +21,5 @@ block scripts
|
|||||||
script(src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.1.5/js/uikit-icons.min.js")
|
script(src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.1.5/js/uikit-icons.min.js")
|
||||||
|
|
||||||
//- Custom scripts for this template
|
//- Custom scripts for this template
|
||||||
script(src="/public/js/locales.js")
|
//script(src="/public/js/locales.js")
|
||||||
script(src="/res/js/custom.js")
|
script(src="/res/js/custom.js")
|
||||||
|
@ -6,9 +6,9 @@ head
|
|||||||
meta(name="author", content="Ruben Meyer")
|
meta(name="author", content="Ruben Meyer")
|
||||||
meta(name="description" content="auth.rxbn.de")
|
meta(name="description" content="auth.rxbn.de")
|
||||||
if(title)
|
if(title)
|
||||||
title="authRXBN - "+title
|
title=cfg.app.name+" - "+title
|
||||||
else
|
else
|
||||||
title authRXBN
|
title=cfg.app.name
|
||||||
|
|
||||||
block css
|
block css
|
||||||
//- UIkit CSS
|
//- UIkit CSS
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
append var
|
append var
|
||||||
- if(!session || !session.user) var breadcrumb = {0: {"name": "authRXBN", "href": "/"}, 1: {"name": "ERROR - Please login", "active": true}};
|
- if(!session || !session.user) var breadcrumb = {0: {"name": cfg.app.name, "href": "/"}, 1: {"name": "ERROR - Please login", "active": true}};
|
||||||
- if(!session || !session.user) var title = "Please login";
|
- if(!session || !session.user) var title = "Please login";
|
||||||
.uk-flex.uk-margin-medium-top.uk-margin-medium-bottom
|
.uk-flex.uk-margin-medium-top.uk-margin-medium-bottom
|
||||||
div(class="uk-width-auto uk-width-1-4@s")
|
div(class="uk-width-auto uk-width-1-4@s")
|
||||||
|
@ -8,14 +8,14 @@ mixin navItem(name, id, symbol, href)
|
|||||||
nav(uk-navbar).uk-navbar-container
|
nav(uk-navbar).uk-navbar-container
|
||||||
.uk-navbar-left.uk-margin-left
|
.uk-navbar-left.uk-margin-left
|
||||||
ul.uk-navbar-nav
|
ul.uk-navbar-nav
|
||||||
li(title="authRXBN")
|
li(title=cfg.app.name)
|
||||||
a(href="/", style="text-transform: unset")
|
a(href="/", style="text-transform: unset")
|
||||||
span authRXBN
|
span authRXBN
|
||||||
.uk-navbar-right.uk-margin-right
|
.uk-navbar-right.uk-margin-right
|
||||||
ul.uk-navbar-nav
|
ul.uk-navbar-nav
|
||||||
if(session && session.user)
|
if(session && session.user)
|
||||||
+navItem("Apps", "apps", "fas fa-tachometer-alt", "/")
|
+navItem("Apps", "apps", "fas fa-tachometer-alt", "/")
|
||||||
+navItem("Configs", "configs", "fas fa-wrench", "/configs")
|
+navItem("Settings", "settings", "fas fa-wrench", "/settings")
|
||||||
+navItem("Logout", "logout", "fas fa-sign-out-alt", "/logout")
|
+navItem("Logout", "logout", "fas fa-sign-out-alt", "/logout")
|
||||||
else
|
else
|
||||||
+navItem("Register", "register", "fas fa-user-plus", "/register")
|
+navItem("Register", "register", "fas fa-user-plus", "/register")
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
extends blocks/layout.pug
|
extends blocks/layout.pug
|
||||||
append var
|
append var
|
||||||
if(session && session.user)
|
if(session && session.user)
|
||||||
- var breadcrumb = {0: {"name": "authRXBN", "href": "/"}, 1: {"name": "Dashboard", "active": true}};
|
- var breadcrumb = {0: {"name": cfg.app.name, "href": "/"}, 1: {"name": "Apps", "active": true}};
|
||||||
- var title = "Dashboard";
|
- var title = "Apps";
|
||||||
|
|
||||||
mixin item(name, id, description)
|
mixin item(name, id, description)
|
||||||
div
|
div
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
extends blocks/layout.pug
|
extends blocks/layout.pug
|
||||||
append var
|
append var
|
||||||
if(session && !session.user)
|
if(session && !session.user)
|
||||||
- var breadcrumb = {0: {"name": "authRXBN", "href": "/"}, 1: {"name": "Login", "active": true}};
|
- var breadcrumb = {0: {"name": cfg.app.name, "href": "/"}, 1: {"name": "Login", "active": true}};
|
||||||
- var title = "Login";
|
- var title = "Login";
|
||||||
|
|
||||||
append content
|
append content
|
||||||
@ -13,7 +13,7 @@ append content
|
|||||||
#login_msg.uk-alert(data-uk-alert).uk-hidden
|
#login_msg.uk-alert(data-uk-alert).uk-hidden
|
||||||
a.uk-close-alt.uk-alert-close(href="#")
|
a.uk-close-alt.uk-alert-close(href="#")
|
||||||
p
|
p
|
||||||
form.uk-form-horizontal
|
form.uk-form-horizontal(onsubmit="return loginEvent();")
|
||||||
.uk-margin
|
.uk-margin
|
||||||
label.uk-form-label(for="login_user") Username / Email
|
label.uk-form-label(for="login_user") Username / Email
|
||||||
.uk-form-controls
|
.uk-form-controls
|
||||||
@ -22,6 +22,7 @@ append content
|
|||||||
label.uk-form-label(for="login_pass") Password
|
label.uk-form-label(for="login_pass") Password
|
||||||
.uk-form-controls
|
.uk-form-controls
|
||||||
input.uk-input#login_pass(type="password")
|
input.uk-input#login_pass(type="password")
|
||||||
|
input(hidden,type="submit")
|
||||||
button(onclick="login()").uk-button.uk-button-default Login
|
button(onclick="login()").uk-button.uk-button-default Login
|
||||||
div(class="uk-width-auto uk-width-1-4@s")
|
div(class="uk-width-auto uk-width-1-4@s")
|
||||||
else
|
else
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
extends blocks/layout.pug
|
extends blocks/layout.pug
|
||||||
append var
|
append var
|
||||||
if(session && session.user)
|
if(session && session.user)
|
||||||
- var breadcrumb = {0: {"name": "authRXBN", "href": "/"}, 1: {"name": "Logout", "active": true}};
|
- var breadcrumb = {0: {"name": cfg.app.name, "href": "/"}, 1: {"name": "Logout", "active": true}};
|
||||||
- var title = "Logout";
|
- var title = "Logout";
|
||||||
|
|
||||||
append content
|
append content
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
extends blocks/layout.pug
|
extends blocks/layout.pug
|
||||||
append var
|
append var
|
||||||
if(cfg && cfg.web.registration && session && !session.user)
|
if(cfg && cfg.web.registration && session && !session.user)
|
||||||
- var breadcrumb = {0: {"name": "authRXBN", "href": "/"}, 1: {"name": "Register", "active": true}};
|
- var breadcrumb = {0: {"name": cfg.app.name, "href": "/"}, 1: {"name": "Register", "active": true}};
|
||||||
- var title = "Register";
|
- var title = "Register";
|
||||||
|
|
||||||
append content
|
append content
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
extends blocks/layout.pug
|
extends blocks/layout.pug
|
||||||
append var
|
append var
|
||||||
if(session && session.user)
|
if(session && session.user)
|
||||||
- var breadcrumb = {0: {"name": "authRXBN", "href": "/"}, 1: {"name": "Authorization", "active": true}};
|
- var breadcrumb = {0: {"name": cfg.app.name, "href": "/"}, 1: {"name": "Authorization", "active": true}};
|
||||||
- var title = "authorize App";
|
- var title = "authorize App";
|
||||||
|
|
||||||
append content
|
append content
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
extends blocks/layout.pug
|
extends blocks/layout.pug
|
||||||
append var
|
append var
|
||||||
if(session && !session.user)
|
if(session && !session.user)
|
||||||
- var breadcrumb = {0: {"name": "authRXBN", "href": "/"}, 1: {"name": "Forgot your password?", "active": true}};
|
- var breadcrumb = {0: {"name": cfg.app.name, "href": "/"}, 1: {"name": "Forgot your password?", "active": true}};
|
||||||
- var title = "Reset password";
|
- var title = "Reset password";
|
||||||
|
|
||||||
append content
|
append content
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
function loginEvent() {
|
||||||
|
login();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
function login() {
|
function login() {
|
||||||
let user = document.getElementById("login_user").value;
|
let user = document.getElementById("login_user").value;
|
||||||
let pass = document.getElementById("login_pass").value;
|
let pass = document.getElementById("login_pass").value;
|
||||||
@ -14,15 +18,20 @@ function login() {
|
|||||||
ajax.onload = () => {
|
ajax.onload = () => {
|
||||||
let json = JSON.parse(ajax.responseText);
|
let json = JSON.parse(ajax.responseText);
|
||||||
let box = document.getElementById("login_msg");
|
let box = document.getElementById("login_msg");
|
||||||
if(json.message && json.message == "msg.auth.login.successful") {
|
|
||||||
if(window.location.pathname == "/authenticate" && getParameterByName("appId")) window.location.href= "/authenticate";
|
|
||||||
else window.location.href= "/";
|
|
||||||
|
|
||||||
box.classList.remove("uk-hidden");
|
box.classList.remove("uk-hidden");
|
||||||
|
box.classList.remove("uk-alert-success");
|
||||||
|
box.classList.remove("uk-alert-danger");
|
||||||
|
|
||||||
|
if(json.message && json.message == "msg.auth.login.successful") {
|
||||||
|
setTimeout(function () {
|
||||||
|
if(window.location.pathname == "/authenticate" && getParameterByName("appId")) window.location.href= "/authenticate";
|
||||||
|
else window.location.href= "/";
|
||||||
|
}, 150);
|
||||||
|
|
||||||
box.classList.add("uk-alert-success");
|
box.classList.add("uk-alert-success");
|
||||||
box.getElementsByTagName("p")[0].innerHTML = "Logged in. You will be redirected";
|
box.getElementsByTagName("p")[0].innerHTML = "Logged in. You will be redirected";
|
||||||
} else if(json.message && json.message == "msg.auth.login.failed") {
|
} else if(json.message && json.message == "msg.auth.login.failed") {
|
||||||
box.classList.remove("uk-hidden");
|
|
||||||
box.classList.add("uk-alert-danger");
|
box.classList.add("uk-alert-danger");
|
||||||
box.getElementsByTagName("p")[0].innerHTML = "Login failed.<br> Username or Password is wrong.";
|
box.getElementsByTagName("p")[0].innerHTML = "Login failed.<br> Username or Password is wrong.";
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user