Skip to content

Commit 04c4117

Browse files
committed
Merge pull request #1863 from wheels-dev/fix/fixes-for-wheels-started-app
Fix/fixes for wheels started app
1 parent 0ac4a4d commit 04c4117

File tree

10 files changed

+140
-101
lines changed

10 files changed

+140
-101
lines changed

core/src/wheels/events/onapplicationstart.cfc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,8 @@ component {
283283
application.$wheels.imagePath = "images";
284284
application.$wheels.javascriptPath = "javascripts";
285285
application.$wheels.modelPath = "/app/models";
286-
application.$wheels.pluginPath = "/plugins";
287-
application.$wheels.pluginComponentPath = "/plugins";
286+
application.$wheels.pluginPath = "plugins";
287+
application.$wheels.pluginComponentPath = "plugins";
288288
application.$wheels.stylesheetPath = "stylesheets";
289289
application.$wheels.viewPath = "/app/views";
290290
application.$wheels.controllerPath = "/app/controllers";

examples/starter-app/README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ app/
9999
│ ├── PasswordResets.cfc # Password management
100100
│ ├── Accounts.cfc # User account management
101101
│ └── admin/ # Admin controllers
102+
│ └── functions/ # helper functions
102103
├── models/ # Data models
103104
│ ├── User.cfc # User model with authentication
104105
│ ├── Role.cfc # Role model
@@ -107,7 +108,7 @@ app/
107108
|── global/ # application-wide globally accessible functions
108109
├── views/ # Presentation layer
109110
├── mailers/ # Email templates
110-
└── plugins/ # Third-party plugins
111+
plugins/ # Third-party plugins
111112
```
112113

113114
### Key Design Principles
@@ -122,8 +123,8 @@ app/
122123
### Backend
123124

124125
- **3.0.0-snapshot** - MVC Framework
125-
- **Lucee 5, Lucee 6** - CFML Engine
126-
- **Database** - MySQL, PostgreSQL, Microsoft SQL Server, Oracle, H2
126+
- **Lucee 5,6,7, Adobe 2018-2025, Boxlang** - CFML Engine
127+
- **Database** - MySQL, PostgreSQL, Microsoft SQL Server, Oracle, SQLite, H2
127128
- **WireBox** - Dependency injection
128129
- **TestBox** - Testing framework
129130

@@ -144,13 +145,15 @@ app/
144145

145146
- **CommandBox** - Latest version
146147
- **CFML Engine**: Choose one of the following:
147-
- Adobe ColdFusion 2018/2021/2023
148+
- Adobe ColdFusion 2018/2021/2023/2025
148149
- Lucee 5, Lucee 6, Lucee 7
150+
- Boxlang
149151
- **Database Engine**: Choose one of the following:
150152
- MySQL
151153
- PostgreSQL
152154
- Microsoft SQL Server
153155
- Oracle Database
156+
- SQLite Database
154157
- H2 Database (for development/testing)
155158

156159
### Environment Configuration

examples/starter-app/app/global/functions.cfm

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,8 @@
22
//=====================================================================
33
//= Global Functions
44
//=====================================================================
5-
if (StructKeyExists(server, "lucee")) {
6-
include "install.cfm";
7-
include "auth.cfm";
8-
include "logging.cfm";
9-
include "utils.cfm";
10-
} else {
11-
// TODO: Check this doesn't break when in a subdir?
12-
include "/global/install.cfm";
13-
include "/global/auth.cfm";
14-
include "/global/logging.cfm";
15-
include "/global/utils.cfm";
16-
}
5+
include "install.cfm";
6+
include "auth.cfm";
7+
include "logging.cfm";
8+
include "utils.cfm";
179
</cfscript>

examples/starter-app/app/migrator/migrations/20180519105946_Adds_Default_Permissions.cfc

Lines changed: 108 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -28,77 +28,114 @@ component extends="wheels.migrator.Migration" hint="Adds Default Permissions" {
2828

2929
try {
3030
c=0;
31-
addRecord(table='permissions', id=++c, name='admin', description='Global Administrative Access');
32-
addRecord(table='rolepermissions', roleid=1, permissionid=c)
33-
34-
addRecord(table='permissions', id=++c, name='admin.auditlogs', description='Allow Global Administrative Access to Logs');
35-
addRecord(table='permissions', id=++c, name='admin.auditlogs.index', description='View Logs');
36-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
37-
38-
addRecord(table='permissions', id=++c, name='admin.auditlogs.show', description='Show Log Extended Data')
39-
addRecord(table='permissions', id=++c, name='admin.permissions', description='Allow Global Administrative Access to Permissions');
40-
addRecord(table='permissions', id=++c, name='admin.permissions.index', description='List Permissions');
41-
addRecord(table='permissions', id=++c, name='admin.permissions.edit', description='Edit Permission');
42-
addRecord(table='permissions', id=++c, name='admin.permissions.update', description='Update Permission')
43-
addRecord(table='permissions', id=++c, name='admin.settings', description='Allow Global Administrative Access to Settings');
44-
addRecord(table='permissions', id=++c, name='admin.settings.index', description='List Settings');
45-
addRecord(table='permissions', id=++c, name='admin.settings.edit', description='Edit Setting');
46-
addRecord(table='permissions', id=++c, name='admin.settings.update', description='Update Setting')
47-
addRecord(table='permissions', id=++c, name='admin.users', description='Allow Global Administrative Access to Users');
48-
49-
addRecord(table='permissions', id=++c, name='admin.users.index', description='List Users');
50-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
51-
52-
addRecord(table='permissions', id=++c, name='admin.users.new', description='New User');
53-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
54-
55-
addRecord(table='permissions', id=++c, name='admin.users.create', description='Create User');
56-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
57-
58-
addRecord(table='permissions', id=++c, name='admin.users.edit', description='Edit User');
59-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
60-
61-
addRecord(table='permissions', id=++c, name='admin.users.update', description='Update User');
62-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
63-
64-
addRecord(table='permissions', id=++c, name='admin.users.delete', description='Delete User');
65-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
66-
67-
addRecord(table='permissions', id=++c, name='admin.users.reset', description='Reset Users Password');
68-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
69-
70-
addRecord(table='permissions', id=++c, name='admin.users.recover', description='Recover User');
71-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
72-
73-
addRecord(table='permissions', id=++c, name='admin.users.show', description='View User');
74-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
75-
76-
addRecord(table='permissions', id=++c, name='admin.users.assume', description='Assume Users (Grant only to Admins)');
77-
addRecord(table='permissions', id=++c, name='admin.users.destroy', description='Destroy Users (Grant only to Admins)');
78-
addRecord(table='permissions', id=++c, name='admin.roles', description='Allow Global Administrative Access to Roles');
79-
addRecord(table='permissions', id=++c, name='admin.roles.index', description='List Roles');
80-
addRecord(table='permissions', id=++c, name='admin.roles.new', description='New Role');
81-
addRecord(table='permissions', id=++c, name='admin.roles.create', description='Create Role');
82-
addRecord(table='permissions', id=++c, name='admin.roles.edit', description='Edit Role');
83-
addRecord(table='permissions', id=++c, name='admin.roles.update', description='Update Role');
84-
addRecord(table='permissions', id=++c, name='admin.roles.delete', description='Delete Role');
85-
86-
addRecord(table='permissions', id=++c, name='accounts', description='Allow Global Access to Own Profile');
87-
addRecord(table='rolepermissions', roleid=1, permissionid=c);
88-
addRecord(table='rolepermissions', roleid=2, permissionid=c);
89-
addRecord(table='rolepermissions', roleid=3, permissionid=c);
90-
91-
addRecord(table='permissions', id=++c, name='accounts.show', description='View My Account');
92-
addRecord(table='permissions', id=++c, name='accounts.edit', description='Edit Own Account');
93-
addRecord(table='permissions', id=++c, name='accounts.update', description='Update Own Account');
94-
95-
/*
96-
Named Permissions : arbitary permissions
97-
*/
98-
addRecord(table='permissions', id=++c, name='canViewAdminNotes', type="named", description='Allow user to view admin notes');
99-
100-
addRecord(table='permissions', id=++c, name='canViewLogData', type="named", description='Allow user to view extended log data');
101-
addRecord(table='rolepermissions', roleid=1, permissionid=c);
31+
c++
32+
addRecord(table='permissions', id=c, name='admin', description='Global Administrative Access');
33+
addRecord(table='rolepermissions', roleid=1, permissionid=c)
34+
35+
c++
36+
addRecord(table='permissions', id=c, name='admin.auditlogs', description='Allow Global Administrative Access to Logs');
37+
c++
38+
addRecord(table='permissions', id=c, name='admin.auditlogs.index', description='View Logs');
39+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
40+
41+
c++
42+
addRecord(table='permissions', id=c, name='admin.auditlogs.show', description='Show Log Extended Data')
43+
c++
44+
addRecord(table='permissions', id=c, name='admin.permissions', description='Allow Global Administrative Access to Permissions');
45+
c++
46+
addRecord(table='permissions', id=c, name='admin.permissions.index', description='List Permissions');
47+
c++
48+
addRecord(table='permissions', id=c, name='admin.permissions.edit', description='Edit Permission');
49+
c++
50+
addRecord(table='permissions', id=c, name='admin.permissions.update', description='Update Permission')
51+
c++
52+
addRecord(table='permissions', id=c, name='admin.settings', description='Allow Global Administrative Access to Settings');
53+
c++
54+
addRecord(table='permissions', id=c, name='admin.settings.index', description='List Settings');
55+
c++
56+
addRecord(table='permissions', id=c, name='admin.settings.edit', description='Edit Setting');
57+
c++
58+
addRecord(table='permissions', id=c, name='admin.settings.update', description='Update Setting')
59+
c++
60+
addRecord(table='permissions', id=c, name='admin.users', description='Allow Global Administrative Access to Users');
61+
62+
c++
63+
addRecord(table='permissions', id=c, name='admin.users.index', description='List Users');
64+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
65+
66+
c++
67+
addRecord(table='permissions', id=c, name='admin.users.new', description='New User');
68+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
69+
70+
c++
71+
addRecord(table='permissions', id=c, name='admin.users.create', description='Create User');
72+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
73+
74+
c++
75+
addRecord(table='permissions', id=c, name='admin.users.edit', description='Edit User');
76+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
77+
78+
c++
79+
addRecord(table='permissions', id=c, name='admin.users.update', description='Update User');
80+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
81+
82+
c++
83+
addRecord(table='permissions', id=c, name='admin.users.delete', description='Delete User');
84+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
85+
86+
c++
87+
addRecord(table='permissions', id=c, name='admin.users.reset', description='Reset Users Password');
88+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
89+
90+
c++
91+
addRecord(table='permissions', id=c, name='admin.users.recover', description='Recover User');
92+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
93+
94+
c++
95+
addRecord(table='permissions', id=c, name='admin.users.show', description='View User');
96+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
97+
98+
c++
99+
addRecord(table='permissions', id=c, name='admin.users.assume', description='Assume Users (Grant only to Admins)');
100+
c++
101+
addRecord(table='permissions', id=c, name='admin.users.destroy', description='Destroy Users (Grant only to Admins)');
102+
c++
103+
addRecord(table='permissions', id=c, name='admin.roles', description='Allow Global Administrative Access to Roles');
104+
c++
105+
addRecord(table='permissions', id=c, name='admin.roles.index', description='List Roles');
106+
c++
107+
addRecord(table='permissions', id=c, name='admin.roles.new', description='New Role');
108+
c++
109+
addRecord(table='permissions', id=c, name='admin.roles.create', description='Create Role');
110+
c++
111+
addRecord(table='permissions', id=c, name='admin.roles.edit', description='Edit Role');
112+
c++
113+
addRecord(table='permissions', id=c, name='admin.roles.update', description='Update Role');
114+
c++
115+
addRecord(table='permissions', id=c, name='admin.roles.delete', description='Delete Role');
116+
117+
c++
118+
addRecord(table='permissions', id=c, name='accounts', description='Allow Global Access to Own Profile');
119+
addRecord(table='rolepermissions', roleid=1, permissionid=c);
120+
addRecord(table='rolepermissions', roleid=2, permissionid=c);
121+
addRecord(table='rolepermissions', roleid=3, permissionid=c);
122+
123+
c++
124+
addRecord(table='permissions', id=c, name='accounts.show', description='View My Account');
125+
c++
126+
addRecord(table='permissions', id=c, name='accounts.edit', description='Edit Own Account');
127+
c++
128+
addRecord(table='permissions', id=c, name='accounts.update', description='Update Own Account');
129+
130+
/*
131+
Named Permissions : arbitary permissions
132+
*/
133+
c++
134+
addRecord(table='permissions', id=c, name='canViewAdminNotes', type="named", description='Allow user to view admin notes');
135+
136+
c++
137+
addRecord(table='permissions', id=c, name='canViewLogData', type="named", description='Allow user to view extended log data');
138+
addRecord(table='rolepermissions', roleid=1, permissionid=c);
102139

103140
} catch (any e) {
104141
local.exception = e;

examples/starter-app/app/models/Model.cfc

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,14 @@ component extends="wheels.Model" {
3838
* Simple sanitization: this could probably be improved somewhat.
3939
**/
4040
private function sanitizeInput(string){
41-
local.rv = REReplaceNoCase(arguments.string, "<\ *[a-z].*?>", "", "all");
42-
local.rv = REReplaceNoCase(local.rv, "<\ */\ *[a-z].*?>", "", "all");
43-
local.rv = trim(htmleditFormat(local.rv));
41+
local.rv = reReplaceNoCase(arguments.string, "<[^>]*>", "", "all");
42+
local.rv = trim(local.rv);
43+
44+
local.rv = replace(local.rv, "&", "&amp;", "all");
45+
local.rv = replace(local.rv, "<", "&lt;", "all");
46+
local.rv = replace(local.rv, ">", "&gt;", "all");
47+
local.rv = replace(local.rv, '"', "&quot;", "all");
48+
4449
return local.rv;
4550
}
4651

examples/starter-app/app/models/User.cfc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ component extends="Model" {
115115
return Replace(LCase(CreateUUID()), "-", "", "all");
116116
}
117117

118-
function getUsers(required array where, required bool includeSoftDeletes, required number page, required number perpage) {
118+
function getUsers(required array where, required boolean includeSoftDeletes, required numeric page, required numeric perpage) {
119119
return findAll(where=whereify(arguments.where), page=arguments.page, includeSoftDeletes=arguments.includeSoftDeletes, perpage=arguments.perpage, include="role");
120120
}
121121

examples/starter-app/box.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@
3131
"dependencies": {
3232
"wirebox": "^7.0.0",
3333
"testbox": "^6.0.0",
34-
"wheels-core": "^3.0.0"
34+
"wheels-core": "^3.0.0",
35+
"cfwheels-authenticateThis":"^1"
3536
},
3637
"installPaths": {
3738
"wirebox": "vendor/wirebox/",
3839
"testbox": "vendor/testbox/",
39-
"wheels-core": "vendor/wheels/"
40+
"wheels-core": "vendor/wheels/",
41+
"cfwheels-authenticateThis":"plugins/authenticateThis/"
4042
},
4143
"private":false,
4244
"license":[

examples/starter-app/public/Application.cfc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ component output="false" {
1616
this.wheelsDir = this.vendorDir & "wheels/";
1717
this.wireboxDir = this.vendorDir & "wirebox/";
1818
this.testboxDir = this.vendorDir & "testbox/";
19-
2019
// Set up the mappings for the application.
2120
this.mappings["/app"] = this.appDir;
2221
this.mappings["/vendor"] = this.vendorDir;
@@ -25,12 +24,13 @@ component output="false" {
2524
this.mappings["/testbox"] = this.testboxDir;
2625
this.mappings["/tests"] = expandPath("../tests");
2726
this.mappings["/config"] = expandPath("../config");
27+
this.mappings["/plugins"] = expandPath("../plugins");
2828

2929
// We turn on "sessionManagement" by default since the Flash uses it.
3030
this.sessionManagement = true;
3131

3232
// If a plugin has a jar or class file, automatically add the mapping to this.javasettings.
33-
this.wheels.pluginDir = this.appDir & "plugins";
33+
this.wheels.pluginDir = this.appDir & "../plugins";
3434
this.wheels.pluginFolders = DirectoryList(
3535
this.wheels.pluginDir,
3636
"true",
@@ -259,7 +259,7 @@ component output="false" {
259259
&& StructKeyExists(application.wo, "$restoreTestRunnerApplicationScope")
260260
) {
261261
application.wo.$restoreTestRunnerApplicationScope();
262-
application.wo.$include(template = "#application.wheels.eventPath#/onabort.cfm");
262+
application.wo.$include(template = "../../#application.wheels.eventPath#/onabort.cfm");
263263
}
264264
return true;
265265
}
@@ -312,7 +312,7 @@ component output="false" {
312312
location(url = local.redirectUrl, addToken = false);
313313
}
314314

315-
private string function $buildRedirectUrl() {
315+
public string function $buildRedirectUrl() {
316316
// Determine the base URL
317317
if (StructKeyExists(cgi, "path_info") && Len(cgi.path_info)) {
318318
local.url = cgi.path_info;

examples/tweet/public/Application.cfc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ component output="false" {
259259
&& StructKeyExists(application.wo, "$restoreTestRunnerApplicationScope")
260260
) {
261261
application.wo.$restoreTestRunnerApplicationScope();
262-
application.wo.$include(template = "#application.wheels.eventPath#/onabort.cfm");
262+
application.wo.$include(template = "../../#application.wheels.eventPath#/onabort.cfm");
263263
}
264264
return true;
265265
}

tools/docker/boxlang/box.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "wheels-test-suite-boxlang",
33
"version": "1.0.0",
44
"dependencies": {
5-
"wirebox": "^8.0.0",
5+
"wirebox": "^7.0.0",
66
"testbox": "^6.0.0",
77
"bx-compat-cfml":"^1.27.0+35",
88
"bx-csrf":"^1.2.0+3",

0 commit comments

Comments
 (0)