Skip to content

Commit b919d5d

Browse files
authored
Merge pull request #51 from VMihalov/feature/adminjs
Add adminjs
2 parents 425e99a + c6d4e43 commit b919d5d

File tree

65 files changed

+1136
-42
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+1136
-42
lines changed

README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,37 @@ use Exclude decorator to exclude properties from serialization
7878

7979
- Nodemailer
8080

81+
### AdminJS
82+
83+
AdminJS is available to use if you select Mongo + JWT/Passport, on the route:
84+
85+
```bash
86+
http://localhost:3000/admin
87+
```
88+
89+
If you are not logged in, you will be redirected to the admin login page.
90+
91+
```bash
92+
http://localhost:3000/admin/login
93+
```
94+
95+
To login in the admin panel, you have to have registered verified user with admin role.
96+
97+
To create a default admin user you can run migrations:
98+
99+
```bash
100+
mingrate-mongo up
101+
```
102+
103+
The migrations will create a default admin user in db with creds:
104+
105+
```bash
106+
login: admin@test.com
107+
password: String_12345
108+
```
109+
110+
![Alt Text2](https://media.giphy.com/media/HdWGgOGfQa0QRLNXME/giphy.gif)
111+
81112
## Requirements
82113

83114
- node >= 14
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* Exports object that contains names of arguments as a key and their configuration objects as a value
3+
*
4+
* @example
5+
* module.exports = {
6+
* argumentName: {
7+
* desc: 'Description for the argument',
8+
* required: false,
9+
* optional: true,
10+
* type: String || Number || Array || Object,
11+
* defaults: 'Default value for this argument',
12+
* banner: 'String to show on usage notes'
13+
* }
14+
* };
15+
*/
16+
17+
module.exports = {};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"general": {
3+
"@adminjs/express": "4.1.3",
4+
"@adminjs/mongoose": "2.0.4",
5+
"@adminjs/nestjs": "4.0.1",
6+
"@adminjs/passwords": "2.0.2",
7+
"adminjs": "5.10.4"
8+
},
9+
"dev": {}
10+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const dependenciesObj = require('./dependencies.json');
2+
3+
function getStableDep(dependenciesObj, versions) {
4+
const depArray = Object.entries(dependenciesObj[versions]).map(entriesArr => {
5+
return entriesArr.join('@');
6+
});
7+
8+
return depArray.join(' ');
9+
}
10+
11+
module.exports = function() {
12+
return Object.keys(dependenciesObj).reduce((acc, versions) => {
13+
acc[versions] = getStableDep(dependenciesObj, versions);
14+
15+
return acc;
16+
}, {});
17+
};

generators/admin/index.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
const Generator = require('yeoman-generator');
2+
3+
const generatorArguments = require('./arguments');
4+
const generatorOptions = require('./options');
5+
const generatorSteps = require('./steps');
6+
7+
module.exports = class AdminGenerator extends Generator {
8+
constructor(args, options) {
9+
super(args, options);
10+
11+
Object.keys(generatorArguments).forEach(key => {
12+
return this.argument(key, generatorArguments[key]);
13+
});
14+
Object.keys(generatorOptions).forEach(key => {
15+
return this.option(key, generatorOptions[key]);
16+
});
17+
}
18+
19+
get configuring() {
20+
return generatorSteps.configuring;
21+
}
22+
23+
get conflicts() {
24+
return generatorSteps.conflicts;
25+
}
26+
27+
get end() {
28+
return generatorSteps.end;
29+
}
30+
31+
get initializing() {
32+
return generatorSteps.init;
33+
}
34+
35+
get install() {
36+
return generatorSteps.install;
37+
}
38+
39+
get prompting() {
40+
return generatorSteps.prompting;
41+
}
42+
43+
get writing() {
44+
return generatorSteps.writing;
45+
}
46+
};

generators/admin/options/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = {};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = {};
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/**
2+
* Step 3
3+
* Saving configurations and configure the project
4+
*/
5+
6+
module.exports = function() {};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/**
2+
* Step 6
3+
* Where conflicts are handled (used internally)
4+
*/
5+
6+
module.exports = function() {
7+
this.conflicter.force = true
8+
};

generators/admin/steps/end.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/**
2+
* Step 8
3+
* Called last, cleanup, say good bye, etc
4+
*/
5+
6+
module.exports = function() {};

0 commit comments

Comments
 (0)