Clean up footer: fix copyright, move GitHub link out of the nav (#41)
- Copyright was "© <year> <name>" where <name> is conf.name — an operator-configurable display name (e.g. whatever CFG_ORG is set to), not a real copyright holder. Changed to "© <year> theta42", matching the LICENSE file. Also dropped "All rights reserved", which contradicts the MIT license this project ships under; added an explicit MIT License link instead. - Moved the GitHub icon link out of the top nav (where it competed with actual navigation items) and into the footer, alongside the license link and version/build info. - Deduplicated the identical buildVersion/buildHash/buildYear computation that was copy-pasted in both routes/index.js and routes/oauth.js into a shared nodejs/utils/build_info.js. Verified by rendering top+bottom with the real ejs package: no template errors, GitHub link present exactly once (in the footer, not the nav), "All rights reserved" gone, MIT License link present. npm test failures (155) are pre-existing/environmental (no LDAP server here) — identical failure count with these changes stashed out.
This commit is contained in:
@@ -2,26 +2,21 @@
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { execSync } = require('child_process');
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
const moment = require('moment');
|
||||
const {marked} = require('marked');
|
||||
const {InviteToken, PasswordResetToken} = require('./../models/token');
|
||||
const conf = require('@simpleworkjs/conf');
|
||||
const buildInfo = require('../utils/build_info');
|
||||
|
||||
const tosHtml = marked(fs.readFileSync(path.join(__dirname, '../../tos.md'), 'utf8'));
|
||||
const { version: buildVersion } = require('../package.json');
|
||||
let buildHash = 'unknown';
|
||||
try { buildHash = execSync('git rev-parse --short HEAD', { cwd: __dirname }).toString().trim(); } catch(_) {}
|
||||
|
||||
const values ={
|
||||
title: conf.environment !== 'production' ? `dev` : '',
|
||||
titleIcon: conf.environment !== 'production' ? `<i class="fa-brands fa-dev"></i>` : '',
|
||||
name: conf.name,
|
||||
buildVersion,
|
||||
buildHash,
|
||||
buildYear: new Date().getFullYear(),
|
||||
...buildInfo,
|
||||
}
|
||||
|
||||
// List of front end node modules to be served
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const crypto = require('crypto');
|
||||
const { execSync } = require('child_process');
|
||||
const jwt = require('jsonwebtoken');
|
||||
const express = require('express');
|
||||
const conf = require('@simpleworkjs/conf');
|
||||
@@ -9,22 +8,17 @@ const { OAuthClient } = require('../models/oauth_client');
|
||||
const { OAuthCode, OAuthAccessToken, OAuthRefreshToken } = require('../models/oauth_code');
|
||||
const { User } = require('../models/user');
|
||||
const { Group } = require('../models/group_ldap');
|
||||
const buildInfo = require('../utils/build_info');
|
||||
|
||||
const oauthConf = conf.oauth || {};
|
||||
const issuer = oauthConf.issuer || `http://localhost:${conf.port || 3000}`;
|
||||
const jwtSecret = oauthConf.jwtSecret || 'change-me-in-secrets';
|
||||
|
||||
const { version: buildVersion } = require('../package.json');
|
||||
let buildHash = 'unknown';
|
||||
try { buildHash = execSync('git rev-parse --short HEAD', { cwd: __dirname }).toString().trim(); } catch(_) {}
|
||||
|
||||
const pageLocals = {
|
||||
title: conf.environment !== 'production' ? 'dev' : '',
|
||||
titleIcon: conf.environment !== 'production' ? '<i class="fa-brands fa-dev"></i>' : '',
|
||||
name: conf.name,
|
||||
buildVersion,
|
||||
buildHash,
|
||||
buildYear: new Date().getFullYear(),
|
||||
...buildInfo,
|
||||
};
|
||||
|
||||
// --- helpers ---
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
'use strict';
|
||||
|
||||
const { execSync } = require('child_process');
|
||||
const { version: buildVersion } = require('../package.json');
|
||||
|
||||
let buildHash = 'unknown';
|
||||
try {
|
||||
buildHash = execSync('git rev-parse --short HEAD', { cwd: __dirname }).toString().trim();
|
||||
} catch (_) {}
|
||||
|
||||
module.exports = {
|
||||
buildVersion,
|
||||
buildHash,
|
||||
buildYear: new Date().getFullYear(),
|
||||
};
|
||||
+11
-5
@@ -1,15 +1,21 @@
|
||||
</div><!-- end spa-shell -->
|
||||
|
||||
<footer class="py-2 bg-dark text-light mt-4">
|
||||
<div class="container-fluid d-flex justify-content-between align-items-center small">
|
||||
<span>
|
||||
<div class="container-fluid d-flex flex-wrap justify-content-between align-items-center small gap-2">
|
||||
<span class="d-flex align-items-center gap-2">
|
||||
<a href="https://theta42.com" target="_blank">
|
||||
<img width="64" src="/static/img/theta42.svg"/>
|
||||
</a>
|
||||
© <%- buildYear %> <%- name %>. All rights reserved.
|
||||
© <%- buildYear %> theta42 ·
|
||||
<a href="https://github.com/theta42/sso-manager-node/blob/master/LICENSE" target="_blank" class="text-light">MIT License</a>
|
||||
</span>
|
||||
<a href="/tos" class="text-light text-decoration-none">Terms of Service</a>
|
||||
<span >v<%- buildVersion %> (<%- buildHash %>)</span>
|
||||
<span class="d-flex align-items-center gap-3">
|
||||
<a href="https://github.com/theta42/sso-manager-node" target="_blank" class="text-light text-decoration-none">
|
||||
<i class="fa-brands fa-github"></i> GitHub
|
||||
</a>
|
||||
<a href="/tos" class="text-light text-decoration-none">Terms of Service</a>
|
||||
</span>
|
||||
<span>v<%- buildVersion %> (<%- buildHash %>)</span>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
@@ -86,11 +86,6 @@
|
||||
Admin
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://github.com/theta42/sso-manager-node" target="_blank">
|
||||
<i class="fa-brands fa-github"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="form-inline mt-2 mt-md-0">
|
||||
<a id="cl-login-button" class="btn btn-outline-danger my-2 my-sm-0" onclick="app.auth.forceLogin()" style="display: none;">
|
||||
|
||||
Reference in New Issue
Block a user