Skip to content

Commit c60f214

Browse files
committed
Initialize custom user role aliases and access levels
1 parent a8a1362 commit c60f214

4 files changed

Lines changed: 71 additions & 13 deletions

File tree

README.md

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,19 @@ commtrackr.init({ // Initialize CommTracker with configurations
5757
},
5858
vars: {
5959
userId: 'username', // req.session object variable for unique user identification
60-
userName: 'name', // req.session object variable for user name
60+
userName: 'Name', // req.session object variable for user name
6161
role: 'role', // req.session object variable for user role
62+
roleAliases: { // Use if your role names differ from 'admin', 'dev', or 'user'
63+
user: ['user', 'standard', 'basic'], // Aliases for user roles
64+
dev: ['dev', 'developer'], // Aliases for developer roles
65+
admin: ['admin', 'administrator', 'superuser'] // Aliases for admin roles
66+
},
67+
access: { // Alternative access control using numeric levels
68+
var: 'access', // req.session object variable for access level
69+
user: [0], // Access levels for standard users
70+
dev: [1], // Access levels for developers
71+
admin: [2] // Access levels for admins
72+
},
6273
commissions: 'commissions', // req.session object variable for user commissions array
6374
},
6475
});
@@ -78,37 +89,69 @@ These variables must be set in your `req.session` object to enable CommTrackr fu
7889

7990
Type: `String`
8091

92+
Default: `'username'`
93+
8194
Fallback: None
8295

83-
Example: `'username'`
96+
Session Example: `'id'`
8497

8598
### userName
8699

87100
`req.session.userName` should contain the name of the user. This is used for display purposes in the CommTrackr interface. Fallback to `userId` if not set.
88101

89102
Type: `String`
90103

104+
Default: `'name'`
105+
91106
Fallback: `req.session.userId`
92107

93-
Example: `'John Doe'`
108+
Session Example: `'John Doe'`
94109

95110
### role
96111

97112
`req.session.role` should contain the role of the user: 'admin', `dev`, or 'user'. This is used to control access to certain features and functionalities within CommTrackr.
98113

99114
Type: `String`
100115

116+
Default: `'role'`
117+
101118
Fallback: `user`
102119

103-
Example: `'user'`, `'dev'`, `'admin'`
120+
Session Example: `'user'`, `'dev'`, `'admin'`
121+
122+
### roleAliases
123+
124+
`req.session.role` can also be set to custom role names. Use `roleAliases` to map your custom role names to the standard roles used by CommTrackr.
125+
126+
Type: `Object`
127+
128+
Default:
129+
130+
```javascript
131+
{}
132+
```
133+
134+
### access
135+
136+
`req.session.access` can be used as an alternative to `role` for access control. It should contain numeric access levels. Use the `access` configuration to define which levels correspond to 'user', 'dev', and 'admin'.
137+
138+
Type: `Array`
139+
140+
Default:
141+
142+
```javascript
143+
{}
144+
```
104145

105146
### commissions
106147

107148
`req.session.commissions` should be an array of commission objects associated with the user. Each commission object should have the following structure:
108149

109150
Type: `Array`
110151

111-
Example:
152+
Default: `'commissions'`
153+
154+
Session Example:
112155

113156
```javascript
114157
[

frontend/public/scripts.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function anim_out() {
1616
document.querySelector('main').classList.add('out');
1717
};
1818

19-
anim_in();
19+
document.onload = anim_in();
2020

2121
// anim_out();
2222
// setTimeout(() => {

frontend/public/styles.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ main {
112112
max-width: 1000px;
113113
height: 100%;
114114
position: relative;
115-
transition-timing-function: linear;
115+
transition-timing-function: ease-in-out;
116116
opacity: 0;
117117

118118
> img {

index.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,25 @@ function init({
3939
auth: {
4040
enabled: false,
4141
provider: '',
42-
url: '',
43-
},
42+
url: ''
43+
}
4444
},
4545
vars: newVars = {
4646
userId: 'username',
47+
userName: 'name',
4748
role: 'role',
48-
commissions: 'commissions',
49+
roleAliases: {
50+
user: ['user', 'standard', 'basic'],
51+
dev: ['dev', 'developer'],
52+
admin: ['admin', 'administrator', 'superuser']
53+
},
54+
access: {
55+
var: 'access',
56+
user: [0],
57+
dev: [2],
58+
admin: [4, 5]
59+
},
60+
commissions: 'commissions'
4961
},
5062
handler: newHandler = null
5163
}) {
@@ -67,7 +79,10 @@ function init({
6779
};
6880
vars = {
6981
userId: 'username',
82+
userName: 'name',
7083
role: 'role',
84+
roleAliases: {},
85+
access: {},
7186
commissions: 'commissions',
7287
...newVars
7388
},
@@ -89,14 +104,14 @@ app.get('/', async (req, res) => {
89104
if (!on) return res.render('off', { tenant, title: 'Activation - ' });
90105
if (!req.session) return res.render('session', { tenant, title: 'Session - ' });
91106
if (!tenant.slug || !tenant.name || !tenant.domain) return res.render('tenant', { tenant, title: 'Configuration - ' });
92-
if (tenant.auth && tenant.auth.enabled && !user.id) return res.render('auth', { tenant, title: 'Authenticate - ' });
93-
res.send(tenant.slug);
107+
if (tenant.auth && tenant.auth.enabled && vars.userId && !req.session[vars.userId]) return res.render('auth', { tenant, title: 'Authenticate - ' });
108+
res.send(`Hello ${req.session[vars.name] || req.session[vars.userId]}`);
94109
});
95110

96111
module.exports = {
97112
routes: app,
98113
init,
99114
activate,
100115
on: activate,
101-
setUser
116+
// setUser
102117
};

0 commit comments

Comments
 (0)