Skip to content

Commit d3a1973

Browse files
- Reldens - v4.0.0-beta.37 - Missing updates
- Merge pull request #255 from damian-pastorini/v4.0.0-beta.37
2 parents 88e0e35 + 1747cfd commit d3a1973

File tree

5 files changed

+52
-11
lines changed

5 files changed

+52
-11
lines changed

install/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ <h3 class="form-title">- App -</h3>
4343
</div>
4444
<div class="input-box app-admin-secret">
4545
<label for="app-admin-secret">Admin Panel Secret Key</label>
46-
<input type="text" name="app-admin-secret" id="app-admin-secret" value="{{app-admin-secret}}"/>
46+
<input type="text" name="app-admin-secret" id="app-admin-secret" value="{{app-admin-secret}}" class="required" required/>
4747
</div>
4848
<div class="input-box app-secure-admin">
4949
<label for="app-secure-admin">Secure Admin (login with normal app users)</label>

lib/admin/server/admin-manager-config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class AdminManagerConfig extends PropertiesHandler
1818
this.dataServer = serverManager?.dataServer;
1919
this.dataServerConfig = serverManager?.dataServerConfig;
2020
this.gameServer = serverManager?.gameServer;
21+
this.installer = serverManager?.installer;
2122
this.loginManager = serverManager?.loginManager;
2223
this.app = serverManager?.app;
2324
this.applicationFramework = serverManager?.appServerFactory?.applicationFramework;

lib/admin/server/admin-manager.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class AdminManager
2727
session = null;
2828
broadcastCallback = null;
2929
gameServer = null;
30+
installer = null;
3031
config = null;
3132
themeManager = null;
3233
secret = '';
@@ -65,6 +66,10 @@ class AdminManager
6566

6667
async setupAdmin()
6768
{
69+
if(!this.installer.isInstalled()){
70+
Logger.info('Reldens is not installed, administration panel will not be available.');
71+
return;
72+
}
6873
this.secret = (process.env.RELDENS_ADMIN_SECRET || '').toString();
6974
this.useSecureLogin = Boolean(Number(process.env.RELDENS_ADMIN_SECURE_LOGIN || 0) || false);
7075
this.rootPath = process.env.RELDENS_ADMIN_ROUTE_PATH || '/reldens-admin';
@@ -354,9 +359,9 @@ class AdminManager
354359
return driverResource.options.uploadProperties;
355360
}
356361

357-
render(content, params)
362+
async render(content, params)
358363
{
359-
return this.themeManager.templateEngine.render(content, params);
364+
return await this.themeManager.templateEngine.render(content, params);
360365
}
361366

362367
async renderRoute(pageContent, sideBar)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"name": "reldens-new-project",
3+
"version": "0.1.0",
4+
"description": "Reldens - New Project",
5+
"main": "index.js",
6+
"scripts": {
7+
"start": "node ."
8+
},
9+
"engines": {
10+
"node": ">=18.0.0",
11+
"npm": ">=8.0.0"
12+
},
13+
"browserslist": [
14+
"> 0.5%, last 2 versions, not dead"
15+
],
16+
"targets": {
17+
"main": false
18+
},
19+
"alias": {
20+
"process": false
21+
},
22+
"dependencies": {
23+
"reldens": "^4.0.0-beta.37"
24+
},
25+
"devDependencies": {
26+
"@reldens/utils": "^0.32.0",
27+
"@colyseus/loadtest": "^0.15.3"
28+
}
29+
}

lib/game/server/installer.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class Installer
4242
if(fs.existsSync(this.themeManager.installerPathIndex)){
4343
await fs.rmSync(this.themeManager.installerPathIndex, {recursive: true});
4444
}
45-
Logger.info('Re-building installer.');
45+
Logger.info('Building installer...');
4646
await this.themeManager.buildInstaller();
4747
app.use(bodyParser.urlencoded({extended: true}));
4848
app.use(express.static(
@@ -58,8 +58,8 @@ class Installer
5858
// Include "secure: true" for that case (that only works through SSL):
5959
// app.use(session({secret: this.secretKey, resave: true, saveUninitialized: true, cookie: {secure: true}}));
6060
app.use(session({secret: this.secretKey, resave: true, saveUninitialized: true}));
61-
app.use((req, res, next) => {
62-
return this.executeForEveryRequest(next, req, res);
61+
app.use(async (req, res, next) => {
62+
return await this.executeForEveryRequest(next, req, res);
6363
});
6464
app.post('/install', async (req, res) => {
6565
return await this.executeInstallProcess(req, res);
@@ -68,6 +68,9 @@ class Installer
6868

6969
async executeInstallProcess(req, res)
7070
{
71+
if(this.isInstalled()){
72+
return res.redirect('/?redirect=already-installed');
73+
}
7174
let templateVariables = req.body;
7275
this.setCheckboxesMissingValues(templateVariables);
7376
this.setSelectedOptions(templateVariables);
@@ -117,18 +120,21 @@ class Installer
117120
if('' === templateVariables['app-admin-path']){
118121
templateVariables['app-admin-path'] = '/reldens-admin';
119122
}
123+
if('' === templateVariables['app-admin-secret']){
124+
return res.redirect('/?error=db-installation-process-failed-missing-admin-secret');
125+
}
120126
try {
121127
let envDistTemplate = fs.readFileSync(
122128
this.themeManager.reldensModulePathInstallTemplateEnvDist,
123129
{encoding: this.encoding()}
124130
);
125-
let envFileContent = TemplateEngine.render(envDistTemplate, templateVariables);
131+
let envFileContent = await TemplateEngine.render(envDistTemplate, templateVariables);
126132
fs.writeFileSync(path.join(this.themeManager.projectRoot, '.env'), envFileContent);
127133
let knexDistTemplate = fs.readFileSync(
128134
this.themeManager.reldensModulePathInstallTemplateKnexDist,
129135
{encoding: this.encoding()}
130136
);
131-
let knexFileContent = TemplateEngine.render(knexDistTemplate, templateVariables);
137+
let knexFileContent = await TemplateEngine.render(knexDistTemplate, templateVariables);
132138
fs.writeFileSync(path.join(this.themeManager.projectRoot, 'knexfile.js'), knexFileContent);
133139
fs.writeFileSync(path.join(this.themeManager.projectRoot, 'install.lock'), '');
134140
Logger.info('Installation success!');
@@ -143,18 +149,18 @@ class Installer
143149
}
144150
}
145151

146-
executeForEveryRequest(next, req, res)
152+
async executeForEveryRequest(next, req, res)
147153
{
148154
if(this.isInstalled()){
149-
return res.sendFile(this.themeManager.installerPathIndex);
155+
return next();
150156
}
151157
if('' === req._parsedUrl.pathname || '/' === req._parsedUrl.pathname){
152158
let installerIndexTemplate = fs.readFileSync(
153159
this.themeManager.installerPathIndex,
154160
{encoding: this.encoding()}
155161
);
156162
let templateVariables = req?.session?.templateVariables || this.fetchDefaults();
157-
return res.send(TemplateEngine.render(installerIndexTemplate, templateVariables));
163+
return res.send(await TemplateEngine.render(installerIndexTemplate, templateVariables));
158164
}
159165
if(!req.url.endsWith('.html')){
160166
return express.static(this.themeManager.installerPath)(req, res, next);

0 commit comments

Comments
 (0)